Mündəricat:
- Addım 1: Düzəliş
- Addım 2: Niyə AnalogRead () 0 ilə 1023 arasında bir dəyər qaytarır?
- Addım 3: Bəs AREF nədir?
- Addım 4: Xarici AREF
- Addım 5: Daxili AREF
Video: Arduino AREF Pin: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
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ş
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?
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ə:
Lehimlənməmiş Pin Başlığı Olmadan Arduino Nano üçün ICSP Bağlayıcısı, lakin Pogo Pin: 7 addım
Arduino Nano üçün ICSP Konnektoru, Lehimli Pin Başlığı Olmadan, Pogo Pin: Arduino Nano üçün, lövhədə lehimli pin başlığı olmayan bir ICSP konnektoru düzəldin, ancaq Pogo Pin.Parts3 × 2 Pin Soket x1 - APitch 2.54mm Dupont Xətti Tel Dişi Pin Konnektoru Konut Terminalları x6 -BP75-E2 (1.3mm Konik Başlı) Bahar Test Probe Pogo Pin
DIY Arduino Pin Pointer Metal Dedektoru: 3 addım
DIY Arduino Pin Göstərici Metal Dedektoru: Ənənəvi bir metal detektoru, gömülü bir əşyanın yerini təyin edə bilər və obyektin yerdəki kobud bir yerini verə bilər. . Ayrıca, edə bilər
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
Bluetooth Modulu üçün əmrlər (HC-05 W/ EN Pin və DÜĞMƏ) Arduino lövhəsini istifadə edərək!: 5 addım
AT Komutları Bluetooth Modulu üçün (HC-05 W/ EN Pin və DÜĞMƏ) Arduino lövhəsini istifadə edərək !: Jay Amiel AjocGensan PHBu təlimat, HC05 bluetooth modulunuzu istifadə etməyə başlamağınıza kömək edəcək. Bu təlimatın sonunda öyrənəcəksiniz. moduluna konfiqurasiya etmək/dəyişdirmək üçün AT əmrlərinin göndərilməsi haqqında (ad, şifrə, baud ra
ISP 6 Pin -dən 8 Pin Soket: 4 Addım
ISP 6 Pin -dən 8 Pin Soketə: Bu layihəni hazırlamağımın səbəbi 8 pinli ATTiny45 proqramlaşdırmaq idi, USBtinyISP -də (Ladyada) yalnız 10 pinli və 6 pinli bir əlaqə var. Təxminən 3-4 həftə internetdə gəzdikdən sonra heç nə tapmadım