Bu yazımda sizlerle giderek kullanımı artmakta olan PWM tekniğinin temel mantığı ve bu işin bir pıc ile nasıl yapılabileceğini aktarmaya çalışacağım.
PWM tekniği:
Kelime anlamı olarak darbe genişlik modülasyou anlamına gelen bu yapı ile birkaç kiloHertz lik frekanslarda bir periyotluk sinyalin on off sürelerinin değiştirilmesi mantığıdır.
Bunu bir şekille açıklamak gerekirse
Yukarıdaki örnekte Vcc gerilimi 0-5V olan sinyal için ortalama gerilim değeri
%25 için ortalama gerilim 1.25V olur
%50 için 2.5V olur
%75 için 3.75 olur.
Eğer %100 pwm değeri için ortalama gerilim Vcc ye eşit olur 5V olur.
Eğer bu darbe sinyalini PIC ile elde ediyorsak genellikle uğraştığımız Vss=0 Vcc=5 volttur.
İşte biz bu dalganın Vcc de ve Vss kalma süresinin oranını değiştirerek 0-5v arasındaki tüm gerilimleri elde edebiliriz. PWM in en basit açıklaması bu şekildedir
PWM nerede kullanılır?
PWM tekniğinin uygulanması giderek yaygınlaşmaktadır. Mesela;
- Çoğu anakart fanın hız kontrolünde
- SMPS güç kaynaklarında
- Telekomünikasyonda
- Güç Devrelerinde
- PIC uygulamalarında
- Çanta tipi kaynak makinalarında
PWM kullanılmaktadır
.PIC ile PWM
PIC ile;
1-Yazılımsal olarak
2-Donanım yardımıyla
PWM çıkış elde edilebilir. Burada donanımsal PWM desteği olan PIC ler (HPWM olarak da geçer) bize daha çok avantaj sağlamaktadır.Artık çoğu PIC kendi içinde PWM modülünü bulundurmakta yani HPWM özelliğini desteklemektedir. Bu tür PIC lerin içinde PWM üretmeye yarayan ayrı bir donanım bulunur.Biz buraya program yardımıyla bir değer atarız ve bu modül programdan bağımsız PWM üretebilir.Yani PIC ile sürekli işlem yaptırmayız.
HPWM özelliği ile PWM dalganın frekansını ve duty cycle nı belirleriz.Belirlediğimiz ve PWM desteği olan bir bacaktan da bu çıkışı alabiliriz.
Yazılımsal olarak nerdeyse her PIC ile PWM sinyal üretebiliriz. Buradaki mantık bir pini belirli bir süre 1 diğer bir süre 0 yapmaktır. Böylece bir PWM elde etmiş oluruz. Fakat bu işlemi PIC sürekli yapmalıdır.Yani komut sürekli çalışmalıdır. Bunu işlemci sürekli yaptığı için aynı anda başka bir işlem yapılamamaktadır. Eğer PWM kullanacaksanız HPWM yani donanımsal olarak PWM desteği olan bir PIC kullanmalısınız.
Burada elde edilen lojik çıkışı bir transistörle sürmek kaydıyla 0-( 25 30) arası gerilimler elde edebiliriz. Bununlada bir dc motor hız kontrolünü yapabiliriz. Pıc çıkışını mosfet ya da darbe trafolarıyla tetiklenecek ters paralel bağlı Tristörler ile yüz voltlar hatta bin voltlar kontrol edilebilir.
MicroC ile donanımsal pwm özelliği olan PIC16F877A mikro denetleyicisi ile Pwm sinyali elde eden programı hazırladım sizlerle paylaşıyorum.
Basitbir şekilde yazılımını yaptığım proje içerisinde de gerekli açıklamaları ekledin sanıyorum anlaşılmayan noktası yoktur.
Aytaç DÜRGEN
Kocaeli Üniversitesi
Teknik Eğitim Fakültesi
ELEKTRİK ÖĞRETMENLİĞİ 4
Uygulamanın proteus isis devre şeması;
Uygulamanın MikroC yazılımı;
/* Projeyi yazan : Aytaç Dürgen Projenin adı : Pwm modülünün kullnılması Mikrodenetleyici:PIC16F877A Proje Tarihi : şubat 2010 Açıklama : bu projede Pwm sayaçlarından birisi PWMin bağımsız gerçekleştiğini göstermek için PortB da gösterildi */ unsigned short j,x; void AnaAyarlar() { PORTB = 0; // portb sıfırlanıyor TRISB = 0; // PORTB cikis olarak ayarlandi ADCON1 = 6; // tum adc girisleri digital olarak ayarlandi PORTA = 0xFF; // PORTA cikisi ff yapıldı TRISA = 255; // PORTA girise ayarlandı PORTC = 0xFF; // PORTC ff yapıldı TRISC = 0; // PORTC çıkış yapıldı PWM1_Init(10000); // PWM1e 10khz yüklendi PWM2_Init(10000); // PWM2e 10khz yüklendi }//~ void main() { AnaAyarlar(); // AnaAyarlar ayarlarını uygula j = 0; x = 255; // j değeri 255 e pwm%100ye ayarlandı PWM1_Start(); // PWM1 başlatılıyor ccp2 PWM1 ise ccp1 sürülür PWM2_Start(); // PWM2 başlatılıyor ccp2 PWM1 ise ccp1 sürülür while (1) { // sonsouz döngü if (Button(&PORTA, 0,1,1)){ // RA0 a basıldımı? j++ ; // j +1 x--; } if (Button(&PORTA, 1,1,1)){ // RA1 a basıldımı? j-- ; // j - 1 x++ ; } PWM1_Change_Duty(x); PWM2_Change_Duty(j); // j değeri PWM2 ye yüklendi PORTB = j; // j değerini PORTBde göster Delay_ms(40); // bekle } }
Proje yazılımı hex kodu ve proteus simulasyonu;
Şifre-Pass: 320volt.com
Yayım tarihi: 2010/02/20 Etiketler: hpwm, microc, microc pwm, PIC16F877 örnekleri, pwm devreleri, pwm tekniği
Teşekkürler microc bilmiyorum ama pwm bilgileri iyi oldu
hocam bende pwm kütüphanesinde pwm_change_duty() yok
micro cde
Yeni versiyonda o kullanım deyimi değiştirildi. PWM konusunu derslerde yeni yazımı ile işleyeceğim
verdiğiniz bilgiler için çok teşekkürler..
Emeğinize saglık.