Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Dersleri 7: Analog Girişler
#1
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.jpg

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:

analog_read1_bb.png

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.png


Ş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:

Bu devre ile kullanacağımız kod:analog_read2_updated_bb-1024x939.png
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 1f642.svg
1
Ara
Cevapla PGM
Teşekkür verenler: admin


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi



Grafik Destek Platformu | Aslında Herşey -

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping