Sisukord:
- Samm: ülevaatamine
- 2. samm: miks tagastab AnalogRead () väärtuse vahemikus 0 kuni 1023?
- 3. samm: Mis on AREF?
- 4. samm: väline AREF
- 5. samm: sisemine AREF
Video: Arduino AREF -i tihvt: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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
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?
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:
ICSP pistik Arduino Nano jaoks ilma joodetud tihvti päiseta, kuid Pogo tihvt: 7 sammu
ICSP -pistik Arduino Nano jaoks ilma joodetud tihvti päiseta, kuid ilma Pogo -tihvtita: tehke Arduino Nano jaoks ICSP -pistik ilma joodetud tihvti päiseta pardal, kuid Pogo -tihvtina. Osad 3 × 2 -pin pistikupesa x1 - APitch 2,54 mm Dupont -liinijuhtmestiku pistikupesa klemmid x6 -BP75-E2 (1,3 mm kooniline pea) vedrutesti sondi Pogo tihvt
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
Sisse lülitatud riiviahel koos UC -ga. Üks nupp. Üks tihvt. Diskreetne komponent: 5 sammu
Sisse lülitatud riiviahel koos UC -ga. Üks nupp. Üks tihvt. Diskreetne komponent: Tere kõigile, otsisin võrgust sisse/välja lülitust. Kõik, mis ma leidsin, ei olnud see, mida ma otsisin. Ma rääkisin iseendaga, selleks on tingimata võimalus. Seda ma vajasin.-Ainult üks nupp, mida saab sisse ja välja lülitada
Tulekahjusignalisatsioon Arduino abil [paar lihtsat sammu]: 3 sammu
Arduino kasutav tulekahjusignalisatsioon [paar lihtsat sammu]: Kas soovite Arduinoga teha lihtsa ja huvitava projekti, mis võiks samal ajal olla tõesti kasulik ja potentsiaalselt elupäästev? Kui jah, siis olete jõudnud õigesse kohta õppima midagi uut ja uuenduslikku. Selles postituses läheme
Bluetooth-mooduli käsud (HC-05 W/ EN tihvt ja NUPP) Arduino Boardi abil!: 5 sammu
AT-käsud Bluetooth-moodulile (HC-05 W/ EN-nööpnõel ja -nupp) Arduino-tahvli kasutamine!: Autor: Jay Amiel Ajoc AT -käskude saatmise kohta moodulile selle konfigureerimiseks/muutmiseks (nimi, pääsukood, baud ra