Mündəricat:

Arduino AREF Pin: 6 addım
Arduino AREF Pin: 6 addım

Video: Arduino AREF Pin: 6 addım

Video: Arduino AREF Pin: 6 addım
Video: Arduino 3 пина на 6 светодиодов чарлиплексинг 2024, Iyul
Anonim
Arduino AREF Pin
Arduino AREF Pin

Bu təlimatda, AREF pin ilə birlikdə Arduino və ya uyğun lövhənizdəki analoq giriş pinlərindən istifadə edərək daha kiçik gərginlikləri daha dəqiqliklə necə ölçə biləcəyinizə baxacağıq. Ancaq əvvəlcə sizi sürətləndirmək üçün bəzi düzəlişlər edəcəyik. Zəhmət olmasa AREF ilə ilk dəfə işləməzdən əvvəl bu yazını tamamilə oxuyun.

Addım 1: Düzəliş

Reviziya!
Reviziya!

Xatırlaya bilərsiniz ki, sensorlardakı elektrik cərəyanının gərginliyini ölçmək üçün analoji giriş pinlərindən birini istifadə etmək üçün Arduino analogRead () funksiyasından istifadə edə bilərsiniz. AnalogRead () -dən qaytarılan dəyər sıfır ilə 1023 arasında olacaq, sıfır sıfır volt, 1023 isə istifadə olunan Arduino lövhəsinin iş gərginliyini təmsil edəcək.

İşləmə gərginliyi dedikdə - bu, enerji təchizatı sxemindən sonra Arduino üçün mövcud olan gərginlikdir. Məsələn, tipik bir Arduino Uno lövhəniz varsa və onu USB yuvasından idarə edirsinizsə - əmin olun ki, kompüterinizdə və ya mərkəzinizdə USB yuvasından 5V mövcuddur - ancaq cərəyan ətrafdakı küləklər nəticəsində gərginlik bir qədər azalır. Mikro nəzarətçiyə keçid - və ya USB mənbəyi cızılmır.

Arduino Uno -nu USB -yə qoşaraq və 5V və GND pinlərindəki gərginliyi ölçmək üçün bir multimetr dəsti qoyaraq bunu asanlıqla göstərmək olar. Bəzi lövhələr 4.8 V -a qədər aşağı, bəziləri daha yüksək, lakin hələ də 5 V -dan aşağıya dönəcək. Dəqiqlik üçün silah alırsınızsa, lövhənizi DC prizindən və ya Vin pinindən (məsələn, 9V DC) xarici bir enerji təchizatı ilə təmin edin. Sonra güc tənzimləyicisi dövrəsindən keçdikdən sonra gözəl bir 5V -yə sahib olacaqsınız, məsələn görüntü.

Bu vacibdir, çünki hər hansı bir analogRead () dəyərinin dəqiqliyi əsl 5 V -ə malik olmamaqdan təsirlənəcəkdir. Hər hansı bir seçiminiz yoxdursa, gərginlik düşməsini kompensasiya etmək üçün eskizinizdə bəzi riyaziyyatdan istifadə edə bilərsiniz. Məsələn, gərginliyiniz 4.8V olarsa - 0 ~ 1023 arasındakı analogRead () aralığı 0 ~ 5V deyil, 0 ~ 4.8V ilə əlaqədardır. Bu əhəmiyyətsiz görünə bilər, ancaq bir gərginlik olaraq bir dəyər verən bir sensor istifadə edirsinizsə (məsələn, TMP36 temperatur sensoru) - hesablanmış dəyər səhv olacaq. Buna görə dəqiqlik baxımından xarici bir enerji təchizatı istifadə edin.

Addım 2: Niyə AnalogRead () 0 ilə 1023 arasında bir dəyər qaytarır?

Niyə AnalogRead () 0 ilə 1023 arasında bir dəyər qaytarır?
Niyə AnalogRead () 0 ilə 1023 arasında bir dəyər qaytarır?

Bu ADC -nin qərarı ilə əlaqədardır. Qətnamə (bu məqalə üçün) bir şeyin rəqəmsal şəkildə təmsil oluna bilmə dərəcəsidir. Qətnamə nə qədər yüksək olsa, bir şeyin təmsil oluna biləcəyi bir o qədər dəqiqdir. Çözünürlüyü bitlərin sayına görə ölçürük.

Məsələn, 1 bitlik bir qətnamə yalnız iki (ikisinin gücü bir) dəyərinə icazə verərdi-sıfır və bir. 2 bitlik bir qətnamə, dörd (ikisinin gücünün iki) dəyərinə icazə verərdi-sıfır, bir, iki və üç. İki bitlik bir qətnamə ilə beş volt aralığını ölçməyə çalışsaydıq və ölçülmüş gərginlik dörd volt olsaydı, ADC 3 ədədi dəyərini qaytarardı-dörd volt 3.75 ilə 5V arasında düşdükcə. Bunu görüntü ilə təsəvvür etmək daha asandır.

Beləliklə, 2 bit həlli olan ADC nümunəmizlə, yalnız dörd mümkün nəticəyə malik olan gərginliyi təmsil edə bilər. Giriş gərginliyi 0 ilə 1.25 arasında düşərsə, ADC ədədi 0 qaytarır; gərginlik 1.25 ilə 2.5 arasında düşərsə, ADC 1 ədədi dəyərini qaytarır. Və s. 0 ~ 1023 Arduino ADC aralığımızla-1024 mümkün dəyərimiz var-və ya 2-nin 10-a qədər. Beləliklə, Arduinolarımız 10 bitlik bir ADC-yə malikdir.

Addım 3: Bəs AREF nədir?

Uzun bir hekayəni qısaltmaq üçün, Arduino oxşar bir oxu aldıqda, istifadə olunan analoq pinində ölçülmüş gərginliyi istinad gərginliyi olaraq bilinənlə müqayisə edir. Normal analogRead istifadə edərkən, istinad gərginliyi lövhənin işləmə gərginliyidir.

Uno, Mega, Duemilanove və Leonardo/Yún lövhələri kimi daha populyar Arduino lövhələri üçün 5V iş gərginliyi. Arduino Due lövhəniz varsa, iş gərginliyi 3.3V -dir. Başqa bir şeyiniz varsa - Arduino məhsul səhifəsinə baxın və ya lövhə təchizatçınızdan soruşun.

Beləliklə, 5V -lik bir istinad gərginliyiniz varsa, analogRead () ilə qaytarılmış hər bir vahid 0.00488 V dəyərindədir (Bu 1024 -ü 5V -ə bölməklə hesablanır). 0 ilə 2 və ya 0 ilə 4.6 arasındakı gərginliyi ölçmək istəsək nə olar? ADC 100% gərginlik aralığımızın nə olduğunu necə bilə bilər?

AREF sancağının səbəbi də budur. AREF Analog REFerence deməkdir. Arduino -ya xarici bir enerji mənbəyindən bir istinad gərginliyi verməyimizi təmin edir. Məsələn, maksimum 3.3V aralığında olan gərginliyi ölçmək istəsək, AREF pininə gözəl bir hamar 3.3V - bəlkə də bir gərginlik tənzimləyicisi IC -dən daxil edərik.

Sonra ADC -nin hər bir addımı təxminən 3.22 millivolt təşkil edəcək (1024 -ü 3.3 -ə bölün). Nəzərə alın ki, əldə edə biləcəyiniz ən aşağı istinad gərginliyi 1.1V -dir. AREF -in iki forması var - daxili və xarici, buna görə də onları yoxlayaq.

Addım 4: Xarici AREF

Xarici AREF, Arduino lövhəsinə xarici istinad gərginliyi verdiyiniz yerdir. Bu tənzimlənən bir enerji təchizatından gələ bilər və ya 3.3V ehtiyacınız varsa, Arduino 3.3V pinindən əldə edə bilərsiniz. Xarici bir enerji təchizatı istifadə edirsinizsə, GND -ni Arduinonun GND pininə bağladığınızdan əmin olun. Və ya Arduno'nun 3.3V qaynağını istifadə edirsinizsə - 3.3V pinindən AREF pininə keçid edin.

Xarici AREF -i aktivləşdirmək üçün aşağıdakıları istifadə edin:

analoq İstinad (XARİCİ); // istinad gərginliyi üçün AREF istifadə edin

Bu, AREF pininə qoşduğunuz hər şeyə istinad gərginliyini təyin edir - əlbəttə ki, 1.1V ilə lövhənin işləmə gərginliyi arasında bir gərginliyə sahib olacaq. analogRead () istifadə etməzdən əvvəl. Bu, aktiv daxili istinad gərginliyini və lövhədəki mikro nəzarətçiyə zərər verə biləcək AREF pinini qısaltmağın qarşısını alacaq. Tətbiqiniz üçün zərurət yarandığı təqdirdə, AREF üçün lövhənin iş gərginliyinə geri qayıda bilərsiniz (yəni normala qayıdır) aşağıdakılarla

analoq İstinad (VARSAYILAN);

İndi işdə xarici AREF göstərmək. 3.3V AREF istifadə edərək, aşağıdakı eskiz A0 -dan olan gərginliyi ölçür və ümumi AREF -in faizini və hesablanan gərginliyi göstərir:

#"LiquidCrystal.h" daxil edin

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int analoginput = 0; // analog pinimiz

int analogamount = 0; // daxil olan dəyəri float faizini saxlayır = 0; // faiz dəyərimizi saxlamaq üçün istifadə olunur float gərginliyi = 0; // gərginlik dəyərini saxlamaq üçün istifadə olunur

boş quraşdırma ()

{lcd.begin (16, 2); analoq İstinad (XARİCİ); // istinad gərginliyi üçün AREF istifadə edin}

boşluq döngəsi ()

{lcd.clear (); analogamount = analogRead (analoginput); faiz = (analoji məbləğ/1024,00)*100; gərginlik = analoq miqdarı*3.222; // millivolt lcd.setCursor (0, 0); lcd.print ("AREF -in%:"); lcd çap (faiz, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (gərginlik, 2); gecikmə (250); }

Yuxarıdakı eskizin nəticələri videoda göstərilmişdir.

Addım 5: Daxili AREF

Arduino lövhələrimizdəki mikro nəzarətçilər 1.1V daxili istinad gərginliyi də yarada bilər və bunu AREF işi üçün istifadə edə bilərik. Sadəcə xətdən istifadə edin:

analoq İstinad (Daxili);

Arduino Mega lövhələri üçün istifadə edin:

analogReference (INTERNAL1V1);

in void setup () və ayrıldınız. Arduino Mega -ya sahibsinizsə, aktivləşdirilmiş 2.56V istinad gərginliyi də mövcuddur:

analogReference (INTERNAL2V56);

Nəhayət - AREF pinindən alınan nəticələrə qərar verməzdən əvvəl, oxunuşları həmişə tanınmış yaxşı bir multimetrlə müqayisə edin.

Nəticə

AREF funksiyası analoq siqnalları ölçməklə sizə daha çox rahatlıq verir.

Bu yazı pmdway.com tərəfindən sizə gətirildi - istehsalçılar və elektronika həvəskarları üçün hər şey, bütün dünyada pulsuz çatdırılma.

Tövsiyə: