Arduino'da Analog Çıkış İşlemleri ve PWM
Arduino ile fiziksel dünyayı kontrol ederken genellikle dijital sinyallerden bahsederiz: yüksek veya düşük, açık veya kapalı gibi. Ancak bazı durumlarda, bir LED'in parlaklığını ayarlamak veya bir motorun hızını kontrol etmek gibi analog değerler üzerinde hassas kontrol sağlamamız gerekir. İşte bu noktada Analog Çıkış İşlemleri ve PWM (Pulse Width Modulation) devreye girer.
Analog Çıkış Nedir?
Dijital çıkışlar sadece iki durum (0V veya 5V gibi) sunarken, analog çıkışlar bu iki değer arasında sürekli bir voltaj aralığı sağlar. Bu sayede bir cihazın çalışma seviyesini kademeli olarak değiştirebiliriz. Örneğin, bir LED'i tamamen kapalıdan tam parlaklığa kadar farklı seviyelerde aydınlatabiliriz.
Ancak burada önemli bir nokta var: Çoğu Arduino kartında (Uno, Nano gibi) gerçek bir dijital-analog dönüştürücü (DAC) bulunmaz. Yani, Arduino doğrudan 0V ile 5V arasında sürekli bir voltaj üretemez. Bunun yerine, analog çıkış işlevini taklit etmek için PWM (Darbe Genişlik Modülasyonu) tekniğini kullanır.
PWM (Pulse Width Modulation) Nedir?
PWM, dijital sinyaller kullanarak analog davranışı taklit etmenin zekice bir yoludur. Temel prensibi şudur: Bir dijital pini çok hızlı bir şekilde açıp kapatarak ortalama voltaj seviyesini değiştirmek.
Bir PWM sinyali, belirli bir frekansta tekrar eden kare dalgalardan oluşur. Bu kare dalgaların iki temel özelliği vardır:
Periyot (Period): Bir döngünün tamamlanması için geçen süre.
Görev Döngüsü (Duty Cycle): Bir periyot içinde sinyalin "açık" (HIGH) kaldığı sürenin, periyodun tamamına oranıdır. Genellikle yüzde olarak ifade edilir.
Arduino Uno’da PWM çıkış pinleri 3, 5, 6, 9, 10, 11 nolu pinlerdir. Bu pinlerden 5 ve 6 pinlerindeki PWM sinyalinin frekansı yaklaşık 980Hz, diğer pinlerde ise 490Hz olacaktır. PWM pinleri ~ işareti ile gösterilmektedir.
Dijital kontrol, açık ve kapalı arasında geçiş yapan bir sinyal olan kare dalga oluşturmak için kullanılır. Örneğin bir LED ile bu açık-kapalı düzeni yeterince hızlı tekrarlarsanız, sonuç, sinyalin 0 ile Vcc arasında sabit bir voltaj olması ve LED'in parlaklığını kontrol etmesi gibi olur.
Örnek:
%0 Görev Döngüsü: Sinyal her zaman kapalıdır (LOW). Ortalama voltaj 0V'dır.
%50 Görev Döngüsü: Sinyal periyodun yarısı boyunca açık (HIGH), yarısı boyunca kapalıdır (LOW). Ortalama voltaj 2.5V'dır (5V'un yarısı).
%100 Görev Döngüsü: Sinyal her zaman açıktır (HIGH). Ortalama voltaj 5V'dır.
PWM çıkışı için kullanılan ana fonksiyon analogWrite() fonksiyonudur. Şu şekilde kullanılır:
analogWrite(pin, value);
pin: PWM çıkışı olarak kullanmak istediğiniz pin numarası.
value: Ayarlamak istediğiniz görev döngüsü değeri. Bu değer 0 ile 255 arasında olmalıdır.
Aşağıdaki resimde analogWrite() komutunun value değerine göre oluşan PWM sinyaller gösterilmiştir.
analogWrite (pin, value) komutunda "value" 0 - 255 arasında bir değer alır.
analogWrite(3, 255) : %100 görev döngüsü.
analogWrite(3, 127) : %50 görev döngüsü.
PWM'in Kullanım Alanları
LED Parlaklık Kontrolü: Ortam ışığına duyarlı aydınlatma sistemleri veya dekoratif ışıklandırmalar.
DC Motor Hız Kontrolü: Robotlarda veya diğer motorlu sistemlerde motorun hızını hassas bir şekilde ayarlama.
Servo Motor Kontrolü: Servo motorlar, belirli açılara konumlanmak için PWM sinyallerini kullanır.
Ses Üretimi: Basit tonlar veya müzik çalmak için.
Isıtıcı Kontrolü: Isıtma elemanlarının gücünü ayarlamak.
0 comments:
Yorum Gönder