PWM tekniği

Darbe genişliği modülasyonu (PWM -Pulse Width Modulation), bir dijital sinyal türünü tanımlamak için kullanılan bir terimdir. Darbe genişlik modülasyonu, gelişmiş kontrol devreleri de dahil olmak üzere çeşitli uygulamalarda kullanılır. Bu tekniği, RGB LED’lerin karartılmasını kontrol etmek veya bir servo motorun yönünü kontrol etmekte kullanabiliriz. Her iki uygulamada da bir dizi sonuç elde edebiliriz. Çünkü darbe genişliği modülasyonu, dijital bir sinyalin analog moddaymış gibi davranması sağlamak için çıkış palsleri üretmemizi ve bu palsleri ne kadar süre ile 1 olduğunu kontro etmemizi sağlar. diğer bir deyişle PWM, dijital araçlarla analog sonuçlar almak için kullanılan bir tekniktir.

Sinyal herhangi bir süre ile yüksek (genellikle 5V) veya düşük (0V) olabilirken, belirli bir zaman aralığında sinyalin 1 olduğu zamanın oranı ile sinyalin 0 olduğu zaman oranını karşılaştırabilir ve bu süreleri değiştirebiliriz. Bu teknik ile Dijital kontrol, kare dalga oluşturmak için kullanılır. Bu, 1 ve 0 arasında değişen bir sinyaldir. Bu 1-0 deseni, 0 sinyalinin  harcadığı zamana karşı 1 sinyalinin harcadığı süreyi değiştirerek, tam açık (5 Volt) ve kapalı (0 Volt) arasındaki voltajları simüle edebilir.

 

Sinyalin “1” olduğu zaman süresi darbe genişliği olarak adlandırılır. Değişken analog değerler elde etmek için darbe genişliğini değiştirir veya modüle ederiz. Bu 1-0 desenini bir LED ile yeterince hızlı tekrar ederseniz, sonuç olarak sinyalin LED parlaklığını kontrol eden, 0 ila 5v arasındaki sanki sabit bir voltaj gibi davranmasını sağlamış olursunuz.

Duty Cycle (Görev Döngüsü)

Darbe genişliği miktarını tanımlamak için, duty cycle (görev döngüsü) kavramını kullanıyoruz. Duty cycle, yüzde olarak ölçülür. Duty cycle yüzdesi oranı, bir dijital sinyalin 1 olduğu aralığı veya süre boyunca yüzdesini ifade eder. Bu periyot, dalga formunun frekansının tersidir.

Bir dijital sinyal zamanın yarısını 1 olarak ve diğer yarısı 0 olarak harcarsa, dijital sinyalin% 50’lik bir duty cycle’a (görev döngüsüne) sahip olduğunu ve ideal bir kare dalgaya benzediğini söyleyebiliriz. Eğer duty cycle yüzdesi % 50’den yüksekse, dijital sinyal 1 seviyesinde, 0 seviyesine göre daha fazla zaman harcar ve eğer duty cycle yüzdesi % 50’den azsa da tam tersi durum söz konusudur (dijital sinyal 0 seviyesinde, 1 seviyesine göre daha fazla zaman harcar). İşte bu üç senaryoyu gösteren bir grafik aşağıdaki gibidir:

duty

% 100 duty cycle, Voltajın 5 Volt’a (yüksek) ayarlanması gibi olacaktır, yani çıkışta 5V görülür. % 0 duty cycle ile çıkış sinyali topraklama (0V) ile aynı olur.

Aşağıdaki grafikte, yeşil çizgiler düzenli bir zaman periyodunu temsil etmektedir. Bu periyot, PWM frekansının tersidir. Arduino PWM frekansı yaklaşık 500 Hz’dir. Diğer bir deyişle, yaklaşık 500Hz’de Arduino PWM frekansı ile yeşil hatların her birinin aralığı yaklaşık 2 milisaniyedir. Kabaca her saniyenin 500’de 1 inde (1/500 sn de bir) PWM çıkışı 1 pals üretiyor.

F = 500 Hz ise;

T(periyot)(sn.) = 1 / F formülünden  T = 1 / 500 olacağına göre, T=0,002 sn yani yaklaşık   T = 2ms olarak bulunur.

AnalogWrite (255),% 100 duty cycle anlamına gelir (her zaman açık) ve analogWrite (127) ise% 50 duty cycle (yarı yarıya) anlamına gelir.

1

 

Çıkış voltajı ise  Vçıkış=Vgiriş*Duty cycle  formülü ile hesaplanır.

%25 duty cycle pwm sinyal çıkışı veren programız, çıkış voltajı olarak;

Vçıkış = Vgiriş*duty cycle      ===>             Vçıkış = 5*(25/100)           ===>         Vçıkış = 1,25 V

olarak hesaplanabilir.

Çoğu Arduino kartı (ATmega168 veya ATmega328 ) üzerinde PWM çıkışları 3, 5, 6, 9, 10 ve 11 numaralı pinler üzerinde çalışır. Arduino Mega’da pim 2 – 13 ve 44 – 46’da çalışır. Eski Arduino ATmega8’e sahip panolar yalnızca 9, 10 ve 11 numaralı pimlerde analogWrite () desteklemektedir.

AnalogWrite () çağrılmadan önce pini çıkış olarak ayarlamak için pinMode () öğesini aramanız gerekmez.

Fonksiyon,    analogWrite ( pin , value ) ;      şeklinde kullanılır.

pin=  PWM çıkışı için kullanılacak olan pin

value= duty cycle değeri 0-255 arası.

0 değeri %0’ı temsil ediyor iken, 255 değeri %100’ü temsil eder.

çıkış voltajımıza göre,value parametresine yazılacak olan değeri aşağıdaki formülden bulabiliriz.

value = (255/5)*Vçıkış

örneğin çıkış voltajımızın 2,5V olamasını istiyorsak,

value = (255/5)*2,5      ==============>  value = 127 olarak bulabiliriz.

Arduino IDE editöründe, PWM ile bir ledin parlaklık ayarı yapılması ile ilgili bir örnek vardır.

File->Sketchbook->Examples->Analog->Fading

Bu örneği çalıştırdıktan sonra, arduino’yu alın ve ileri geri sallayın. Burada yaptığınız şey aslında uzayda zamanı haritalandırmaktır. Gözlerimize göre hareket, her LED’i bir çizgide yanıp sönerek bulanıklaştırır. LED yavaş yavaş sönüp kaybolurken, bu küçük çizgiler büyüyecek ve kısalacaktır. Bu şekilde darbe genişliğini gözle de görebilirsiniz.

Faydalanmanız dileği ile….

Birisi “PWM tekniği” üzerinde düşündü

Yorum bırakın