Sisukord:

Arduino AREF -i tihvt: 6 sammu
Arduino AREF -i tihvt: 6 sammu

Video: Arduino AREF -i tihvt: 6 sammu

Video: Arduino AREF -i tihvt: 6 sammu
Video: AREF - Как подключить опорное напряжение к Arduino 2024, November
Anonim
Arduino AREF -i tihvt
Arduino AREF -i tihvt

Selles õpetuses vaatame, kuidas saate väiksemaid pingeid suurema täpsusega mõõta, kasutades oma Arduino või ühilduva tahvli analoogsisendpistikuid koos AREF -i tihvtiga. Kuid kõigepealt teeme mõned muudatused, et teid kiirustada. Palun lugege see postitus enne AREF -iga esimest korda töötamist läbi.

Samm: ülevaatamine

Revisjon!
Revisjon!

Võite meelde tuletada, et saate kasutada funktsiooni Arduino analogRead (), et mõõta andurite elektrivoolu pinget ja nii edasi, kasutades ühte analoogsisendit. AnalogRead () tagastatud väärtus jääb vahemikku null kuni 1023, kusjuures null tähistab nullvolti ja 1023 tähistab kasutusel oleva Arduino plaadi tööpinget.

Ja kui me ütleme tööpinge - see on pinge, mis on Arduino jaoks saadaval pärast toiteahelat. Näiteks kui teil on tüüpiline Arduino Uno plaat ja käivitate selle USB -pistikupesast - kindel, et arvuti või jaoturi USB -pesast on plaadile saadaval 5 V -, kuid pinge väheneb, kui vool ümberringi keerleb. vooluring mikrokontrollerile - või pole USB -allikas lihtsalt kriimustatud.

Seda saab hõlpsasti tõestada, ühendades Arduino Uno USB -ga ja pannes multimeetri komplekti, et mõõta pinget 5V ja GND kontaktidel. Mõned plaadid naasevad kuni 4,8 V, mõned suuremad, kuid siiski alla 5 V. Nii et kui soovite täpsust, toite plaati välise toiteallika kaudu alalisvoolu pistikupesa või Vin -tihvti (nt 9 V alalisvoolu) kaudu. Siis, kui see läbib toiteregulaatori ahela, on teil kena 5 V, näiteks pilt.

See on oluline, kuna tõelise 5 V puudumine mõjutab mis tahes analogRead () väärtuste täpsust. Kui teil pole ühtegi võimalust, võite oma visandis kasutada pingelanguse kompenseerimiseks mõnda matemaatikat. Näiteks kui teie pinge on 4,8 V. See võib tunduda tühine, kuid kui kasutate andurit, mis tagastab väärtuse pingena (nt temperatuuriandur TMP36) - arvutatud väärtus on vale. Seega kasutage täpsuse huvides välist toiteallikat.

2. samm: miks tagastab AnalogRead () väärtuse vahemikus 0 kuni 1023?

Miks tagastab AnalogRead () väärtuse vahemikus 0 kuni 1023?
Miks tagastab AnalogRead () väärtuse vahemikus 0 kuni 1023?

See on tingitud ADC resolutsioonist. Eraldusvõime (selle artikli jaoks) on see, mil määral saab midagi numbriliselt esitada. Mida suurem on eraldusvõime, seda suurema täpsusega saab midagi esitada. Me mõõdame eraldusvõimet eraldusvõime bittide arvu järgi.

Näiteks 1-bitine eraldusvõime võimaldaks ainult kahte (kaks ühe võimsuseni) väärtust-null ja üks. 2-bitine eraldusvõime võimaldaks nelja (kaks kuni kahe võimsusega) väärtust-null, üks, kaks ja kolm. Kui me prooviksime mõõta viie-voldist vahemikku kahebitise eraldusvõimega ja mõõdetud pinge oleks neli volti, tagastaks meie ADC arvväärtuse 3-kuna neli volti jääb vahemikku 3,75–5 V. Seda on pildi abil lihtsam ette kujutada.

Nii et meie näite ADC-ga, millel on 2-bitine eraldusvõime, võib see kujutada pinget ainult nelja võimaliku väärtusega. Kui sisendpinge langeb vahemikku 0 kuni 1,25, tagastab ADC numbrilise 0; kui pinge langeb vahemikku 1,25–2,5, tagastab ADC arvväärtuse 1. Ja nii edasi. Meie Arduino ADC vahemikus 0–1023-meil on 1024 võimalikku väärtust-või 2 kuni 10. Seega on meie Arduinodel 10-bitise eraldusvõimega ADC.

3. samm: Mis on AREF?

Kui teie lugu on lühike, siis kui teie Arduino võtab analoognäidu, võrdleb see kasutatava analoogtihvtiga mõõdetud pinget võrdluspingega. Tavalises analogRead kasutuses on võrdluspinge plaadi tööpinge.

Populaarsemate Arduino tahvlite, näiteks Uno, Mega, Duemilanove ja Leonardo/Yún plaatide puhul on tööpinge 5 V. Kui teil on Arduino Due plaat, on tööpinge 3,3 V. Kui teil on midagi muud - vaadake Arduino tootelehte või küsige plaadi tarnijalt.

Seega, kui teie võrdluspinge on 5 V, hinnatakse iga analogRead () poolt tagastatud ühiku väärtuseks 0,00488 V. (See arvutatakse, jagades 1024 5V -ks). Mis siis, kui tahame mõõta pingeid vahemikus 0 kuni 2 või 0 kuni 4,6? Kuidas saaks ADC teada, mis on 100% meie pingevahemikust?

Ja selles peitub AREF -i tihvti põhjus. AREF tähendab analoogreferentsi. See võimaldab meil toita Arduino võrdluspinget välisest toiteallikast. Näiteks kui tahame mõõta pingeid maksimaalse vahemikuga 3,3 V, söödaksime AREF -i tihvti sisse kena sujuva 3,3 V - võib -olla pingeregulaatori IC -lt.

Seejärel moodustaks iga ADC samm umbes 3,22 millivolti (jagage 1024 3,3 -ks). Pange tähele, et madalaim võrdluspinge, mis teil võib olla, on 1,1 V. AREF -il on kaks vormi - sisemine ja välimine, seega vaatame neid.

4. samm: väline AREF

Väline AREF on koht, kus tarnite Arduino plaadile välise võrdluspinge. See võib pärineda reguleeritud toiteallikast või kui vajate 3,3 V, saate selle Arduino 3,3 V pistikust. Kui kasutate välist toiteallikat, ühendage GND kindlasti Arduino GND tihvtiga. Või kui kasutate Arduno 3,3 V allikat - käivitage lihtsalt hüppaja 3,3 V tihvtilt AREF -i tihvtile.

Välise AREF -i aktiveerimiseks kasutage tühiseadistuses () järgmist:

analogReference (VÄLINE); // kasutage võrdluspinge jaoks AREF -i

See määrab võrdluspingeks kõik, mis olete AREF -i tihvtiga ühendanud - mille pinge on loomulikult vahemikus 1,1 V ja plaadi tööpinge. enne analogRead () kasutamist. See hoiab ära aktiivse sisemise võrdluspinge ja AREF -i tihvti lühise, mis võib kahjustada plaadil olevat mikrokontrollerit. Kui see on teie rakenduse jaoks vajalik, saate naasta AREF -i plaadi tööpinge juurde (st - normaalseks) järgmiselt.

analogReference (DEFAULT);

Nüüd demonstreerige tööl välist AREF -i. Kasutades 3.3V AREF -i, mõõdab järgmine visand pinget A0 -st ja kuvab kogu AREF -i protsendi ja arvutatud pinge:

#include "LiquidCrystal.h"

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

int analoogsisend = 0; // meie analoognõel

int analogamount = 0; // salvestab sissetuleva väärtuse ujukprotsendi = 0; // kasutatakse meie protsentuaalse väärtuse salvestamiseks ujukpinge = 0; // kasutatakse pinge väärtuse salvestamiseks

tühine seadistus ()

{lcd.algus (16, 2); analogReference (VÄLINE); // kasutage võrdluspinge jaoks AREF -i}

tühine tsükkel ()

{lcd.clear (); analogamount = analogRead (analoogsisend); protsent = (analogamount/1024,00)*100; pinge = analogamount*3.222; // millivoltides lcd.setCursor (0, 0); lcd.print ("% AREF -ist:"); lcd.print (protsent, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (pinge, 2); viivitus (250); }

Ülaltoodud visandi tulemused on näidatud videos.

5. samm: sisemine AREF

Meie Arduino tahvlite mikrokontrollerid võivad tekitada ka sisemise võrdluspinge 1,1 V ja me saame seda kasutada AREF -i töö jaoks. Kasutage lihtsalt rida:

analogReference (INTERNAL);

Arduino Mega plaatide puhul kasutage järgmist:

analogReference (INTERNAL1V1);

tühises seadistuses () ja olete väljas. Kui teil on Arduino Mega, on saadaval ka 2,56 V võrdluspinge, mis aktiveeritakse:

analoogviide (INTERNAL2V56);

Lõpuks - enne AREF -i tihvti tulemuste leidmist kalibreerige näidud alati tuntud hea multimeetri järgi.

Järeldus

Funktsioon AREF annab teile analoogsignaalide mõõtmisel suurema paindlikkuse.

Selle postituse tõi teile pmdway.com - kõik tegijatele ja elektroonikahuvilistele, tasuta kohaletoimetamine kogu maailmas.

Soovitan: