Arduino İle Analog Veri Nasıl Okunur?

Bu yazımızda arduino ile analog veri nasıl okunacağını öğreneceğiz. İlk olarak analog ve dijital verinin ne olduğunu bilmemiz gerekmetedir.

Analog veri, zamana göre değişen başka bir türden niceliği temsil edip kendisi de zamana göre değişen ve sürekli bir özellik gösteren veridir. Farklı bilimlerde de köken olarak farklı olmakla birlikte aynı işlevi gören ve birbirine karşılık gelen yapılardan her birine verilen isim olan analog kelimesi burada da aynı şekilde büyüklük değişimleri açısından başka bir sinyalin eşdeğeri olan sinyallere verilen isimdir. Böylece bir ortamdaki veri başka bir ortamda temsil edilebilir ve işlenebilir hale gelir. Örneğin analog bir ses sinyali, ses dalgalarının oluşturduğu basınç kuvvetini elektrik ortamında gerilim ile eşleştirerek temsil edilebilmesini sağlar. Analog ses sinyalinde gerilim değeri zamana göre sürekli bir değişiklik gösterir ve bu değişiklik orijinal ses sinyalindeki ses dalgalarının oluşturduğu basınç kuvvetinin değişimine paralellik gösterir. Yani diğer bir deyişle analog bir ses sinyalinde gerilim değeri orijinal ses sinyalindeki ses dalgalarının basınç kuvveti büyüklüğüne endekslenmiştir.

Sayısal veridijital veri veya dijital sinyal, sayısallaştırılmış sinyal. Bir analog sinyalden belirli örnekler alınır ve analog sinyalin tam karşılığı olmayan dijital sinyal oluşturulur. Girişteki verinin saklanma veya aktarılma şeklinin değiştirilmesiyle elde edilir.

Sayısal veri ile analog veri arasındaki en büyük fark, analog verinin sürekli (İngilizce: continuous) olan bir ölçekte, sayısal verinin ise rakamlarla sınırlı olan, sürekli olmayan (İngilizce: discrete) bir ölçekte var olmasıdır.Sayısal veri, rakamların arka arkaya dizilmesi ile elde edildiği için üzerinde biçim değişikliği işlemi yapılabilir. Bu biçim değiştirme, birçok alanda karşımıza çıkabilir:

  • Sayısal ses alanında, WAV biçimindeki ses MP3 biçimine çevrilebilir
  • Sayısal resim alanında, PNG biçimindeki bir resim JPEG biçimine çevrilebilir
  • Herhangi bir veri, RSA kullanılarak şifrelenebilir.

Diiital veri: Olgu, kavram ya da komutların, iletişim, yorum ve işlem için elverişli biçimsel ve uzlaşımsal bir gösterimidir.

Potansiyometre İle Analog Veri Okuma

Uygulamamızı yapmadan önce potansiyometre hakkında temel bir bilgi edineceğiz.

Potansiyometre Nedir ve Çalışma Mantığı Nasıldır?

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.

Potansiyometre

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.

Gerekli Malzemeler

  • Arduino Uno
  • 10kΩ potansiyometre
  • İki Ucu Erkek Jumper Kablo

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

Bağlantı Şeması

Bu şekilde bağlantı yapıldığında, potansiyometremizin orta bacağında 0-5V arası değişen bir gerilim alabiliriz.

Potansiyometreden Veri Okuma Kodu

#define potpin A0 //Potansiyometreyi A0 pinine tanımlıyoruz
int deger = 0; //"Değer" adlı 0 başlangıçlı bir değişken tanımlıyoruz
void setup() {
  Serial.begin(9600); //9600 Baund bir seri haberleşme başlatıyoruz
  Serial.println("Pot Deger Okuma"); //Seri monitörde bir kez gönderilen bir mesaj tanımlıyoruz
}
void loop() {
  deger = analogRead(potpin); //"Değer" değişkeni potansiyometrenin değerini okuyup buna göre değişir
  Serial.println(deger); //Okunan değer seri monitörde mesaj olarak gönderilir
  delay(100); //Bu işlem 100 milisaniye aralıklarla yapılır
}

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

Seri Port Görüntüsü

Yaptığımız uygulamaya ek olarak bu değerler ile voltaj seviyelerini nasıl eşleştirebileceğimizi görelim:

#define potpin A0
int deger = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("Pot Deger Okuma");
}
void loop() {
  deger = analogRead(potpin);
  float gerilim = (5.00 / 1024.00) * deger; //5V gerilim, 1024 bite bölünür ve potansiyometreden gelen değer ile çarpılır; değerin eşiti olan gerilim hesaplanır
  Serial.println(gerilim); //Hesaplanan gerilim seri monitörde mesaj olarak gönderilir
  delay(100);
}