Projenizdeki LED’in parlaklığını değiştirmekte zorlanıyor musunuz? Devredeki güç kaynağı voltajını doğrudan değiştirmek bu işi başarmak için kolay değil. Ancak, bu konuda size yardımcı olabilecek Pulse Width Modulation (PWM) kullanabilirsiniz! Bu, Arduino’da kod yazarak kolayca uygulanabilir.

Bu eğitimde aşağıdakileri ele alacağım:
- Pulse Width Modulation (PWM) nedir?
- PWM’nin Duty Cycle ve Frekansı
- Pulse Width Modulation (PWM) Uygulaması
- Arduino ile PWM Uygulaması
- PWM ile İlgili Aksesuarlar
Pulse Width Modulation (PWM) Nedir?
Pulse Width Modulation (PWM), bir cihaza iletilen güç miktarının değiştirilebildiği dijital bir teknolojidir. Dijital bir kaynak kullanarak analog sinyaller üretir. PWM sinyali, temel olarak açık ve kapalı durumlar arasında geçiş yapan bir kare dalgadır. PWM sinyalinin duty cycle’ı ve frekansı, davranışını belirler.

PWM’de Duty Cycle
PWM sinyalinin duty cycle’ı, sinyalin yüksek (açık) durumda bulunduğu zamanın, bir döngüyü tamamlamak için geçen toplam zamana oranını ifade eder. Genellikle yüzde veya oran olarak ifade edilir.

%50 duty cycle, yüksek durumun zamanın yarısını aldığı ve düşük durumun diğer yarısını aldığı anlamına gelir; bu, ideal bir kare dalga ile aynıdır. Bu oran %50’den büyükse, mantıksal yüksek sinyal, mantıksal düşük sinyalden daha uzun bir süre alır, tersine. Dolayısıyla, %100 duty cycle, sinyalin her zaman açık olduğu (tam ölçek), %0 duty cycle ise sinyalin her zaman kapalı olduğu (topraklama) anlamına gelir.
PWM Sinyalinin Frekansı
Bir periyot, bu sinyalin bir açık-kapalı döngüsünü tamamladığı zamana eşittir. Frekans, birim zamanda tamamlanan periyodik değişim sayısıdır ve periyodun tersidir. PWM’nin bir döngüyü tamamlama hızını belirler; bu, sinyalin yüksek ve düşük durumlar arasında geçiş yapma hızını ifade eder. Eğer dijital sinyali yeterince yüksek bir frekansta sürekli açıp kapatırsak, çıkış, sabit bir voltajla analog bir sinyal gibi davranır.
Pulse Width Modulation (PWM) Uygulaması
PWM Kullanarak Ekranın Parlaklığını Ayarlama
PWM için, ekranın parlaklığını ayarlamak güçle değil, ekranın açık ve kapalı olma durumu ile ilgilidir. PWM ile karartılan ekran yandığında, sürekli ışık yaymaz, ancak ekranı sürekli açıp kapatır. Eğer bu yeterince hızlı değişirse, gözlerimiz bunu her zaman açık olarak algılar, ancak farklı duty cycle’lara bağlı olarak farklı parlaklıklarla. Duty cycle ne kadar büyükse, ekran o kadar parlak olur.
Diğer PWM Uygulamaları
PWM teknolojisini kullanan diğer uygulamalar şunlardır:
- Farklı ses yüksekliği ile buzzer sürmek
- Motorun hızını kontrol etmek
- Servo yönünü kontrol etmek
- Analog çıkış sağlamak
- Ses sinyali üretmek
- Telekomünikasyon: Mesaj kodlamak
Arduino ile PWM Uygulaması
PWM, Arduino’da çeşitli şekillerde uygulanabilir. Seeeduino kartında, PWM dalgası üretebilen 6 pin (yani pin 3, 5, 6, 9, 10, 11) bulunmaktadır. analogWrite() fonksiyonu ile çağrıldığında, belirli bir duty cycle ile kararlı bir kare dalga PWM pinlerinde üretilir. Genel olarak, bu pinlerin frekansı yaklaşık 490Hz’dir ve Seeeduino veya benzeri kartların pin 5 ve 6’sı 980Hz frekansına sahiptir.
Arduino pinlerinden çıkan voltaj 5V’dur ve farklı duty cycle’lar aşağıda belirtildiği gibi farklı voltaj seviyeleri üretir:
| Duty Cycle | Çıkış Voltaj Seviyeleri |
| 0% | 0V |
| 25% | 1.25V |
| 50% | 2.5V |
| 75% | 3.75V |
| 100% | 5V |
LED’in Parlaklığını Ayarlama
Bir LED’in parlaklığını PWM tekniği ile Arduino ile kontrol etmek için aşağıdaki örneği takip edebilirsiniz:
Donanım Bağlantısı

Yazılım
analogWrite() Fonksiyonu Söz Dizimi:
analogWrite ( pin , value ) ;
Değer, duty cycle’ı temsil eder ve sayı 0 (kapalı) ile 255 (açık) arasında olmalıdır.
int ledPin = 9; // LED dijital pin 9'a bağlı
void setup() {
pinMode(ledPin, OUTPUT); // pini çıkış olarak ayarlar
}
void loop() {
analogWrite(ledPin, 255); // duty cycle'ı her zaman açık olarak ayarla
}
‘255’ değerini 0~255 arasındaki herhangi bir sayıya değiştirerek farklı çıkışlar elde edebilir veya kodu sürekli olarak değeri değiştirecek şekilde değiştirebilirsiniz.
PWM İlgili Aksesuarlar
Grove – 16-Channel PWM Sürücü (PCA9685)

Geliştirme kartlarının PWM çıkış arayüzlerinin sınırlı sayısından dolayı hiç endişe hissettiniz mi? Endişelenmeyin! Grove – 16-Channel PWM Sürücü, 16 kanallı 12 bit I2C PWM sürücüsü olan NXP PCA9685’e dayanmaktadır. Bu PCA9685 16-Channel 12bit I2C PWM sürücü kartı, harici güç kaynağı ile 16 servoyu çalıştırabilir.
NXP PCA9685’in özelliklerine dayanarak, bu PWM sürücü kartı, bir altı ayaklı yürüyücü veya MarsCar gibi çok kanallı PWM projelerinin ihtiyaçlarını iyi bir şekilde karşılayabilir. Ayrıca, bu kartı bir LED kontrolörü olarak da kullanabilirsiniz. Bu sürücü kartını I2C Grove arayüzü aracılığıyla kolayca kontrol edebilirsiniz.
Arduino için Motor Paketi

Arduino için Motor Paketi, Arduino ile motor öğrenmek için mükemmel bir settir. Projeniz bir DC motor, bir stepper motor veya bir direksiyon dişlisi gerektiriyorsa, hepsini bu sette bulabilirsiniz! Ama motoru kontrol etmek için PWM kullanmayı biliyor musunuz?
Motor Kontrolü için PWM Kullanımı
Bir DC motor için, motorun yükü (tork) sabit olduğunda, hız güç kaynağı voltajı ile orantılıdır. Yukarıda tartışıldığı gibi, çıkış voltaj seviyesi PWM’in görev döngüsü tarafından belirlenir, bu nedenle PWM motorun hızını kontrol etmek için kullanılabilir.
Donanım Bağlantısı
Benzer donanım bağlantısı Motor için de geçerli olacaktır.
- Motoru pin 9 ve GND’ye bağlayın.
- Motor ile Arduino arasında bir voltaj regülatörü bağlamanız gerekebilir, çünkü Arduino yalnızca 5V’a kadar voltaj çıkışı verebilir.
Yazılım
analogWrite() Fonksiyonu Söz Dizimi:
analogWrite ( pin , value ) ;
Değer, görev döngüsünü temsil eder ve sayı 0 (kapalı) ile 255 (açık) arasında olmalıdır.
int ledPin = 9; // LED dijital pin 9'a bağlı
void setup() {
pinMode(ledPin, OUTPUT); // pini çıkış olarak ayarlar
}
void loop() {
analogWrite(ledPin, 255); // görev döngüsünü her zaman açık olarak ayarla
}
Farklı çıkışlar için ‘255’ değerini 0~255 arasındaki herhangi bir sayıya değiştirebilir veya değeri sürekli değiştirmek için kodu değiştirebilirsiniz.
Özet
Ve PWM ile ilgili her şey bu kadar! Bu blog aracılığıyla yeni bir şey öğrendiniz mi? Projelerinizde size yardımcı olabildiysek umarım mutlu olursunuz, keyifli tinkering!
