Merhaba arkadaşlar. Bugün sizlerle birlikte Arduino ile analog değer okuma uygulaması yapacağız.

Gerekli malzemeler:

Şimdiye kadar Arduino’muzun hep dijital giriş/çıkış pinlerini kullandık. Fakat siz de fark etmişsinizdir ki Arduino kartımızda bir de “Analog Input” kısmı mevcut. Bu pinleri kullanarak dijitalden analoğa dönüşüm yaparak voltaj okumamız mümkün.

Analogdan Dijitale Çeviriciler (Analog-to-Digital Converter, ADC)

Arduino UNO kartımızdaki işlemcide, 10-bit çözünürlüğe sahip analogdan dijitale dönüştürücü (ADC – analog to digital converter) mecvuttur. Peki, bu 10-bit ne anlama geliyor? Bildiğimiz üzere Arduino’muzun mikrokontrolcüsü 5V gerilimle çalışmakta. Bu mikrokontrolcüde sahip olduğunu söylediğimiz 10-bit ADC, 0V ile 5V arası gerilimleri 210 = 1024 adım hassasiyet ile okuyabilir. Yani analog input pinlerinden birine vereceğimiz 0V gerilim bize 0 değerini; aynı şekilde 5V gerilim ise 1023 değerine denk düşüyor.  Eğer 5V’tan daha düşük bir gerilimi referansımızın üst noktası olarak almamız gerekirse, Arduino üzerinde bulunan AREF pinini kullanmamız ve kodda küçük bir değişiklik yapmamız gerekir. Bu pine herhangi bir gerilim uygulamadığımız takdirde ADC’miz 0-5V arasında çalışacaktır.

Potansiyometre

Potansiyometre, aslında çevremizde her gün kullandığımız cihazların neredeyse hepsinde mevcut olan bir devre elemanıdır. Örneğin, müzik setimizin ses seviyesini değiştirmek için çevirdiğimiz düğme bir potansiyometredir. En basit açıklama ile potansiyometre, değerini elimizle çevirerek ayarladığımız bir dirençtir. Mikrokontrolcü uygulamalarında ise genellikle gerilim bölücü olarak kullanılır.

potans

Potansiyometreyi bir yöne çevirdiğimizde yan yana olan iki bacağının direnci değişir. Bunu bir multimetreyle ölçerek görebiliriz. Biz bu uygulamamızda ise 0 ile 5V arasında voltaj değişimini sağlamak için potansiyometre kullanacağız.

Uygulamamızın ilk adımında sadece analog giriş pininden gelen gerilimin sayısal karşılığını seri porttan okuma işlemini yapacağız. Devremizi bu şekilde kuruyoruz:

Bu şekilde bağlantı yapıldığında, potansiyometremizin orta bacağında 0-5V arası değişen bir gerilim alabiliriz. Şimdi yazacağımız kodla bu gerilimin sayısal karşılığını seri porttan görebileceğiz:

int potPin = A0;
void setup() 
{
  Serial.begin(9600);
  Serial.println("Analog input okuma ornegi.");
}
void loop() 
{
  int deger  = analogRead(potPin);
  Serial.println(deger);
  delay(100);
}

Bu yazdığımız kodu Arduino’muza yükledikten sonra seri port ekranını açıyoruz ve potansımızı çevirmeye başlıyoruz. Değerlerdeki değişimi görebilirsiniz:

serial_port1

Şimdi ise analog giriş pininden okuduğumuz değere göre daha önce yaptığımız çoklu LED yakma uygulamasını yapalım. Önceki uygulamamızdan devre olarak tek farkı, potansiyometrenin eklenmesi:

Devre şeması 17/01/2017 tarihinde güncellenmiştir.

Bu devre ile kullanacağımız kod:

int potPin = 0;
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
int leds = 0;


void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}

void loop() 
{
  int deger  = analogRead(potPin);
  int yanan_ledsayisi = deger / 114;  //1023 / 9
  leds = 0;
  for (int i = 0; i < yanan_ledsayisi; i++)
  {
    bitSet(leds, i); 
  }
  registeraYaz();
}

void registeraYaz()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

Bu kod, potansiyometremizin voltaj değerini 8 LED için ayrı adımlara bölerek, gerilim arttıkça daha fazla LED’in yanmasını sağlıyor. Bu uygulamadaki potansiyometreyi, analog çıkışlı başka elemanlarla değiştirerek sizler de farklı uygulamalar yapabilirsiniz. Örneğin LM35 sıcaklık sensörüyle bir sıcaklık seviyesi göstergesi ya da bir mikrofon ile birlikte kullanacağınız preamfi devresiyle ses şiddeti göstergesi (vumetre) yapmak mümkün. Biz de bir sonraki uygulamamızda ışık şiddetine göre artan sayıda LED yakma işlemini yapacağız. Bir sonraki derse devam edecekseniz devrenizi sökmeyin 🙂

12 Yorumlar

  1. öncelikle böyle faydalı bir site hazırladığınız çok teşekkür ederim emeği geçen herkesin ellerine sağlık
    hocam şuan 220 direnç yok bende ledleri direnç bağlamadan takdım çalışmadı dirençle mi alakalı

  2. İyi günler. Potansiyometre değerlerini kontrol etmek için dediğiniz kodları kullandık fakat potansiyometreyi çevirmediğimiz halde 320 ile 298 arasında sürekli bir artıp bir azalıyor. Bunun sebebi ne olabilir ?

CEVAP VER