Arduino'da Analog Okuma
Bu eğitimde, size AnalogRead işlevini kullanmayı öğreneceksiniz Arduino . Analog voltajı veya analog sensör değerini ölçmeniz gereken ve size voltaj şeklinde çıktı veren bir proje üzerinde çalışıyorsanız, o zaman Arduino'nun analogdan dijitale dönüştürücüsünü kullanmanız gerekir . AnalogRead ve AnalogWrite , sensör değerleri ile aynı voltajlar gibi değişken değerlerle başa çıkmak için kullanılan iki işlevdir. Bir Arduino, analog etki alanındaki parametreleri ölçmemizi sağlayan bir dizi analog girişe sahiptir. Bu olabilir voltaj , akım , direnç, ısı , ışık ve böyle devam eder.
Arduino Analog Okuma Pimleri
Arduino kartındaki analog pinler 'A' harfiyle işaretlenmiştir, örneğin a0, A1, A2, A3, A4. Bu, dijital dönüştürücü kanallarına 5 yerleşik analogu olduğu anlamına gelir.
Analog sinyalleri ölçmek için yalnızca Arduino'nun bu analog pinleri kullanılabilir. Ancak daha fazla kanal kullanmak istiyorsanız, Arduino ile harici ADC arabirimi oluşturabilirsiniz. Şu kılavuzları kontrol edin:
Her analog kanal 10 bitlik bir ADC'dir. Bu nedenle, her ADC 1024 (2 ^ 10) voltaj seviyesini ölçebilir ve her voltaj seviyesinin veya adımının büyüklüğü bu formülle belirlenebilir:
Ayrık Adım = Vref / toplam adımlar = 5/1023 = 0.0048874 = 4.88mv
Arduino ADC Çözünürlüğü
Anlamak için, ADC çözünürlüğü 2 bit çözünürlük ve 4 volt referans voltajı olan bir ADC örneği alalım, voltajı yalnızca 2 ^ 2 olan dört olası sonuç değeri ile temsil edebilir. Giriş voltajı ve dijital çıkış bu tabloya göre olacaktır:
Analog Gerilim | Dijital Çıkış |
---|---|
0 ile 0,99 volt | 0 |
1 ila 1,99 volt | 1 |
2 - 2,99 volt | 2 |
3 - 3,99 volt | 3 |
4 volt | 4 |
Yukarıdaki tablodan da görebileceğiniz gibi, 2-bit ADC için, bir ayrık adım bir volt analog girişe eşittir ve bu böyle devam eder. Yukarıdaki tablodan küçük bitlerin ADC'nin çok fazla hataya neden olduğunu da gösterebilirsiniz. Bu 2 bitlik ADC, 0-1, 1-2, 2-3 ve 3-4 arasındaki voltaj seviyesini ölçemez. Bu sayılar arasındaki herhangi bir voltaj değeri hata olarak kabul edilecektir. Bu hata, daha yüksek bit ADC kullanılarak en aza indirilebilir.
Daha önce de bahsettiğimiz gibi, Arduino'nun her analog kanalı 10 bit uzunluğundadır. Bu, Arduino ADC aralığının 0 ila 1023 arasında olduğu anlamına gelir, dolayısıyla 1024 olası değer veya 10'un gücünde 2'ye sahiptir. Yani Arduino'nun 10 bit çözünürlüğe sahip bir ADC'si vardır.
Normal analogRead kullanımında referans voltajı, kartın çalışma voltajıdır. Uno, Mega panolar, 5V çalışma gerilimi gibi daha popüler Arduino kartları için. Dolayısıyla, 5V'luk bir referans voltajınız varsa, analogRead () tarafından döndürülen her birim 0,00488 V değerindedir. (Bu, 1024'ü 5V'a bölerek hesaplanır).
AnalogRead () Fonksiyonu Arduino
Arduino AnalogRead fonksiyonu 0 ile 5 volt arasındaki voltajı ölçmek için kullanılır ve 0 ile 1023 arasında dijital bir değere dönüştürür. 1023 değerinin nedeni analogdan dijitale dönüştürücülerin 10 bit uzunluğunda olmasıdır.
Örneğin ADC pinine 0 volt uygularsak bir analogRead () çıkışı sıfır dijital değer sağlayacaktır. Benzer şekilde ADC pinine 5 volt uygularsak bir analogRead () çıkışı 1023 dijital değer sağlayacaktır. (0-5) volt arasındaki voltaj bu değerler arasında sayılar verecektir.
Analog girişi almak için Arduino, kartların çoğunda 0 ila 5 analog pinleri kullanır. Bu pinler, analog bilgi çıkışı sağlayan bileşenlerle kullanılmak üzere tasarlanmıştır ve analog giriş için kullanılabilir. Okumak için kullanılan komut
- "AnalogRead (pinNumber);" pinNumber, analog bileşenlerin Arduino'da bağlı olduğu pinleri temsil eder.
- Örneğin: int sensorvalue = analogRead (A2) ;. İşlev, Arduino kartındaki analog pinleri programlamak ve adreslemek için kullanılır ve ayrıca 0 ila 1023 arasındaki analog giriş okumasını döndürecektir.
Meausre Analog Signal nasıl kullanılır?
Arduino kartındaki analog pin A0'a bir potansiyometre veya değişken direnç bağlayalım ve Arduino Board'a güç sağlamak için besleme sağlayalım.
En başta, pimi bir giriş olarak tanımlamanız gerekir:
pinMode(A0, INPUT) ;
Ve sonra analog gerilimleri analog pin A0 üzerinden x'e okumak:
int x = analogRead(A0) ;
X'te depolanan bu değer, 0 ila 1023 arasındaki değerdir, çünkü Arduino 10-bit ADC'ye (2 * 10 = 1023) sahiptir ve int x boyutu 10 bitten büyük olduğu için bu değeri int'e depolamaktan daha iyidir.
Sonunda, Seri.print () gibi seri iletişim kütüphanesi işlevlerini kullanarak analog değeri Arduino seri monitöründe yazdırın.
Serial.print ( “Analog value : “);
Serial.println (x);
Analog değer değiştiğinde, x de değişmelidir. Pim başka bir dijital pime bağlanırsa analog voltaj asla okunamaz. Analog voltajlar sadece karttaki analog pinlerde okunabilir. 0 numaralı pime uygulanan 2,5 V'luk bir voltaj varsa, analogRead (0) 512 değerini döndürür, bu, analog voltajın herhangi bir dijital pinde okunamayacağı anlamına gelir.
Şematik diyagram
Bu bağlantılara göre şematik diyagramı yapın.
Arduino AnalogRead Örnek Kodu
Bu kodu Arduino'ya yükleyin. Bu kod, saniyede bir Arduino'nun A0 pininden gelen analog sinyali ölçer ve değeri seri monitöre yazdırır.
//let potentiometer is connected at analog pin 4:
int analogPin = A0;
int val = 0;
//variable to store the value read
void setup ()
{
Serial.begin (9600);
//Setup serial
}
Void loop ()
{
Val = analogRead (analogPin);
//Used to read the input pin
Serial . Println (val);
delay(1000);
}
Kod Nasıl Çalışır?
AnalogRead () işlevi, bu için ADC'nin çözünürlük olup, 0 to1023 değeri. Çözünürlük, bir şeyin sayısal olarak temsil edilme derecesidir. Çözünürlük ne kadar yüksek olursa , bir şeyin temsil edilebileceği daha yüksek doğruluk. Çözünürlüğü çözünürlük bit sayısı cinsinden ölçün .
Örneğin, 1 bitlik bir çözünürlük yalnızca iki (birin kuvvetine iki) sıfır ve bir değerine izin verir. 2 bitlik bir çözünürlük, dört (ikinin üssü ikiye kadar) sıfır, bir, iki ve üç değerine izin verir. İki bit çözünürlükle beş voltluk bir aralığı ölçmeye çalışsaydık ve ölçülen voltaj dört volt olsaydı, ADC'miz, dört volt 3.75 i le 5V arasında düştüğü için 3 sayısal bir değer döndürecekti.
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.