merhaba
resimdeki gibi bir sinyal oluşturmak istiyorum 100hz kare dalga (5ms High, 5ms LOW) fakat 0Hz'den 100Hz'e 1saniyede hızlanarak çıksın, bu 1saniyelik kısımdaki duty sürelerini nasıl hesaplarız?
(https://s27.postimg.cc/e0jqck1v3/image.jpg) (https://postimg.cc/image/e0jqck1v3/)
Duty değişmeyecek. Sadece frekansı arttıracaksın. Bir periyodun yarısında HIGH yarısında LOW ise duty %50. Hangi işlemcide yapacaksan sadece frekansı attıracaksın.
tam anlatamadım demekki
şimdi 100hz için sinyalin HIGH kısmı 5ms, LOW kısmıda 5ms değil mi?
sinyal 0hz'den başlayacak 1sn sonra 100hz olacak diyelim bu durumda mesela 1. saniyeye kadar 12 kez HIGH 12 kez LOW olacak diyelim (12 rakamını attım buda hesaplanıp bulunması lazım) haliyle şöyle bir durum olması lazım
1.HIGH seviye -> 20ms
2.HIGH seviye -> 18ms
3.HIGH seviye -> 15ms
4.HIGH seviye -> 10ms
5.HIGH seviye -> 7ms
...
gibi
nasıl bir matematik ile hesaplanır bu?
seyityildirim'ın dediği gibi. Duty sabit, %50.
f=100Hz, Ton=Toff=5ms
f=50Hz, Ton=Toff=10ms
f=10Hz, Ton=Toff=50ms
f=5Hz, Ton=Toff=100ms
f=1Hz, Ton=Toff=500ms
(https://s27.postimg.cc/san3qsgwf/IMG_6784.jpg) (https://postimg.cc/image/san3qsgwf/)
yahu nerdende duty dedim :)
yanlış sordum belki bilemiyorum ama resimlerden sorduğum anlaşılmıyor mu?
üstteki resme bakın o zaman 1. saniyeden sonra nokta aralıkları 10ms olarak görülüyor, 0sn ile 1sn arasına noktaları nasıl yerleştireyim ki ilk mesajımdaki gibi hızlanma eğrisi 0hz'den 100hz'e düz bir çizgi şeklinde çıksın yani bu noktaların adedini ve tam konumlarını nasıl hesaplarız
1. nokta 123ms
2. nokta 221ms
3. nokta 298ms
...
gibi
eğri aşağıdaki gibi de olabilirdi mesela ama bana düz bir şekilde hızlanma yeter
(https://s23.postimg.cc/b1kgf3it3/IMG_6785.jpg) (https://postimg.cc/image/b1kgf3it3/)
1sn'yi 1000 e böldüğünü düşün. Bir timer kur ve her 1ms'de bir kesmeye gitsin. Her kesmeye gidişte 100/1000=0.1 Hz'li bir artış sağla(Duty sabit). Buna göre 1sn sonunda frekansın doğrusal bir şekilde 100Hz'ye ulaşacaktır. Bunu illede keseme ile yapmak zorunda değilsin 1ms lik gecikmeler ile de yapabilirsin. Kesme için 1ms dedim ama 1msden küçük sürelerle kesmeye gitmelisin. Çünkü kesme içerisinde koşturacağın komutların belli bir çevrim süresi var.
Hızlanmanın şeklini 0-1 saniye arasında frekansı değiştirme sıklığınız belirliyor. Mesela ilk mesajdaki fotoğraftaki gibi lineer yükseliş istiyorsanız, atıyorum timer'ı kurup her 10ms'de bir frekansı değiştirecekseniz toplamda 1000ms/10ms= 100 defa değiştirmiş olacaksınız. Buna göre 1. saniyedeki frekans 100Hz ise 100Hz/100=1Hz'lik arttırımlar olmalı. Yanlış anlamışsam kusura bakmayın :).
Alıntı yapılan: CaFFeiNe - 02 Şubat 2017, 12:47:03
(https://s27.postimg.cc/san3qsgwf/IMG_6784.jpg) (https://postimg.cc/image/san3qsgwf/)
yahu nerdende duty dedim :)
yanlış sordum belki bilemiyorum ama resimlerden sorduğum anlaşılmıyor mu?
üstteki resme bakın o zaman 1. saniyeden sonra nokta aralıkları 10ms olarak görülüyor, 0sn ile 1sn arasına noktaları nasıl yerleştireyim ki ilk mesajımdaki gibi hızlanma eğrisi 0hz'den 100hz'e düz bir çizgi şeklinde çıksın yani bu noktaların adedini ve tam konumlarını nasıl hesaplarız
Bu işi pwm üretebilen bir mikroişlemci ile yapcaksanız bahsettiğiniz sürelerin önemi yok. duty sini girersiniz. sadece frekansı arttırırsınız. Mikroişlemci kendisi frekansa göre duty değerine bakaıp ona göre aç kapa yapıyor zaten. Kaçırdığınız nokta bu
0 dan 100 herz'e diye dusununce 1 hz 1 saniye yapar.1000 ms lik bir periyodu sigdirmak istedigimiz pals adedine gore hesaplayarak delay fonksiyonu ile olabilir diye dusunurum.