Bugüne kadar anlattığımız işlemler dijital mantık üzerine kurulu 1-0 mantığıydı. Ancak çevremizdeki sıcaklık, basınç,nem ve ışık gibi fiziksel olgular dijital değil analogtur. Bu fiziksel olayları algılayıp işlem yapabilmek için Analog bilgiyi dijitale çevirmemiz gerekmektedir. Bunun için ya ADC entegrelerini ya da içersinde ADC(Analog Digital Converter- Analog dijital Çevirici) birimi olan bir mikrodenetleyici kullanmalıyız.
Arduino Uno içersindeki Atmega328p mikrodenetleyicisi kendi ADC birimine sahip bir mikrodenetleyicidir. Genel olarak Arduino Uno kontrol kartımız 6 kanal (A0,A1,A2,A3,A4,A5) ve 10bitlik bir ADC birimine sahiptir.
Atmega328p mikrodenetlyicisi ADC özellikleri ile ilgili detaylı bilgiyi burada bulabilirsiniz.
Analog bilgi okumak için analogRead() fonksiyonunu kullanacağız.
analogRead(analog pin no) fonksiyonu parantez içersinde yazan analog pinden analog bilgiyi dijital olarak okumamızı sağlar.
analogRead(A0) ile analogRead(0) aynı anlama gelmektedir. ayı şekilde diğer pinler için :
analogRead(A1) = analogRead(1)-----------> 1 numaralı analog kanaldan okuma
analogRead(A2) = analogRead(2)-----------> 2 numaralı analog kanaldan okuma
analogRead(A3) = analogRead(3)-----------> 3 numaralı analog kanaldan okuma
analogRead(A4) = analogRead(4)-----------> 4 numaralı analog kanaldan okuma
analogRead(A5) = analogRead(5)-----------> 5 numaralı analog kanaldan okuma
analogRead(A6) = analogRead(6)-----------> 6 numaralı analog kanaldan okuma
Mikrodenetleyicimiz 10 bitlik olduğu için analogRead() fonksiyonundan 0 ... 1023 arası (1024 tane) değer dönecektir. Dönen değeri integer (int) tipinde olacaktır.
Örnek olarak Arduinonun Analog pinine bir potansiyometre bağlayarak 0-5V aralığını analog olarak okuyalım.
Önce devremizi hazırlayalım.
Şekilde de görüldüğü gibi potansiyometrenin orta ucu Arduinonun analog olan A0 pinine bağlıdır. Diğer uçları +5V ve GND bağlanmıştır.
Potansiyometrenin çevirme ucunu sağa ve sola çevirerek orta ucu ve oradanda Arduinonun A0 pinine 0 ile 5V arasında bir gerilim gelmesini sağlarız. A0 ucunun bağlı olduğu ADC birimi ise bu değerleri 10 bit çözünürlükte 0 ile 1023 arasında bir değere dönüştürecektir. Biz de programımızda analogRead() fonksiyonu ile ADC biriminin üretmiş olduğu bu değeri okuyabiliriz. programımızda okuduğumuz bu değeri SeriMonitör yardımı ile görüntüleyebiliriz.
int analog_deger;
void setup()
{
Serial.begin(9600);
}
void loop()
{
analog_deger = analogRead(A0); //
Serial.print("Okunan ADC degeri = ");
Serial.print(analog_deger);
Serial.println();
delay(250);
}
Ben de blogger üzerinden yazılar yayınlıyorum. Bloğuma reklam koymak istiyorum. Adsense i açtım ama hala reklam gelmedi nasıl olcak? Ne yapmam gerekiyor?
YanıtlaSilBelli bir takipçi sayısını bekliyor olabilir.
YanıtlaSil