Az AREF analóg referencia | Arduino Shop és oktatóanyagok

    • Az ADC átalakítók felbontása.
    • A belső összehasonlítási referenciák az Arduinóban.
    • A külső AREF-referencia.

Szükséges anyag.

Spanyolország Spanyolország Mexikó
UNO Starter Kit UNO Starter Kit
MEGA Starter Kit
MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit

Az analóg-digitális átalakítás

Egy korábbi ülésen már elmondtuk, hogy az Arduino 6 analóg-digitális átalakítóval (ADC) rendelkezik, amelyek az A0-A5 pinek, és azt mondtuk, hogy maximum 5V-os feszültségértékek átalakítására képesek, ami az Arduino referenciafeszültsége.

Azt is mondtuk, hogy az átalakító egyik legfontosabb jellemzője a bitek száma, ami meghatározza, hogy milyen finomsággal tudjuk számszerűsíteni ezt a digitális átalakítást. Az Arduino esetében 10 bitet kezel az analóg kapukban, ami azt jelenti, hogy a felbontása 210 =1,024 lehetséges érték.

Minél nagyobb ez a felbontás, annál jobban képes megközelíteni a valós értéket, amelynek átalakítását keressük.

  • Fontos megérteni, hogy egy analóg jel digitálisra történő átalakítása mindig közelítés, és még abban a valószínűtlen esetben is, ha az analóg érték pontosan az, amit az átalakító mond, mindig lesz egy bizonytalanságunk.
  • Egy 10 bites felbontású Arduino átalakítónál minden mérési lépés 5V/1024 = 0,0048828125 V, azaz alig kevesebb, mint 5mV, ami azt jelenti, hogy nem tud különbséget tenni olyan feszültségértékek között, amelyek különbsége ennél kisebb.

Anélkül, hogy túlságosan részleteznénk, érdemes elmondani, hogy amit egy ADC átalakító csinál, az az, hogy a bemeneten lévő, számszerűsíteni kívánt jelet egymás után összehasonlítja egy referenciafeszültséggel, amelyhez képest összehasonlításokat végez.

Más szóval, egy ADC nem abszolút értékeket szolgáltat, hanem egy referenciaértékhez viszonyított számszerűsített összehasonlítást végez. Tehát a TMP36 hőmérsékletérzékelő munkamenetben az egyik analóg pin-en lévő bemeneti feszültséget úgy számoltuk ki, hogy a leolvasott értéket megszorozzuk az 5V-os bemenet maximális értékének és az 1024-es átalakító által mért maximumnak a hányadosával.

Mivel az Arduinón általában 5V körüli jeleket kezelünk, az 5V-hoz való viszonyítás az ésszerű, mert az iparban is van egy egész sor olyan érzékelő, amelyek maximális értéke 5V-ot ad vissza.

De az ipar egyre inkább 3,3V-os elektronikát gyárt, maga az Arduino DUE is példa erre, és ha a 3,3V-os csúcsjelek digitalizálására használjuk az ADC-inket, akkor pontosságot és felbontást veszítünk, mert a lehetséges összehasonlítások egy részét, valójában egyharmadát elpazaroljuk.

A gyakorlatban a 3,3V a maximális bemeneti feszültség az 5V-hoz képest azt jelenti, hogy soha nem lesz 1,024 * 3,3 /5 = 675-nél nagyobb olvasásunk, és még mindig 5mV bemeneti lépések lesznek.

De ha az átalakító egy feszültségkomparátor, akkor ha a feszültségértéket, amellyel összehasonlítjuk, 3,3 V-ra változtatnánk, akkor a lépések 3,3 V/1024 = 0,00322265625 vagy 3,2 mV lennének. Ez azt jelenti, hogy javítottuk az átalakítónk felbontását, méghozzá úgy, hogy egy fillért sem költöttünk rá.

Az összehasonlító feszültség, amellyel szemben az analógról digitálisra történő átalakítást végezzük, ideális esetben tehát a bemeneti jel lehető legnagyobb értékének kell lennie. Mert ez az, amikor a lehető legjobb felbontást kapjuk ezzel az átalakítóval.

Az Arduino srácok tisztában voltak ezzel a problémával, és ezért beépítettek egy külső pin-t, amit eddig nem használtunk, ami lehetővé teszi, hogy csatlakoztassunk egy külső referenciafeszültséget, amihez képest az A0-A5 kapukon leolvasott jelet összehasonlítjuk.

Ez a pin az AREF (Analog Reference) feliratot viseli, és két pinnel a digitális 13-as pin felett található:

A külső analóg referencia használata

Az analóg referencia kérdése, amihez az A0-A6 kapukban lévő mintákat hasonlítjuk, annyira fontos, hogy az Arduino több belső feszültséget is biztosít az összehasonlításhoz, amivel aktiválhatjuk a referencia megváltoztatására.

Az 1,1V-os belső referencia aktiválásához egy Arduino UNO-n használd az utasítást

analogReference(INTERNAL);

Ha MEGA-t használsz, akkor kizárólag:

analogReference(INTERNAL1V1);
analogReference(INTERNAL2V56);

Az 1,1V-os és 2,56V-os referenciákat aktiválja.

Ha a DEFAULT billentyűt használod, akkor gyakorlatilag minden Arduino modellnél visszakerülsz a szabványos 5V-os referenciához.

analogReference(DEFAULT);
  • Vigyázz a DEFAULT referenciával, mert a DUE-n ez 3,3V-ot jelent, mert ez a referenciafeszültsége. Győződjünk meg erről, mielőtt boldogan használnánk.

Amikor referenciafeszültséget csatlakoztatunk az AREF pinre, meg kell mondanunk az Arduinónak, hogy használni akarjuk. És ezt a

analogReference(EXTERNAL);

utasítással tesszük meg: Használd a fejed, amikor az analóg referenciát módosítod, mert ha nem vigyázol, megeszed az Arduinót vacsorára. Viszonylag könnyű elrontani bizonyos ártatlannak tűnő műveleteket:

  • Vigyázzunk, hogy ha külső referenciát használunk, akkor az Arduino és a referencia GND-je azonos legyen, összekötve őket. Ennek elmulasztása nagyon rossz prognózissal jár az első módosításnál.
  • Semmilyen körülmények között ne használjon 0v-nál kevesebbet az AREF csapon (VAGY olyan jelet, amely változik és negatív tranziensekkel járhat), mert az eredmény kiszámíthatatlan.
  • Ha külső referenciafeszültséget csatlakoztatsz, ne hívd meg az analogRead() parancsot az analogReference(EXTERNAL) utasítás végrehajtása előtt, mert rövidre zárod a belső összehasonlító jelet a külső feszültséggel az AREF-en, és esetleg kihasználod a lehetőséget, hogy megvehesd azt az új Arduinót, amit annyira szeretnél megvenni.
  • Ne csatlakoztassunk az AREF-re 1V-nál kevesebbet vagy 5V-nál többet, nem lehet csak úgy 12-t beállítani és elvárni, hogy értéket adjon.

Tesztáramkör

Egy tesztáramkört fogunk létrehozni egy I2C kijelzővel, ahogy a foglalkozáson láttuk… és egy potenciométerrel. De ezúttal a potenciométer végeinél GND-t és 3,3V-ot fogunk csatlakoztatni, hogy a központi tűn, amelyet az A1-gyel fogunk leolvasni, soha ne haladja meg a 3,3V-ot, szimulálva egy olyan érzékelőt, amelynek ez a maximális értéke.

Amint elforgatjuk a potenciométert, 0V és 3,3V közötti feszültségesést fogunk leolvasni. és az A1 pin leolvasása 0 és 670 közötti értékeket fog adni, mivel abban az esetben vagyunk, amit kicsit fentebb definiáltunk.

A program egyszerűen leolvassa az A1 analóg pin-t és elküldi az értékét egy 16 karakteres, két soros I2C kijelzőre, ahogy a munkamenetben láttuk….

Content only available for subscribers. Access the content!

Itt egy minivideó a potenciométer leolvasásával

Ha most az Arduino belső 3,3V-os feszültségét az AREF pin-re kapcsoljuk, akkor egy ilyen áramkört kapunk:

Lássuk most a programot:

Itt egy videó a különbséggel:

Tanfolyam összefoglalása

Az arduino kurzuson a következőket tanultuk:

    • Ragaszkodtunk az analóg-digitális átalakítás kérdéséhez és láttuk, hogy alapvetően egy referenciaértékkel való összehasonlításról van szó.
    • Láttuk, hogy a szokásos 5V-tól eltérő belső vagy külső feszültségértéket is használhatunk.
    • Most már tudjuk a pontos utasításokat a külső referencia aktiválásához és a használatakor betartandó óvintézkedéseket.