PWM nedir? Arduino ile nasıl uygulanır?
Merhaba arkadaşlar, bu yazımızda Arduino ile PWM uygulamasını göreceğiz. Arduino ile yeni tanışan arkadaşlarımız için, ileriki robot projelerimizde temel oluşturacak birkaç ufak uygulama yaparak kod yazmaya elimizi alıştıracağız.
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.
-Arduino Uno
-Led
-220 Ohm Direnç
-Breadboard (isteğe bağlı)
Windows’a Arduino yazılımı kurulumu rehberi için buraya, Mac OS X için buraya tıklayınız.
Aşağıdaki kodları yazıyoruz. Kopyalayıp yapıştırmak da bir seçenek tabi ama ben elinizin alışması ve kodların amacını anlamanız için tek tek anlayarak yazmanızı tavsiye ederim.
Not: Kodların karşılarındaki // ‘dan sonrası açıklama olarak yazılmıştır, kodlara herhangi bir etkisi bulunmaz. Eğer kodlarda anlamadığınız yerler olursa yazının altına yorum bırakarak bana sorabilirsiniz.
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
}
}
Evet arkadaşlar kodu yazdık. Arduino’ muzu bilgisayara bağlıyoruz ve kodu içerisine upload ediyoruz. Eğer Arduino içerisine kod atmayı bilmiyorsanız buraya tıklayarak öğrenebilirsiniz.
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.
Bu yazımızda PWM’ den ve Arduino üzerinde kullanımından ufak bir örnekle bahsettik. İlerleyen yazılarımızda daha farklı uygulamalar ile devam edeceğiz. Tüm yapacağımız uygulamalar ilerideki daha karmaşık proje çalışmalarımız için temel oluşturacak.
Şimdilik bu kadar arkadaşlar bir sonraki yazımızda görüşmek üzere,
Eğer sorularınız olursa yorum bölümüne bekliyorum.
PWM nedir?
Arduino ile PWM Uygulaması:
Malzemeler:
-Led
-220 Ohm Direnç
-Breadboard (isteğe bağlı)
Devre Şeması:
Arduino Programı:
Şimdi Arduino Geliştirme ortamını açıyoruz. Eğer henüz kurmadıysanız bir önceki yazılarımdan kurulum detaylarını öğrenebilirsiniz.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
{
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
}
{
analogWrite(ledPin, solmaDegeri); // Solma değerini ledPin değişkenine ata
delay(10); // 10ms gecikme ver
}
}
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
*/
int ledPin = 5 ;
void setup()
{
}
void loop()
{
for(int fadevalue = 0;fadevalue <= 255;fadevalue +=5)
{
analogWrite(ledPin,fadevalue);
delay(30);
}
for(int fadevalue = 255 ;fadevalue >= 0;fadevalue -=5)
{
analogWrite(ledPin, fadevalue);
delay(30);
}
}
Hiç yorum yok:
Yorum Gönder