Merhaba arkadaşlar, bu yazımızda Arduino ile PWM uygulamasını göreceğiz.
PWM (Pulse Width Modulation) veya Darbe Genişlik Modülasyonu, basit bir şekilde anlatmak gerekirse oluşturulan darbelerin genişliğini ayarlamak için kullanılan tekniktir.
PWM tekniği telekomünikasyon, voltaj düzenleyiciler, yükselteçler vb. uygulamalarda kullanılır. PWM’ in en çok kullanıldığı yer, güç kaynaklarıdır. Ancak biz robot projelerimizde DC Motorların hızlarını ayarlamak için kullanacağız. Bunun için öncelikle PWM’ in mantığını anlamalı ve Arduino ile ufak bir uygulama yaparak kendimiz denemeliyiz.
PWM’ i anlatmak için sayfalarca da yazı yazılabilir ancak bizim için gerekli olan sadece mantığını anlamamız. O yüzden ufak bir şekil üzerinden basitçe anlatmaya çalışacağım.
PWM tekniği, üretilen kare dalga sinyallerinin genişliğinin değiştirilmesi temeline dayanıyor. Yukarıdaki şekilde de gördüğümüz gibi kare dalga sinyalleri, 1 ve 0 dan oluşuyor( 1 = 5V, 0=0V). Normal şartlarda ikisinin de genişlikleri eşit oluyor. Ancak PWM tekniği uygulandığında 1, yani 5V darbesinin genişliği değiştirilebiliyor.
Hadi şimdi bu tekniği Arduino üzerinde ufak bir uygulama yaparak deneyelim.
Not: Şimdi yapacağımız uygulama giriş seviyesinde elektronik bilgisine sahip olmayı gerektirir, bu yüzden hiç elektronik bilgisi olmayan arkadaşlar biraz zorlanabilirler.
PWM ile ilgili bilgi sahibi değilseniz bu yazımı okuyabilirsiniz.
Sinyal Genişlik Modülasyonu (PWM) Tekniği Nedir?
NOT:
Eğer ledin daha hızlı veya daha yavaş parlamasını istiyorsanız, kod içerisindeki “delay” komutu yanındaki değeri yükseltip azaltabilirsiniz.
Arduino ile yapılan devrelerde, PWM veya herhangi bir kontrol uygulamasında kullanılan elemanlar genellikle düşük akım çeken belirli gerilim değerleri arasında çalışan elemanlardır. Arduino' nun üzerindeki entegrenin çıkışlarından alabileceğiniz akım ve gerilim değerleri sabittir. Eğer ki daha yüksek akım çekecek elemanlar kullanacaksanız veya daha fazla gerilime ihtiyacınız var ise Arduino ile beraber bir motor sürücü kullanabilirsiniz.
PWM (Pulse Width Modulation) veya Darbe Genişlik Modülasyonu, basit bir şekilde anlatmak gerekirse oluşturulan darbelerin genişliğini ayarlamak için kullanılan tekniktir.
PWM tekniği telekomünikasyon, voltaj düzenleyiciler, yükselteçler vb. uygulamalarda kullanılır. PWM’ in en çok kullanıldığı yer, güç kaynaklarıdır. Ancak biz robot projelerimizde DC Motorların hızlarını ayarlamak için kullanacağız. Bunun için öncelikle PWM’ in mantığını anlamalı ve Arduino ile ufak bir uygulama yaparak kendimiz denemeliyiz.
PWM’ i anlatmak için sayfalarca da yazı yazılabilir ancak bizim için gerekli olan sadece mantığını anlamamız. O yüzden ufak bir şekil üzerinden basitçe anlatmaya çalışacağım.
PWM tekniği, üretilen kare dalga sinyallerinin genişliğinin değiştirilmesi temeline dayanıyor. Yukarıdaki şekilde de gördüğümüz gibi kare dalga sinyalleri, 1 ve 0 dan oluşuyor( 1 = 5V, 0=0V). Normal şartlarda ikisinin de genişlikleri eşit oluyor. Ancak PWM tekniği uygulandığında 1, yani 5V darbesinin genişliği değiştirilebiliyor.
Hadi şimdi bu tekniği Arduino üzerinde ufak bir uygulama yaparak deneyelim.
Not: Şimdi yapacağımız uygulama giriş seviyesinde elektronik bilgisine sahip olmayı gerektirir, bu yüzden hiç elektronik bilgisi olmayan arkadaşlar biraz zorlanabilirler.
PWM ile ilgili bilgi sahibi değilseniz bu yazımı okuyabilirsiniz.
Sinyal Genişlik Modülasyonu (PWM) Tekniği Nedir?
int ledPin = 8; // 8 nolu pin ledPin olarak ayarlansın
int solmaDegeri; // Solma değeri isimli bir değişken tanımla
void setup(){} // Bu program için herhangi bir kurulum yapmamıza gerek yok
void loop() // Ana döngümüzün girişi
{
for( solmaDegeri = 0 ; solmaDegeri <= 255; solmaDegeri +=5) // Solma değeri 0 ile 255 arasında olduğu sürece değeri 5 arttır
{
analogWrite(ledPin, solmaDegeri); // Solma değerini ledPin değişkenine ata
delay(10); // 10ms gecikme oluştur
}
for(solmaDegeri = 255 ; solmaDegeri >= 0; solmaDegeri -=5) // Solma değeri 255' e eşit ve sıfırdan küçük ise değeri 5 azalt
{
analogWrite(ledPin, solmaDegeri); // Solma değerini ledPin değişkenine ata
delay(10); // 10ms gecikme ver
}
}
Kod Arduino içerisine yüklendikten sonra, kurduğumuz devredeki led yanıyor ve parlaklığı azalarak sönüyor, sonra tekrar yanıyor ve döngü bu şekilde devam ediyor. PWM tekniğini kullanarak lede giden kare dalga sinyalinin genişliği ile oynayarak ledin parlaklığını değiştirebiliyoruz. NOT:
Eğer ledin daha hızlı veya daha yavaş parlamasını istiyorsanız, kod içerisindeki “delay” komutu yanındaki değeri yükseltip azaltabilirsiniz.
Arduino ile yapılan devrelerde, PWM veya herhangi bir kontrol uygulamasında kullanılan elemanlar genellikle düşük akım çeken belirli gerilim değerleri arasında çalışan elemanlardır. Arduino' nun üzerindeki entegrenin çıkışlarından alabileceğiniz akım ve gerilim değerleri sabittir. Eğer ki daha yüksek akım çekecek elemanlar kullanacaksanız veya daha fazla gerilime ihtiyacınız var ise Arduino ile beraber bir motor sürücü kullanabilirsiniz.