Bilindiği gibi mikro denetleyicilerde analog çıkış yok. Peki analog çıkış bulunmuyor ise motor hız kontrolünü nasıl yaparız? PWM kütüphanesini kullanarak yapabiliriz. PWM kütüphanesi nedir? Gelin PIC kullanarak dc motor hızını PWM ile kontrol edelim.
Bir önceki dersimizde Analog değer okuyabilmeyi anlatmıştık. Kısaca özetlersek ADC kütüphanseini kullanmıştık. ADC (Analog to Digital Converter) mikro denetleyicilerin bazılarında bulunan özelliklerinden biridir. Yazımızda sonunda ise PWM ve ADC kütüphanelerini de kullanarak örnek bir program yazalım.
Pulse-Width Modulation (PWM, Darbe genişlik modülasyonu), üretilecek olan kare dalganın, genişliğini kontrol ederek, çıkışta üretilmek istenen analog elektriksel değerin elde edilmesi tekniğidir.
PWM farklı amaçlarda bir çok yerler kullanılmaktadır. Güç, voltaj düzenleyiciler, ses üreteçleri veya yükselteçler gibi çeşitli uygulama alanları bulunmaktadır.
Günümüzde PWM’in çok duyulduğu yerlerden birisi de güç kaynaklarıdır. SMPS (Switched mode power supply) güç kaynakları, düzenlenecek olan çıkış voltajlarını bu teknikten yararlanarak elde etmektedirler. Bu sayede, yüksek akım ve düşük voltajlı güç elde edinimleri için, transformatörlerden çok daha etkili ve çok daha küçüklerdir. Diğer bir alan ise motor kontrolleridir. DC motorlarda hız ayarlamak için de sıkça kullanılır ve verimi çok yüksektir.
PWM temeli ise üretilen kare dalga sinyallerinin genişliklerinin ortalaması, çıkışta üretilecek olan analog değerin üretilmesini sağlar.

Yukarıdaki şekilde de görüldüğü gibi şu şekilde hesaplanır. Kare dalganın frekasına f(t), en düşün genlik değerine ymin, en yüksek genlik değerine ymax ve sinyal oranına D diyelim, ortalama sinyal,

Yukarıda verilen formül genellikle ymin = 0 iken olarak kullanılır. Görüldüğü gibi elde edilecek ortalama değer direk sinyal oranına bağlıdır.
PWM analog devrelerin sayısal çıkışlarla kontrol edilmesinde kullanılan en güçlü tekniktir. Piyasada bulunan birçok mikro denetleyici PWM modülü içermektedir. Bu PWM modülü, frekansının ve sinyal oranı programlanarak çalıştırılabilir.
PWM ile üretilebilecek olan çeşitli oranlar örnek olarak aşağıda verilmiştir. Kare dalganın ymax=5V aldığımız düşünelim.
Burada, en üstte verilen grafik, Duty Cycle %10, ortadaki %50, alttaki ise %90 için çizilmiştir. Bu oranlarla üretilecek olan analog sinyal değeri, %10 için 0.5V, %50 için 2.5V ve %90 için 4.5V olacaktır.
Bu modelde kullanılan basit buton yerine rahatlıkla transistör kullanılabilir. Bu transistörde mikrodenetleyici tarafından kontrol edilebilir. Bu sayede mikro denetleyici tarafından kontrol edilen basit bir analog sistem elde edilmiş olur.
Eğer üretilen sinyalin frekansı göz ardı edilirse çok küçük frekanslarda üretilen darbe sinyallerine bağlı olarak lambanın yanma ve sönme zamanları hissedilebilecektir. Bu durum size ışığın şiddetinin değişikliğinde titreme şeklinde görünecektir. Bu nedenle genellikle uygulamalarda, 1kHz – 250kHz arasındaki frekanslarda çalışılır.
Yukarıda da bahsettiğim gibi birçok mikro denetleyici dahili PWM modülüne sahiptir. Örneğin, 16F628 veya 18F2550 içerisinde dahili PWM modülleri bulunmaktadır. Microchip firmasına ait 18F2550 mikro denetleyicisi dahili 2 adet PWM modülüne sahiptir. Bu modül Capture, Compare, PWM (CCP) modülü olarak adlandırılmıştır. Bu modül ile maksimum 10bit çözünürlüklü PWM sinyalleri elde edilebilir.
Bu uygulamada, PWM frekansı 5000Hz ve PWM1 Duty Cycle oranı %30 ve PWM2 Duty Cycle oranı %80 olarak ayarlanmıştır. Simülasyon çalıştırıldığında osiloskopta aşağıdaki gibi bir görüntü gözlenmektedir. Devrede kullanılan potansiyometreler ile Duty Cycle oranı değiştirilmektedir. Potansiyometrelerin her kademesinde %1 oranında artış ve azalış gerçekleşecektir. Bu devremizde ayrıca motor sürücü entegresi kullanılmıştır. Motor sürücü ise şimdilik içinde transistörlerin bulunduğu bir motor kontrol entegresi olduğunu bilmeniz yeterlidir. Kod ile ilgili detaylı açıklama ve MikroC PRO for PIC'de hazırlanmış PWM kütüphanesi aşağıdadır.


Bir önceki dersimizde Analog değer okuyabilmeyi anlatmıştık. Kısaca özetlersek ADC kütüphanseini kullanmıştık. ADC (Analog to Digital Converter) mikro denetleyicilerin bazılarında bulunan özelliklerinden biridir. Yazımızda sonunda ise PWM ve ADC kütüphanelerini de kullanarak örnek bir program yazalım.
PWM Nedir?
Pulse-Width Modulation (PWM, Darbe genişlik modülasyonu), üretilecek olan kare dalganın, genişliğini kontrol ederek, çıkışta üretilmek istenen analog elektriksel değerin elde edilmesi tekniğidir.
PWM farklı amaçlarda bir çok yerler kullanılmaktadır. Güç, voltaj düzenleyiciler, ses üreteçleri veya yükselteçler gibi çeşitli uygulama alanları bulunmaktadır.
Günümüzde PWM’in çok duyulduğu yerlerden birisi de güç kaynaklarıdır. SMPS (Switched mode power supply) güç kaynakları, düzenlenecek olan çıkış voltajlarını bu teknikten yararlanarak elde etmektedirler. Bu sayede, yüksek akım ve düşük voltajlı güç elde edinimleri için, transformatörlerden çok daha etkili ve çok daha küçüklerdir. Diğer bir alan ise motor kontrolleridir. DC motorlarda hız ayarlamak için de sıkça kullanılır ve verimi çok yüksektir.
PWM temeli ise üretilen kare dalga sinyallerinin genişliklerinin ortalaması, çıkışta üretilecek olan analog değerin üretilmesini sağlar.

Yukarıdaki şekilde de görüldüğü gibi şu şekilde hesaplanır. Kare dalganın frekasına f(t), en düşün genlik değerine ymin, en yüksek genlik değerine ymax ve sinyal oranına D diyelim, ortalama sinyal,

Yukarıda verilen formül genellikle ymin = 0 iken olarak kullanılır. Görüldüğü gibi elde edilecek ortalama değer direk sinyal oranına bağlıdır.
PWM analog devrelerin sayısal çıkışlarla kontrol edilmesinde kullanılan en güçlü tekniktir. Piyasada bulunan birçok mikro denetleyici PWM modülü içermektedir. Bu PWM modülü, frekansının ve sinyal oranı programlanarak çalıştırılabilir.
PWM ile üretilebilecek olan çeşitli oranlar örnek olarak aşağıda verilmiştir. Kare dalganın ymax=5V aldığımız düşünelim.


Burada, en üstte verilen grafik, Duty Cycle %10, ortadaki %50, alttaki ise %90 için çizilmiştir. Bu oranlarla üretilecek olan analog sinyal değeri, %10 için 0.5V, %50 için 2.5V ve %90 için 4.5V olacaktır.
Bu modelde kullanılan basit buton yerine rahatlıkla transistör kullanılabilir. Bu transistörde mikrodenetleyici tarafından kontrol edilebilir. Bu sayede mikro denetleyici tarafından kontrol edilen basit bir analog sistem elde edilmiş olur.
Eğer üretilen sinyalin frekansı göz ardı edilirse çok küçük frekanslarda üretilen darbe sinyallerine bağlı olarak lambanın yanma ve sönme zamanları hissedilebilecektir. Bu durum size ışığın şiddetinin değişikliğinde titreme şeklinde görünecektir. Bu nedenle genellikle uygulamalarda, 1kHz – 250kHz arasındaki frekanslarda çalışılır.
Yukarıda da bahsettiğim gibi birçok mikro denetleyici dahili PWM modülüne sahiptir. Örneğin, 16F628 veya 18F2550 içerisinde dahili PWM modülleri bulunmaktadır. Microchip firmasına ait 18F2550 mikro denetleyicisi dahili 2 adet PWM modülüne sahiptir. Bu modül Capture, Compare, PWM (CCP) modülü olarak adlandırılmıştır. Bu modül ile maksimum 10bit çözünürlüklü PWM sinyalleri elde edilebilir.
PWM Uygulamalarımıza Geçelim
Bu uygulamada, PWM frekansı 5000Hz ve PWM1 Duty Cycle oranı %30 ve PWM2 Duty Cycle oranı %80 olarak ayarlanmıştır. Simülasyon çalıştırıldığında osiloskopta aşağıdaki gibi bir görüntü gözlenmektedir. Devrede kullanılan potansiyometreler ile Duty Cycle oranı değiştirilmektedir. Potansiyometrelerin her kademesinde %1 oranında artış ve azalış gerçekleşecektir. Bu devremizde ayrıca motor sürücü entegresi kullanılmıştır. Motor sürücü ise şimdilik içinde transistörlerin bulunduğu bir motor kontrol entegresi olduğunu bilmeniz yeterlidir. Kod ile ilgili detaylı açıklama ve MikroC PRO for PIC'de hazırlanmış PWM kütüphanesi aşağıdadır.


MikroC kodu:
int veri1,veri2,hiz1,hiz2; //değişkenlerimizi tanımladık.
void main() { //Ana fonksiyon(programın başladığı nokta)
trisa=1; // A portunu giriş olarak ayarladık
ADCON0=0b00000001; // PIC ın analog giriş ayarları yapıldı
ADCON1=0b00000001; // Analog giriş kanalları seçildi
ADCON2=0b10000000; // Analog giriş kanalları seçildi
trisb=0; // B portunu çıkış olarak ayarladık
Trisc=0; // C portunu çıkış olarak ayarladık
Porta=0; // A portunu sıfırlayarak temizledik
Portb=0; // B portunu sıfırlayarak temizledik
Portc=0; // C portunu sıfırlayarak temizledik
PWM1_Init(5000); // PWM1 kanalının frekansı ayarladık
PWM2_Init(5000); // PWM2 kanalının frekansı ayarladık
PWM1_Start(); // PWM1 kanalını aktifleştirdik
PWM2_Start(); // PWM2 kanalını aktifleştirdik
while(1) // Sonsuz döngüye girerek devamlı programı
{ // tekrarlamasını istedik
Portc.f4=0; // Motorları yönünü belirlemek için kullandık
Portc.f5=0; // =0 ise ileri yön =1 ise geri yön
veri1=ADC_Read(0); // Analog değeri veri1 e eşitle
veri2=ADC_Read(3); // Analog değeri veri2 ye eşitle
hiz1=veri1/4; // PWM değeri olarak 0 ile 255 arasında değer alır
hiz2=veri2/4; // Analog değer max 1023 olacağından 4e bölerek
// orantı kurduk. böylece 255 i geçmeyecek.
PWM1_Set_Duty(hiz1); // PWM1 modülüne hesaplanan hiz1 değerini yükledik.
PWM2_Set_Duty(hiz2); // PWM2 modülüne hesaplanan hiz1 değerini yükledik.
}
}
Hiç yorum yok:
Yorum Gönder