Arduino ile analog veri okuma

Arduino ile Analog Veri Okuma

Bu yazımızda arduino programlama dili yani arduino komutları kullanarak arduino ile analog veri okuma işleminin nasıl yapılacağını öğreneceksiniz.

 

 

Öncelikle bilmemiz gereken, analog ve dijital(digital) olmak üzere iki sinyal vardır.

Analog sinyal aslında yaşadığımız her an duyu organlarımızla alıp işlediğimiz verilerdir. Mesela gözlerimiz sonsuz rengi ayırt edebilir, kulaklarımızın duyabileceği sonsuz ses tonu vardır, burnumuzla koklayabileceğimiz sonsuz sayıda koku olabilir. Analog sinyaller sonsuz çeşitliliktedir.

Dijital sinyal ise, belirli sınırları olan sinyal çeşididir. 

Çok iyi anlaşılmadı değil mi? Şimdi görsellerle ve örneklerle ayrımı daha iyi anlayacaksınız.

 

analog sinyal

arduino analog sinyal grafiği

analog sinyal

arduino analog sinyal grafiği 2

 

Yukarıda görüldüğü üzere analog sinyal belirli aralıkta sınırlı olsa da, bu aralıkta sonsuz değer alabiliyor. Örneğin, 0-5v arasında bir analog sinyal, 1 volt, 2volt gibi değerler alabileceği gibi 3.1volt, 4.9volt, 2,333volt gibi daha ayrıntılı değerler de alabilir.

 

dijital sinyal

arduino dijital sinyal grafiği

 

Yukarıda görüldüğü üzere dijital sinyaller sonlu olası değerler alabilir. Örneğin, yaygın olarak kullanılan 0-5v arasındaki bir dijital sinyal, ya 0 volt değeri alır ya da 5 volt değeri alır. 

 


 

Analog sinyali ve  dijital sinyali öğrendik. Şimdi gelelim, Arduino ile bu sinyallerin nasıl kullanığına. Örnekler üzerinden gitmek daha anlamlı olacaktır diye düşünüyorum.

Örneğin arduino ile bir led yakmak istiyorsunuz fakat potansiyometre(pot) ile ledin parlaklığını  da ayarlamak istiyorsunuz. Peki potansiyometreden ayarları her değiştiğinde arduino bunu nasıl algılayacak? İşte burada yapılacak işlem, arduinonun analog pinlerinden bir tanesine potansiyometreyi bağlamak ve potansiyometredeki değeri analog olarak okumak. Okunan değere göre de lede gönderilecek voltajı değiştirerek ledin parlaklığını ayarlamak mümkün olacak.

Bir örnek daha vermek istiyorum. Otomatik bahçe sulaması yaptığımız bir projemiz olsun. Topraktaki nemi algılayıp, su pompasını çalıştıracağımız bir proje olacak. Toprak nem sensörü, topraktaki nem değerini yine bir analog pin vasıtasıyla arduinoya iletecek ve bizde arduino kodları kullanarak hangi nem değerinde sulama yapmasını istiyorsak, su pompasına çalış emri göndereceğiz

 

AnalogRead Komutu

 

AnalogREAD() komutu Arduinonun analog pinlerinden analog sinyalleri okur. Bu sinyal 0-5v arasında değişen bir sinyaldir.

Arduino da 10-bitlik analog dijital dönüştürücü bulunmaktadır. Bu, 0 ile 5 volt arasındaki analog giriş gerilimlerini 0 ile 1023 arasında tamsayı değerlere dönüştürür. Yani arduinonun analog pinlerinden okunan değerler 0-1023 arasında olur. 5 volt değeri, 10bit dönüştürücü(2 üzeri 10 değerinden dolayı 1024 sayısı elde edilir) ile dönüştürüldüğünden 5/ 1024 birim veya birim başına 0,0049 volt (4,9 mV) okuma değerleri arasında bir çözünürlük sağlar.

 

AnalogRead() Kullanımı

 

 

.
analogRead(pinNumarasi)
.

 

uyarı Eğer analogRead ile sinyal okuduğunuz pine bir şey bağlı değilse, bu pinden okunan değer bir dizi faktöre bağlı olarak dalgalanır.(0-1023 arasında gezinir)

 

Örnek Kod

 
void setup() {            
  Serial.begin(9600);     
}

void loop() {
  int sensorDegeri= analogRead(A0);
  Serial.println(sensorDegeri);
  delay(5);  
}

 

Şimdi aşama aşama kodları açıklayalım.

 

 
void setup() {            
  Serial.begin(9600);     
}

Setup fonksiyonunun temel görevi, yapacağımız proje için Arduino’nun ön ayarların yapılmasını yani kurulumunun yapılmasını sağlamaktır. Setup fonksiyonu ile ilgili daha fazla bilgi almak istiyorsanız Arduino Programlama Dili ve Arduino Programlama yazımızı okuyabilirsiniz.

Setup fonksiyonunda Serial.begin(9600) yazılmış. Bu komut Arduino ile bilgisayarın usb portunun seri haberleşme yapmasının yani veri gönderip almasının başlatıldığını belirten komuttur. 

ÖnemliSerial.begin komutu yazılmadan seri haberleşme yapılamaz.

Arduino IDE deki SERİ MONİTÖR de gelen verileri görmek için kullanılır. Aşağıdaki görselden seri monitörün nasıl açıldığını görebilirsiniz. Klavye kısayolundan açmak isterseniz CTRL + SHIFT + M tuşlarına basabilirsiniz.

 

Arduino seri port ekrani

Arduino seri port ekrani

Arduino seri port ekrani

Arduino seri port ekrani

 

 
void loop() {
  int sensorDegeri= analogRead(A0);
  Serial.println(sensorDegeri);
  delay(5);  
}

 

Loop fonksiyonunun temel görevi,  Arduino çalıştığı sürece, içerisindeki komutları sürekli olarak tekrar eder. Loop fonksiyonu ile ilgili daha fazla bilgi almak istiyorsanız Arduino Programlama Dili ve Arduino Programlama yazımızı okuyabilirsiniz.

Loop fonksiyonu içerisinde “int sensorDegeri= analogRead(A0);” kod satırını açıklayalım. int tamsayı değişken oluşturmak için kullanılır. “sensorDegeri” bizim değişkene verdiğimiz bir isim. 

“analogRead(A0)” komutu 0 numaralı analog pinden analog sinyal okur. Okunan veri ya da sinyal sensorDegeri adlı değişkene kaydedilir.

Son olarak  “Serial.println(sensorDegeri);” komutuyla seri port ekranına sensorDegeri isimli değişkenin içindeki veri yazılır. Yani analog pinden okunan değer ekranda görünür.

 

Cevap

This site uses Akismet to reduce spam. Learn how your comment data is processed.