Kolay gelsin;
Bir 555 entegresine bir MCU bağlayıp gerekli pinleri sadece sadece hıgh-low yaparak
1-1-150Hz arası frekansı ayarlanabilir 5V genişlikte pwm üretmek,
2-Ürettiğim bu pwm in %10 ile %90 arası genliğini ayarlamak,
3-Pwm in Çıkış süresini de belli periyotlarda yapmak istiyorum.
555 ile bu şekilde çalışan oldu mu?
Bu yapılabilir mi? Yolu nedir?
Mcu kullanılıyorsa ayrıca 555 kullanmanın avantajı/gereği nedir ?
Alıntı yapılan: Kılıç - 02 Eylül 2022, 14:15:49Mcu kullanılıyorsa ayrıca 555 kullanmanın avantajı/gereği nedir ?
Yazılım ile gerekli pwm üretememek.
555 kullanabilmek için zaten yazılım yapılacak. Aynı çabayı pwm için harcayabilirsiniz. En basit mcu bile yapar.
Pwm ile konuşma sesi dahi üretebilirsiniz. (Tablodan okuyoruz)
Alıntı yapılan: Kılıç - 02 Eylül 2022, 14:34:10555 kullanabilmek için zaten yazılım yapılacak. Aynı çabayı pwm için harcayabilirsiniz. En basit mcu bile yapar.
Pwm ile konuşma sesi dahi üretebilirsiniz. (Tablodan okuyoruz)
Biraz anlatır mısın nasıl yapıldığını? Tablodan okuma ile. Örneğin Arduino dilinde.
https://docs.arduino.cc/learn/microcontrollers/analog-output
Burada analogwrite içine yazılan değer pwm oranı. Onu tablodan okuyoruz. (Arduino tablodan okuma olarak arayabilirsiniz)
Tabloda 120,134,233,.... Gibi baytlar bulunuyor (konuşma sesi için)
size komple özel bir kayıt gerekli olmadığı için az elemanlı basit bir tablo yetecektir. Belki tabloya ihtiyaç kalmaz. Öncelikle sabit %50 pwm veren kodu yazalım. Skopla bakalım . Sonra kesintili olacak şekilde kodu değiştirelim. 1sn on 1sn off? Özel pattern gerekmiyor ise tablo ihtiyaç değil.
Alıntı yapılan: Kılıç - 02 Eylül 2022, 14:57:11https://docs.arduino.cc/learn/microcontrollers/analog-output
Burada analogwrite içine yazılan değer pwm oranı. Onu tablodan okuyoruz. (Arduino tablodan okuma olarak arayabilirsiniz)
Tabloda 120,134,233,.... Gibi baytlar bulunuyor (konuşma sesi için)
size komple özel bir kayıt gerekli olmadığı için az elemanlı basit bir tablo yetecektir. Belki tabloya ihtiyaç kalmaz. Öncelikle sabit %50 pwm veren kodu yazalım. Skopla bakalım . Sonra kesintili olacak şekilde kodu değiştirelim. 1sn on 1sn off? Özel pattern gerekmiyor ise tablo ihtiyaç değil.
Bu yazıda, Frekans ayarı ve çıkışın periyotlar halinde zamanlanmasından bahsedilmiyor. Sadece duty oranı anlatılmış. İstediğime yakın daha geniş bir kaynak öneriniz var mı?
Alıntı yapılan: Mr.Thinking - 02 Eylül 2022, 14:24:56Yazılım ile gerekli pwm üretememek.
Gerekli pwm sinyali üretebilecek bir mcu/dsp kullanabilirsiniz.
Alıntı yapılan: Mr.Thinking - 02 Eylül 2022, 15:05:24Bu yazıda, Frekans ayarı ve çıkışın periyotlar halinde zamanlanmasından bahsedilmiyor. Sadece duty oranı anlatılmış. İstediğime yakın daha geniş bir kaynak öneriniz var mı?
"çıkışın 60ms periyotlar halinde zamanlanması" 30ms OFF, 30ms ON kodu:
while(1) {
digitalWrite(led,LOW); // = analogWrite(led, 0); PWMi sıfırladık çıkış off
delay(30); // 30ms boyunca OFF
analogWrite(led, 128); // pwm %50
delay(30); // 30ms bu esnada pwm %50 olarak hala çalışır. Donanımsal olduğu için
} // periyod: 30+30 =60ms
pwm frekans ayarı:
https://www.electronicwings.com/users/sanketmallawat91/projects/215/frequency-changing-of-pwm-pins-of-arduino-uno
https://www.electronicwings.com/arduino/pwm-in-arduino
int led = 6; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
void setup() {
pinMode(led, OUTPUT); // declare pwm pin to be an output:
}
void loop() {
analogWrite(led, brightness); // set the brightness of led
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30); // wait for 30 milliseconds to see the dimming effect
}
Arduino PWM çıkışı gerçekten donanımsal mıdır?
Galiba öyleymiş:
https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
Sayın
@Kılıç örneklerin hepsi 490-980 Hz sabit frekensla verilmiş. Yine de ilgin için teşekkür ederim. Galiba arduino donanımsal pwm çıkışları modeline göre 490 ve 980Hz olarak sabit frekans ve değiştirilemiyor.
Ben 10-150Hz arası 1 er li artırıp azaltmak ve ayrıca, örneğin; 10 lu ila 150 li periyotluk dilimlerle, her dilim arasında 0 ila 10 sn bekleterek bu sinyali çıkıştan çıkarmak istiyorum. Bilmem anlatabildim mi?
Program B – Changed frequency on Pin
Yazan yere bakabilirsiniz
pinMode(3,155);
TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
Kısaca, TCCR2B registera bir şeyler atayarak frekansı değiştiriyoruz
Alıntı yapılan: Kılıç - 02 Eylül 2022, 17:53:32Anlatabildin ama benim dediğimi anlamamışsın
Program B – Changed frequency on Pin
Yazan yere bakabilirsiniz
pinMode(3,155);
TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
Bu kodu 10Hz ve 150Hz arasında kaç farklı şekilde nasıl tanımlayabilirim? Yani anlatmak istediğim frekansı değiştirmek istediğimde TCCR2B register ine kaç farklı tanımlama yapabilirim?
50 bin şekilde yapabilirsiniz. Hayal gücünüze bağlı. Sabit frekans atamak yerine taramalı yapılabilir
Pwmi çok özel şekilde vererek çıkışta sinüs veya logaritmik dalga oluşturulabilir. Tırtıklı kuyruklu vs :)
Tabloda bu şekillerin pwm datası olur. Hangi şekil gerekliyse okunur örneğin 1000 kere tekrar edilir.
Yetinmeyip bu şekiller de ayrıca grup yapılır. Önce titretip sonra hoplatan mod. Az şiddetli uyutan mod..
Alıntı yapılan: Kılıç - 02 Eylül 2022, 18:06:4550 bin şekilde yapabilirsiniz. Hayal gücünüze bağlı. Sabit frekans atamak yerine taramalı yapılabilir
Pwmi çok özel şekilde vererek çıkışta sinüs veya logaritmik dalga oluşturulabilir. Tırtıklı kuyruklu vs :)
Tabloda bu şekillerin pwm datası olur. Hangi şekil gerekliyse okunur örneğin 1000 kere tekrar edilir.
Yetinmeyip bu şekiller de ayrıca grup yapılır. Önce titretip sonra hoplatan mod. Az şiddetli uyutan mod..
Allah da seni güldürsün.
Şu tablolar hakkında nereden birşeyler öğrenebilirim. En azından onu söyle bari de hayra gir. SPWM den mi bahsediyorsun?
Spwm ile zor olur. Donanımsal pwm önerilir Frekans veya Duty ihtiyaca göre tarama yapılır.
https://dosya.co/7zpnlhm0gvj3/demo.avi.html
https://koddefteri.net/arduino/temel-arduino-dersleri/arduino-diziler.html
const unsigned char ozelseri[] = { 128, 128, 128, 144, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128
yenipwm= ozelseri[3] ; //PWM 144 ayarlanıyor. maks255 min 0
analogWrite(led, yenipwm);
Bu yöntemle skop ekranına şekil çizdirmek kolay olacaktır.
Çizimin altı yok. Sadece üstten çiziyoruz