12f683 HPWM

Başlatan zeus48, 27 Nisan 2017, 10:47:58

zeus48

Arkadaşlar mrb. İki gündür ete hocanın hpwm ders notlarını okudum. Anladığım kadarı ile
12f683  dahili 1mhz osilatörünü kullanarak hpwm ile servo konrol edilebir diye düşünüyorum. Devre kurup yazılım yapmadım.

Yorumu olan arkadaşlar varmıdır Tşk

ete

Servo motorlar 20ms lik peryotlarla sürülmelidir. Bu peryodun 0.5-2 ms lik bölümü konumu belirleyen HIGH sinyali kalan bölümü ise LOW sinyali şeklinde olmalıdır. Bu durumda verilecek sinyalin frekansı 50Hz olmalıdır.
1Mhz OSC frekansında elde edilebilecek en düşük HPWM sinyali ise 60 Hz dir. 10 Hz lik bir fazlalık vardır.
Daha düşük frekanslarda olmalı OSC frekansı.
Bu is programın diğer kısımlarının aşırı yavaş çalışmasına sebep olacaktır. Bence çok akıllıca bir seçenek değil bu iş.
En güzeli normal OSC frekanslarında kesme kullanılarak bu sinyalin elde edilmesi dir.

Ete

Maxim

ete hocam, 500khz int osc kullanılabilir böylece hpwm değerimiz minimum 30hz olmazmı?

ete

#3
olabilir elbette.
İşin hesabı şöyle;
PWM(Peryodu)=(PR2+1)*4*(1/OSCFREQ)*BölmeOranı.
Hesaplayacağımız değer PR2 register değeridir ve 0-255 aralığında bir sayı olmalıdır(8 bit)
20 ms ilik PWM peryodumuzu Hz cinsiden yazmamız gerekiyor buda 20.000 dir. 1/OSCFRQ=1/0,5=2 eder, Bölme oranını 8 alırsak,
20000=(PR2+1)*4*2*8  20000/64=PR2+1  sonuç 255 den büyük çıktığı için bölme oranını 64 almak gerekiyor.
Böylece 20000=(PR2+1)*4*2*64 den sonuç   39=(PR2+1) ve PR2=38 çıkar.

Ama hiç, düşük OSC frekanslarında normal bir programı çalıştırmadınız ise deneyin derim. İnsanı sinir eden bir yavaşlık göreceksiniz. Bu sistem size 50 Hzlik bir pwm sinyali sağlar ama diğer işlerinizi aksatır. Amaç sadece 50 Hz lik sinyali elde etmek ise sorun yok kullanabilirsiniz.
Yukarıdaki formüle göre 50 Hzlik sinyal için kullanılabilecek min OSC frekansı ; 820 Khz olabilir.
Bununda hesabı şöyle.
4 x 1/Fosc(Mhz) * Bölme işleminde Bölme=16 bu sabit daha düşüğü işimize yaramıyor. 4 de sabit olunca ikisinin çarpımı 64 ediyor. Diğer tarafa bakarsak 20000 sayısını öyle bir sayıya bölmeliyiz ki sonuç 255 ve daha aşağı çıksın. O halde 20000/255=78 bulunur. Demekki 64 sayısını öyle bir sayı ile çarpmalıyız ki bize 78 versin. Bu da 78/64= 1,21875 sayısıdır.
O halde 1/Fosc=1,21875 olacaktır buradan F yi çekersek 1/1,21875=0,820 Mhz çıkar buda 820 Khz dir. BUda size şunu söyler OSC frekansını 820KHz veya daha az kullanırsanız 50 Hzlik siyali elde edersiniz.

Ete




Powered by EzPortal