Sisällysluettelo:

Arduino AREF -tappi: 6 vaihetta
Arduino AREF -tappi: 6 vaihetta

Video: Arduino AREF -tappi: 6 vaihetta

Video: Arduino AREF -tappi: 6 vaihetta
Video: Demonstrating the Arduino's external AREF pin 2024, Marraskuu
Anonim
Arduino AREF -tappi
Arduino AREF -tappi

Tässä opetusohjelmassa tarkastelemme, kuinka voit mitata pienempiä jännitteitä suuremmalla tarkkuudella käyttämällä Arduino- tai yhteensopivan kortin analogisia tulonappeja yhdessä AREF -nastan kanssa. Teemme kuitenkin ensin tarkistuksen saadaksemme sinut vauhtiin. Lue tämä viesti kokonaan ennen kuin käytät AREF: ää ensimmäistä kertaa.

Vaihe 1: Tarkistus

Versio!
Versio!

Saatat muistaa, että voit käyttää Arduino analogRead () -toimintoa mittaamaan anturien sähkövirran jännitettä ja niin edelleen käyttämällä jotakin analogista tuloa. AnalogRead (): sta palautettu arvo olisi välillä nolla - 1023, jossa nolla edustaa nolla volttia ja 1023 edustaa käytössä olevan Arduino -kortin käyttöjännitettä.

Ja kun sanomme käyttöjännitteen - tämä on Arduinon käytettävissä oleva jännite virtalähdepiirin jälkeen. Jos sinulla on esimerkiksi tyypillinen Arduino Uno -kortti ja käytät sitä USB -liitännästä - tietokoneelle tai keskittimelle USB -liitännästä on varmasti saatavilla 5 V: n jännite - mutta jännite laskee hieman, kun virta kiertää virtapiiri mikrokontrolleriin - tai USB -lähde ei vain ole tyhjä.

Tämä voidaan helposti osoittaa liittämällä Arduino Uno USB: hen ja asettamalla yleismittari jännitteen mittaamiseen 5V- ja GND -nastoissa. Jotkut levyt palaavat jopa 4,8 V, jotkut korkeammiksi, mutta silti alle 5 V. Joten jos tavoittelet tarkkuutta, syötä korttisi ulkoisesta virtalähteestä DC -pistorasian tai Vin -nastan - kuten 9 V DC: n - kautta. Sitten kun se menee tehonsäätimen piirin läpi, sinulla on mukava 5 V, esimerkiksi kuva.

Tämä on tärkeää, koska todellisen 5 V: n arvo vaikuttaa kaikkien analogRead () -arvojen tarkkuuteen. Jos sinulla ei ole vaihtoehtoa, voit käyttää luonnoksessasi joitakin matematiikkaa kompensoimaan jännitteen laskun. Jos esimerkiksi jännite on 4,8 V - analogRead () -alue 0 ~ 1023 koskee 0 ~ 4,8 V eikä 0 ~ 5 V. Tämä saattaa kuulostaa triviaalilta, mutta jos käytät anturia, joka palauttaa arvon jännitteenä (esim. TMP36 -lämpötila -anturi) - laskettu arvo on väärä. Käytä siis tarkkuuden vuoksi ulkoista virtalähdettä.

Vaihe 2: Miksi AnalogRead () palauttaa arvon välillä 0-1023?

Miksi AnalogRead () palauttaa arvon välillä 0 ja 1023?
Miksi AnalogRead () palauttaa arvon välillä 0 ja 1023?

Tämä johtuu ADC: n resoluutiosta. Resoluutio (tässä artikkelissa) on aste, jossa jotain voidaan esittää numeerisesti. Mitä suurempi resoluutio, sitä tarkemmin jotakin voidaan esittää. Mittaamme resoluutiota tarkkuusbittien lukumäärän perusteella.

Esimerkiksi 1-bittinen resoluutio sallii vain kaksi (kaksi yhden teholle) arvoa-nolla ja yksi. 2-bittinen resoluutio sallii neljä (kaksi kahden tehoon) arvoa-nolla, yksi, kaksi ja kolme. Jos yrittäisimme mitata viiden voltin aluetta kahden bitin resoluutiolla ja mitattu jännite oli neljä volttia, ADC palauttaisi numeerisen arvon 3-kun neljä volttia on välillä 3,75-5 V. Tämä on helpompi kuvitella kuvan kanssa.

Joten esimerkissämme ADC, jossa on 2-bittinen resoluutio, se voi edustaa vain jännitettä neljällä mahdollisella tuloksella. Jos tulojännite laskee välillä 0 - 1,25, ADC palauttaa numeerisen 0; jos jännite laskee välille 1,25 - 2,5, ADC palauttaa numeerisen arvon 1. Ja niin edelleen. Arduinon ADC-alueella 0–1023-meillä on 1024 mahdollista arvoa-tai 2 teholla 10. Joten Arduinossamme on ADC 10-bittisellä resoluutiolla.

Vaihe 3: Mikä on AREF?

Pitkän tarinan lyhentämiseksi, kun Arduino ottaa analogisen lukeman, se vertaa käytettävän analogisen nastan mitattua jännitettä vertailujännitteeseen. Normaalissa analogisessa lukukäytössä vertailujännite on levyn käyttöjännite.

Suosituimpien Arduino -levyjen, kuten Uno-, Mega-, Duemilanove- ja Leonardo/Yún -levyt, käyttöjännite on 5 V. Jos sinulla on Arduino Due -kortti, käyttöjännite on 3,3 V. Jos sinulla on jotain muuta - tarkista Arduino -tuotesivu tai kysy levyn toimittajalta.

Joten jos vertailujännite on 5 V, jokainen analogRead (): n palauttama yksikkö on arvoltaan 0,00488 V. (Tämä lasketaan jakamalla 1024 5 V: ksi). Mitä jos haluamme mitata jännitteitä välillä 0 ja 2 tai 0 ja 4.6? Mistä ADC tietäisi, mikä on 100% jännitealueestamme?

Ja siinä piilee AREF -nastan syy. AREF tarkoittaa analogista viittausta. Sen avulla voimme syöttää Arduinolle vertailujännitteen ulkoisesta virtalähteestä. Jos esimerkiksi haluamme mitata jännitteitä enintään 3,3 V: n alueella, syöttäisimme AREF -nastaan mukavan tasaisen 3,3 V: n - ehkä jännitesäätimestä IC.

Tällöin ADC: n jokainen vaihe edustaa noin 3,22 millivolttia (jaa 1024 osaksi 3.3). Huomaa, että alin vertailujännite, joka sinulla voi olla, on 1,1 V. AREF -muodossa on kaksi muotoa - sisäinen ja ulkoinen, joten tarkista ne.

Vaihe 4: Ulkoinen AREF

Ulkoinen AREF on paikka, jossa syötät ulkoisen vertailujännitteen Arduino -kortille. Tämä voi tulla säännellystä virtalähteestä, tai jos tarvitset 3,3 V: n, voit saada sen Arduinon 3,3 V: n liittimestä. Jos käytät ulkoista virtalähdettä, muista kytkeä GND Arduinon GND -nastaan. Tai jos käytät Ardunon 3,3 V: n lähdettä - suorita hyppyjohdin 3,3 V: n liittimestä AREF -nastaan.

Voit aktivoida ulkoisen AREF -toiminnon käyttämällä seuraavia asetuksia tyhjäasetuksissa ():

analogReference (ULKOINEN); // käytä vertailujännitettä AREF

Tämä asettaa vertailujännitteeksi sen, mitä olet liittänyt AREF -nastaan - jonka jännite on tietysti 1,1 V: n ja levyn käyttöjännitteen välillä. ennen analogRead (): n käyttöä. Tämä estää sinua oikosulkemasta aktiivista sisäistä referenssijännitettä ja AREF -nastaa, mikä voi vahingoittaa piirilevyn mikrokontrolleria. Tarvittaessa sovelluksellesi voit palata AREF -levyn käyttöjännitteelle (eli - takaisin normaaliksi) seuraavasti:

analogReference (OLETUS);

Nyt esittelemään ulkoista AREF: ää työssä. Käyttämällä 3.3V AREF -laitetta seuraava luonnos mittaa jännitteen A0: sta ja näyttää prosentteina AREF -kokonaismäärästä ja lasketusta jännitteestä:

#include "LiquidCrystal.h"

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

int analogitulo = 0; // analoginen nastamme

int analogamount = 0; // tallentaa saapuvan arvon kelluva prosenttiosuus = 0; // käytetään prosenttiarvon tallentamiseen kelluva jännite = 0; // käytetään jännitearvon tallentamiseen

mitätön asennus ()

{lcd. alku (16, 2); analogReference (ULKOINEN); // käytä AREF -vertailujännitettä}

tyhjä silmukka ()

{lcd.clear (); analogamount = analogRead (analoginen tulo); prosenttiosuus = (analogamount/1024,00)*100; jännite = analoginen määrä*3,222; // millivoltteina lcd.setCursor (0, 0); lcd.print ("% AREF:"); lcd.print (prosenttiosuus, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (jännite, 2); viive (250); }

Yllä olevan luonnoksen tulokset näkyvät videossa.

Vaihe 5: Sisäinen AREF

Arduino -korttiemme mikrokontrollerit voivat myös tuottaa 1,1 V: n sisäisen vertailujännitteen, ja voimme käyttää tätä AREF -työhön. Käytä vain riviä:

analogReference (INTERNAL);

Käytä Arduino Mega -levyjä:

analogReference (INTERNAL1V1);

tyhjässä asennuksessa () ja olet poissa. Jos sinulla on Arduino Mega, saatavilla on myös 2,56 V: n vertailujännite, joka aktivoidaan:

analogReference (INTERNAL2V56);

Lopuksi - ennen kuin laskeudut AREF -nastasi tuloksiin, kalibroi lukemat aina tunnetun hyvän yleismittarin mukaan.

Johtopäätös

AREF -toiminto antaa sinulle enemmän joustavuutta analogisten signaalien mittaamisessa.

Tämän viestin toi sinulle pmdway.com - kaikki valmistajille ja elektroniikan harrastajille, ilmainen toimitus maailmanlaajuisesti.

Suositeltava: