İçindekiler:
- Adım 1: Revizyon
- Adım 2: AnalogRead() Neden 0 ile 1023 Arasında Bir Değer Döndürüyor?
- Adım 3: Peki AREF Nedir?
- Adım 4: Harici AREF
- Adım 5: Dahili AREF
Video: Arduino AREF Pimi: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu eğitimde, Arduino'nuzdaki analog giriş pinlerini veya AREF piniyle birlikte uyumlu kartınızı kullanarak daha küçük voltajları nasıl daha yüksek doğrulukla ölçebileceğinize bakacağız. Ancak önce sizi hızlandırmak için bazı revizyonlar yapacağız. AREF ile ilk kez çalışmadan önce lütfen bu yazıyı tamamen okuyun.
Adım 1: Revizyon
Analog giriş pinlerinden birini kullanarak sensörlerden gelen bir elektrik akımının voltajını ölçmek için Arduino analogRead() işlevini kullanabileceğinizi hatırlayabilirsiniz. analogRead() işlevinden döndürülen değer, sıfır ile 1023 arasında olacaktır; sıfır, sıfır voltu temsil eder ve 1023, kullanımdaki Arduino kartının çalışma voltajını temsil eder.
Ve çalışma voltajı dediğimizde - bu, güç kaynağı devresinden sonra Arduino'nun kullanabileceği voltajdır. Örneğin, tipik bir Arduino Uno kartınız varsa ve onu USB soketinden çalıştırıyorsanız - elbette, bilgisayarınızın veya hub'ınızdaki USB soketinden karta 5V kullanılabilir - ancak akım etrafta dolaştıkça voltaj biraz azalır. mikrodenetleyiciye giden devre – veya USB kaynağı henüz sıfır durumda değil.
Bu, bir Arduino Uno'yu USB'ye bağlayarak ve 5V ve GND pinleri boyunca voltajı ölçmek için bir multimetre seti koyarak kolayca gösterilebilir. Bazı kartlar 4,8 V kadar düşük, bazıları daha yüksek ancak yine de 5V'un altında dönecektir. Bu nedenle, doğruluk için uğraşıyorsanız, kartınıza DC soketi veya 9V DC gibi Vin pini aracılığıyla harici bir güç kaynağından güç verin. Daha sonra güç regülatör devresinden geçtikten sonra, örneğin görüntü gibi güzel bir 5V'a sahip olacaksınız.
Herhangi bir analogRead() değerinin doğruluğu, gerçek bir 5 V olmamasından etkileneceğinden bu önemlidir. Herhangi bir seçeneğiniz yoksa, voltajdaki düşüşü telafi etmek için çiziminizde bazı matematik işlemleri kullanabilirsiniz. Örneğin, voltajınız 4,8V ise – 0~1023 analogRead() aralığı 0~4,8V ile ilgili olacaktır ve 0~5V ile ilgili olmayacaktır. Bu önemsiz görünebilir, ancak voltaj olarak bir değer döndüren bir sensör kullanıyorsanız (örneğin, TMP36 sıcaklık sensörü) - hesaplanan değer yanlış olacaktır. Bu nedenle, doğruluk adına harici bir güç kaynağı kullanın.
Adım 2: AnalogRead() Neden 0 ile 1023 Arasında Bir Değer Döndürüyor?
Bu, ADC'nin çözünürlüğünden kaynaklanmaktadır. Çözünürlük (bu makale için), bir şeyin sayısal olarak temsil edilebilme derecesidir. Çözünürlük ne kadar yüksek olursa, bir şeyin temsil edilebileceği doğruluk da o kadar yüksek olur. Çözünürlüğü, çözünürlük bitlerinin sayısı cinsinden ölçeriz.
Örneğin, 1 bitlik bir çözünürlük yalnızca iki (birin iki üzeri) değere izin verir – sıfır ve bir. 2 bitlik bir çözünürlük dört (iki üzeri iki) değere izin verir – sıfır, bir, iki ve üç. İki bitlik bir çözünürlükle beş voltluk bir aralığı ölçmeye çalışırsak ve ölçülen voltaj dört volt olsaydı, ADC'miz sayısal bir değer 3 döndürürdü - dört volt 3,75 ile 5V arasında düştüğü için. Bunu görüntü ile hayal etmek daha kolay.
Bu nedenle, 2 bit çözünürlüğe sahip örneğimiz ADC ile voltajı yalnızca dört olası sonuç değeriyle temsil edebilir. Giriş voltajı 0 ile 1,25 arasında düşerse, ADC sayısal olarak 0 döndürür; Voltaj 1,25 ile 2,5 arasında düşerse, ADC sayısal bir değer 1 döndürür ve bu böyle devam eder. Arduino'muzun ADC aralığı 0~1023 ile - 1024 olası değere sahibiz - veya 2 üzeri 10. Yani Arduino'larımızda 10 bit çözünürlüğe sahip bir ADC var.
Adım 3: Peki AREF Nedir?
Uzun lafın kısası, Arduino'nuz bir analog okuma aldığında, kullanılan analog pinde ölçülen voltajı referans voltajı olarak bilinenle karşılaştırır. Normal analogOkuma kullanımında referans voltajı, kartın çalışma voltajıdır.
Uno, Mega, Duemilanove ve Leonardo/Yún kartları gibi daha popüler Arduino kartları için 5V çalışma voltajı. Arduino Due kartınız varsa, çalışma voltajı 3,3V'dir. Başka bir şeyiniz varsa – Arduino ürün sayfasını kontrol edin veya pano tedarikçinize sorun.
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). 0 ile 2 veya 0 ile 4.6 arasındaki voltajları ölçmek istersek ne olur? ADC, voltaj aralığımızın %100'ünün ne olduğunu nasıl bilecek?
AREF pininin sebebi de burada yatıyor. AREF, Analog REFERANS anlamına gelir. Arduino'yu harici bir güç kaynağından bir referans voltajı beslememizi sağlar. Örneğin, maksimum 3.3V aralığında voltajları ölçmek istiyorsak, AREF pinine güzel bir pürüzsüz 3.3V beslerdik - belki bir voltaj regülatörü IC'sinden.
Daha sonra ADC'nin her adımı yaklaşık 3.22 milivolt'u temsil eder (1024'ü 3.3'e bölün). Sahip olabileceğiniz en düşük referans voltajının 1,1V olduğunu unutmayın. AREF'in iki biçimi vardır - dahili ve harici, o yüzden onları kontrol edelim.
Adım 4: Harici AREF
Harici bir AREF, Arduino kartına harici bir referans voltajı sağladığınız yerdir. Bu, düzenlenmiş bir güç kaynağından gelebilir veya 3.3V'a ihtiyacınız varsa, Arduino'nun 3.3V pininden alabilirsiniz. Harici bir güç kaynağı kullanıyorsanız, GND'yi Arduino'nun GND pinine bağladığınızdan emin olun. Veya Arduno'nun 3.3V kaynağını kullanıyorsanız - sadece 3.3V pininden AREF pinine bir jumper çalıştırın.
Harici AREF'i etkinleştirmek için void setup() içinde aşağıdakini kullanın:
analogReferans(HARİCİ); // referans voltajı için AREF kullan
Bu, referans voltajını AREF pinine bağladığınız şeye göre ayarlar – ki bu elbette 1,1V ile kartın çalışma voltajı arasında bir voltaja sahip olacaktır. Çok önemli not – harici voltaj referansı kullanırken, analog referansı HARİCİ olarak ayarlamanız gerekir. analogRead()'i kullanmadan önce. Bu, kart üzerindeki mikrodenetleyiciye zarar verebilecek aktif dahili referans voltajını ve AREF pinini kısa devre yapmanızı önleyecektir. Uygulamanız için gerekirse, aşağıdakilerle AREF için kartın çalışma voltajına geri dönebilirsiniz (yani - normale dönebilirsiniz).
analogReferans(VARSAYILAN);
Şimdi iş yerinde harici AREF'i göstermek için. 3,3V AREF kullanarak, aşağıdaki çizim A0'dan gelen voltajı ölçer ve toplam AREF yüzdesini ve hesaplanan voltajı görüntüler:
#include "LiquidCrystal.h"
LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
int analoggiriş = 0; // analog pinimiz
int analog miktar = 0; // gelen değeri saklar kayan nokta yüzdesi = 0; // yüzde değerimizi saklamak için kullanılır float voltajı =0; // voltaj değerini saklamak için kullanılır
geçersiz kurulum()
{ lcd.başla(16, 2); analogReferans(HARİCİ); // referans gerilimi için AREF kullan }
boşluk döngüsü()
{ lcd.clear(); analogamount=analogRead(analoginput); yüzde=(analog miktar/1024.00)*100; voltaj=analog miktar*3.222; // milivolt cinsinden lcd.setCursor(0, 0); lcd.print("AREF'in %'si: "); lcd.print(yüzde, 2); lcd.setCursor(0, 1); lcd.print("A0(mV):"); lcd.println(voltaj, 2); gecikme(250); }
Yukarıdaki taslağın sonuçları videoda gösterilmiştir.
Adım 5: Dahili AREF
Arduino kartlarımızdaki mikrodenetleyiciler de 1.1V dahili referans voltajı üretebilir ve bunu AREF çalışması için kullanabiliriz. Basitçe satırı kullanın:
analogReferans(DAHİLİ);
Arduino Mega panoları için şunları kullanın:
analogReferans(DAHİLİ1V1);
geçersiz kurulumda () ve kapalısınız. Bir Arduino Mega'nız varsa, aşağıdakilerle etkinleştirilen 2.56V'luk bir referans voltajı da vardır:
analogReferans(INTERNAL2V56);
Son olarak – AREF pininizin sonuçlarına karar vermeden önce, okumaları daima iyi durumda olduğu bilinen bir multimetreye göre kalibre edin.
Çözüm
AREF işlevi, analog sinyalleri ölçerken size daha fazla esneklik sağlar.
Bu gönderi size pmdway.com tarafından getirildi - dünya çapında ücretsiz teslimat ile üreticiler ve elektronik meraklıları için her şey.
Önerilen:
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Işıklı Hareketli Tatil Pimi: 9 Adım (Resimli)
Işıklı Animasyonlu Tatil Pimi: Bu projeyi ilk tasarladığımda açık kaynaklı yayınlamayı beklemiyordum. Bunun harika bir fikir olduğunu ve bir zanaat gösterisinde satabileceğim bir ürün olarak ticari potansiyeli olduğunu düşündüm. Belki de doğuştan gelen deneyim eksikliğinden kaynaklanıyordur ya da belki
ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: 6 Adım
ATtiny84/85 SPI Arayüz Pimi Yeniden Kullanımı: Bu talimat, "ATtiny84/85 Seri Çıkışlı Devre İçi Hata Ayıklama"; uygulama tarafından programlama indirme pinlerinin yeniden kullanılması sorununu ele almak için bu donanım ve yazılım yapılandırmasını öğretilebilir ve genişletir
Tek AVR Pimi ile Her Şeyi Kontrol Edin: 4 Adım
Bir AVR Pimi ile Her Şeyi Kontrol Edin: Bu talimat, bir mikroişlemci çıkışı olan bir grup led'in nasıl kontrol edileceğini gösterir. Kullanacağım mikro, bir Atmel Attiny2313'tür
Bir MCU Pimi ile Birçok Anahtar Nasıl Okunur: 4 Adım
Bir MCU Pimi ile Birçok Anahtar Nasıl Okunur: Hiç bir projeye/projelere takılıp kaldınız mı ve siz ona daha fazla şey eklerken proje büyümeye ve büyümeye devam ediyor mu (biz buna Feaping Creaturism diyoruz)? Yeni bir projede, bir frekans ölçer oluşturuyordum ve beş işlev ekledim