Pic ile ilgili yazı serisi yazmaya karar verdim. Bunlar en çok kullanılandan başlayacak şekilde pic kütüphaneleri olacak. Kütüphaneleri 8-Bit pic’ler ve HI-TECH C için yazacağım. 8-Bitlik çoğu pici sadece tek kütüphane ile kontrol edebileceksiniz…
Pwm genelde motor sürerken kullandığımız bir modüldür. Robotlarımızın veya projelerimizin değişmez modülüdür. PIC12 serisinin 1 modelinde, PIC16 serisinin çoğu modelinde ve PIC18 serisinin tüm modellerinde pwm modülü bulunmaktadır. Bu kütüphane pwm modülü olan tüm 8-Bit PIC modellerini desteklemektedir.
DC Motorlar için optimum pwm frekansı genelde 10kHz civarında oluyor. İnternette bir sürü hesaplama metodu bulabilirsiniz. Ancak uygun frekansta pwm sinyali gönderemezseniz motorunuz çalışmayabilir ve ses çıkarabilir. Eğer geçerli bir pwm frekansı seçmezseniz otomatikman PR2 değeri 255, Prescale değeri ise 4 seçilecektir. Bunun sonucunda 20mHz’lik osilatörle 4883Hz’lik pwm sinyali, 4mHz’lik osilatörle 977Hz’lik pwm sinyali alırsınız.
4mHz osilatör ile 10bitlik çözünürlüğe sahip pwm sinyali min 245Hz max 3906Hz olabilir.
20mHz osilatör ile 10bitlik çözünürlüğe sahip pwm sinyali min 1221Hz max 19531Hz olabilir.
Diğer osilatör frekansları için aşağıdaki formülü kullanabilirsiniz.
Kütüphanenin bir sonraki sürümüne çözünürlük ayarlama, otomatik max çözünürlük ve max frekans seçici gibi özellikler eklemeyi düşünüyorum.
Aşağıdaki linkten kütüphane dosyalarını indirebilirsiniz.
http://www.mediafire.com/download/12nr65q2besrmq2/pwm.rar
Bu kütüphaneyi kullanan örnek kod aşağıdadır;
#include <pic.h> #include "pwm.h" void main () { TRISC = 0; TRISB = 0; PORTC = 0; PORTB = 0; InitPwm(4000000, 3000); RB0 = 1; RB1 = 0; RB2 = 1; RB3 = 0; StartPwm(1, 125); StartPwm(2, 255); while(1); }
Örnek projeyi indirmek için ise;
http://www.mediafire.com/download/b9ii09ooox4euub/motor+pwm.rar
Eğer kütüphane eklemeyi, projede kullanmayı bilmiyorsanız; Buraya bakınız.
Hocam linkler bozulmuş rica etsem tekrar yükleyebilirmisin
Yazar
Güncelledim indirebilirsiniz.
Birkaç ay önce pwm ile çok uğraşmıştım. Çeşitli denemeler yapmıştım ancak sonuç tam istediğim gibi olmamıştı. Yazdığınız kodları deneyeceğim. Teşekkürler 🙂
[Bu kadar değerli bir konuya nasıl yorum yapılmamış, şaşırdım.]