Arduino Potansiyometre ile LED Yakma

Arduino mikrokontrolcüsü ile bu yazımda potansiyometre kullanarak LED parlaklığı ayarlama uygulaması yapacağız. Bir önceki yazımda potansiyometre ile analog veri okuma ve seri haberleşme ile verileri monitörde görebilme uygulamasını yapmıştık. Bu uygulamada ise potansiyometre ile analog verileri okuyup gelen veri ile Arduino kartının PWM pinlerine bağlı LED’ in parlaklığını değiştireceğiz. Öncelikle PWM tekniğinin çalışma prensibinden bahsedelim.

PWM (Pulse Width Modulation) sinyal genişlik modülasyonudur. Bir sinyalin periyoduna oranla lojik-1 ve lojik-0 vererek sinyalin kırpılmasına olanak sağlak. Bu teknik ile transistör, tristör, mosfet, IGBT gibi yarıiletken güç elemanlarının anahtarlanarak veya tetiklenerek iletim ve kesim süreleri ayarlanabilmektedir.

Yukarıdaki resimde görüldüğü üzere LED’ in yanabilmesi için gerekli olan sinyal PWM tekniği ile ayarlanabilmektedir. LED’ in sürekli yanabilmesi için aralıksız 5V sinyal verilmesi gerekir. Eğer LED parkalığının azaltılması isternirse ya LED’ in anotuna bağlı olan direnç değeri düşürülmelidir ya da PWM tekniği ile LED anot ve katotu arasına uygulanan potansiyel farkın yani gerilimin düşürülmesi gerekir.

PWM tekniğinde sinyalin ne kadarının kesildiği ne kadarının iletildiği duty cycle olarak adlandırılan doluluk oranı ile belirlenir. Doluluk oranının %50 olması demek 5V ile çalışan bir LED için 2.5V anlamına gelir. Dolayısıyla parlaklık ve akım da V = I x R yasasına bağlı olarak yarıya düşmektedir.

Kullanılacak Malzemeler

  • 1 adet Arduino UNO
  • 1 adet breadboard
  • 1 adet 10k ohm potansiyometre
  • 1 adet LED
  • 1 adet 330 ohm direnç
  • 5 adet erkek-erkek jumper

Devre Şemasının Oluşturulması

Bu projede mikrokontrolcü olarak Arduino UNO geliştirme kartını kullanacağız. Analog ve PWM pini olan farklı bir Arduino modeli de kullanılabilir.

Arduino UNO geliştirme kartımızın 5V ve GND pinleri birer erkek-erkek jumper ile breadboard üzerindeki potansiyometrenin 1. ve 3. bacaklarına bağlanmalıdır. Ardından potansiyometrenin sinyal bacağı olan orta pini bir erkek-erkek jumper ile Arduino kartımızın analog pinlerinden birine takılmalıdır. Bu 3 bağlantı yapıldığından Arduino ile analog veri okuma işlemi için gerekli olan devre oluşmuş olacaktır.

Potansiyometre bağlantısını yaptıktan sonra Arduino kartının PWM çıkışlarından biri 330 ohm direnç ile LED in anotuna bağlanmalıdır. Sonrasında LED in katotu Arduino kartının GND pinine bağlanarak devre tamamlanmalıdır. Geriye kalan tek şey PWM tekniği ile LED parlaklığını ayarlayabileceğimiz kodları yazmaktır.

Yukarıdaki devre şemasında da görüldüğü üzere Arduino ile potansiyometre aracılığıyla analog veri okuyarak PWM tekniğiyle LED parlaklığını ayarlama uygulamasını breadboard üzerinde yapabiliriz.

Yazacağımız kodlar ile potansiyometreden analog değerleri okuyabilir ve elde edilen bu değerlerden PWM sinyali üretebiliriz. Devrenin çalışabilmesi için gerekli kod aşağıda verilmiştir.

PWM ile LED Parlaklığı Ayarlayabilmek için Kodlar

Arduino UNO kartımızın AO analog pinine bağladığımız potansiyometrenin sinyal bacağı ve PWM sinyali ile yakacağımız LED yazılan kodun ilk iki satırında tanımlanmıştır.

PWM sinyalini kullanırken Arduino kartının PWM pinleri kullanılmalıdır. Başka bir pin ile de aynı işlev yerine getirilebilir lakin bu Arduino üzerindeki işlemciyi oldukça yorar. Bu yüzden bu devrede özel olarak PWM için konumlandırılmış pinlerin kullanılması gerekmektedir.

Potansiyometrenin sinyal bacağı ile okuduğumuz analog veriler Arduino analog pinlerinden dolayı 10 bit çözünürlüğe sahiptirler. Lakin PWM sinyali vereceğimiz pinler 8 bit çözünürlüğe sahiptir. Bu durumda 0-1023 arasında olan analog verinin 0-255 arasında olacak şekilde düzenlenmesi gerekmektedir. (2^10 = 1024 ; 2^8 = 256) Bu işlemin yapılabilmesi için analogRead() ile okunan verilerin 4′ e bölünmesi yeterlidir. Bu çevirme işlemi aynı zamanda map() fonksiyonu ile de kolaylıkla yapılabilmektedir.

map(a, x1, x2, y1, y2) komutu a değişkenine ait x1-x2 arasındaki veriyi y1-y2 arasında olacak şekilde düzenlemektedir.

#define pot A0
#define led 5

void setup()
{
  //dijital pin kullanılmayacağı için tanımlama yapılmadı
}

int deger = 0;
void loop()
{
  deger = analogRead(pot);
  deger = map(deger,0,1023,0,255);
  analogWrite(led, deger);  
}

Yukarıdaki kodları Arduino UNO geliştirme kartımıza yüklediğimizde potansiyometrenin milinin her değiştirilmesinde LED in parlaklığının değiştiği gözlemlenmektedir.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


The reCAPTCHA verification period has expired. Please reload the page.