Kazalo:

Arduino AREF Pin: 6 korakov
Arduino AREF Pin: 6 korakov

Video: Arduino AREF Pin: 6 korakov

Video: Arduino AREF Pin: 6 korakov
Video: Изучаем микроконтроллеры с электронным набором ЙОДО 2024, Julij
Anonim
Arduino AREF Pin
Arduino AREF Pin

V tej vadnici bomo pogledali, kako lahko z večjo natančnostjo izmerite manjše napetosti z uporabo analognih vhodnih zatičev na vašem Arduinu ali združljivi plošči v povezavi z zatičem AREF. Najprej pa bomo naredili nekaj popravkov, da vas pospešimo. Pred prvim sodelovanjem z AREF v celoti preberite to objavo.

1. korak: Revizija

Revizija!
Revizija!

Morda se spomnite, da lahko uporabite funkcijo Arduino analogRead () za merjenje napetosti električnega toka iz senzorjev in tako naprej z uporabo enega od analognih vhodnih zatičev. Vrednost, vrnjena iz analogRead (), bi bila med nič in 1023, pri čemer nič predstavlja nič voltov in 1023 predstavlja delovno napetost uporabljene plošče Arduino.

In ko rečemo delovna napetost - to je napetost, ki je na voljo Arduinu po vezju napajanja. Na primer, če imate običajno ploščo Arduino Uno in jo poganjate iz vtičnice USB - seveda je na plošči na voljo 5 V iz vtičnice USB na vašem računalniku ali zvezdišču - vendar se napetost nekoliko zmanjša, ko tok teče okoli vezja do mikrokrmilnika - ali pa USB -viru preprosto ni do nič.

To lahko enostavno dokažete tako, da priključite Arduino Uno na USB in postavite multimeter za merjenje napetosti na zatičih 5V in GND. Nekatere plošče se bodo vrnile že pri 4,8 V, nekatere višje, vendar še vedno pod 5 V. Če torej iščete natančnost, napajajte ploščo iz zunanjega napajalnika prek enosmerne vtičnice ali vtiča Vin - na primer 9 V DC. Potem, ko greste skozi vezje regulatorja moči, boste imeli lepih 5V, na primer sliko.

To je pomembno, saj na natančnost vseh analogRead () vrednosti vpliva, če nimate pravih 5 V. Če nimate možnosti, lahko uporabite nekaj matematike v skici, da kompenzirate padec napetosti. Na primer, če je vaša napetost 4,8 V - se bo območje analogRead () 0 ~ 1023 nanašalo na 0 ~ 4,8 V in ne na 0 ~ 5 V. To se lahko sliši trivialno, če pa uporabljate senzor, ki vrne vrednost kot napetost (npr. Temperaturni senzor TMP36) - bo izračunana vrednost napačna. Zato zaradi natančnosti uporabite zunanji napajalnik.

2. korak: Zakaj AnalogRead () vrne vrednost med 0 in 1023?

Zakaj AnalogRead () vrne vrednost med 0 in 1023?
Zakaj AnalogRead () vrne vrednost med 0 in 1023?

To je posledica resolucije ADC. Ločljivost (za ta članek) je stopnja, do katere je nekaj lahko predstavljeno številčno. Višja kot je ločljivost, večja je natančnost, s katero je mogoče nekaj predstaviti. Ločljivost merimo v smislu števila bitov ločljivosti.

Na primer, 1-bitna ločljivost bi dovoljevala le dve (dve na stopnjo ene) vrednosti-nič in eno. 2-bitna ločljivost bi omogočila štiri (dve po moči dveh) vrednosti-nič, eno, dve in tri. Če bi poskušali izmeriti pet voltno območje z dvobitno ločljivostjo in bi bila izmerjena napetost štiri volte, bi naš ADC vrnil številčno vrednost 3-saj štirje volti padejo med 3,75 in 5 V. To si je lažje predstavljati s sliko.

Torej z našim primerom ADC z 2-bitno ločljivostjo lahko predstavlja le napetost s štirimi možnimi posledičnimi vrednostmi. Če vhodna napetost pade med 0 in 1,25, ADC vrne številčno 0; če napetost pade med 1,25 in 2,5, ADC vrne številčno vrednost 1. In tako naprej. Z razponom ADC našega Arduina 0 ~ 1023-imamo 1024 možnih vrednosti-ali 2 na moč 10. Torej imajo naši Arduino ADC z 10-bitno ločljivostjo.

3. korak: Kaj je torej AREF?

Če na kratko povem, ko vaš Arduino opravi analogno odčitavanje, primerja napetost, izmerjeno na analognem zatiču, s tisto, kar je znano kot referenčna napetost. Pri normalni uporabi analognega branja je referenčna napetost delovna napetost plošče.

Za bolj priljubljene plošče Arduino, kot so plošče Uno, Mega, Duemilanove in Leonardo/Yún, delovna napetost 5V. Če imate ploščo Arduino Due, je delovna napetost 3,3 V. Če imate kaj drugega - preverite stran izdelka Arduino ali vprašajte svojega dobavitelja plošč.

Torej, če imate referenčno napetost 5 V, je vsaka enota, ki jo vrne analogRead (), 0,00488 V. (To se izračuna tako, da 1024 razdelite na 5 V). Kaj pa, če želimo meriti napetosti med 0 in 2 ali 0 in 4,6? Kako bi ADC vedel, kaj je 100% našega napetostnega območja?

In v tem je razlog za pin AREF. AREF pomeni analogno referenco. Omogoča nam, da Arduino napajamo z referenčno napetostjo iz zunanjega napajalnika. Na primer, če želimo izmeriti napetosti z največjim razponom 3,3 V, bi v napajalni pin AREF vnesli lepo gladkih 3,3 V - morda iz IC napetostnega regulatorja.

Potem bi vsak korak ADC predstavljal približno 3,22 milivolta (razdelite 1024 na 3,3). Upoštevajte, da je najnižja referenčna napetost 1,1V. Obstajata dve obliki AREF - notranja in zunanja, zato ju preverimo.

4. korak: Zunanji AREF

Zunanji AREF napaja zunanjo referenčno napetost na plošči Arduino. To lahko prihaja iz reguliranega napajanja, če pa potrebujete 3,3 V, ga lahko dobite iz 3,3 -palčnega vtiča Arduino. Če uporabljate zunanji napajalnik, ne pozabite priključiti GND na nožico GND Arduino. Ali če uporabljate Ardunov 3.3V vir - samo zaženite mostiček od 3.3V pin do pin AREF.

Če želite aktivirati zunanji AREF, uporabite naslednje v void setup ():

analogReference (ZUNANJI); // za referenčno napetost uporabite AREF

S tem nastavite referenčno napetost na vse, kar ste priključili na pin AREF - ta bo seveda imel napetost med 1,1 V in delovno napetostjo plošče. Zelo pomembno opozorilo - pri uporabi zunanje referenčne napetosti morate analogno referenco nastaviti na ZUNANJO. pred uporabo analogRead (). Tako boste preprečili kratki stik aktivne notranje referenčne napetosti in zatiča AREF, ki lahko poškoduje mikrokrmilnik na plošči. Če je potrebno za vašo aplikacijo, se lahko vrnete na delovno napetost plošče za AREF (to je - nazaj v normalno stanje) z naslednjim:

analogReference (DEFAULT);

Zdaj za prikaz zunanjega AREF pri delu. Z uporabo 3.3V AREF naslednja skica meri napetost iz A0 in prikazuje odstotek skupnega AREF in izračunano napetost:

#include "LiquidCrystal.h"

LCD tekoči kristal (8, 9, 4, 5, 6, 7);

int analogni vhod = 0; // naš analogni pin

int analogamount = 0; // shrani vhodno vrednost plavajoči odstotek = 0; // uporabljamo za shranjevanje naše odstotne vrednosti plavajoče napetosti = 0; // se uporablja za shranjevanje vrednosti napetosti

void setup ()

{lcd.begin (16, 2); analogReference (ZUNANJI); // za referenčno napetost uporabite AREF}

void loop ()

{lcd.clear (); analogamount = analogRead (analogni vhod); odstotek = (analogni znesek/1024,00)*100; napetost = analogni nosilec*3,222; // v milivoltih lcd.setCursor (0, 0); lcd.print ("% od AREF:"); lcd.print (odstotek, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (napetost, 2); zamuda (250); }

Rezultati zgornje skice so prikazani v videoposnetku.

5. korak: Notranji AREF

Mikrokrmilniki na naših ploščah Arduino lahko ustvarijo tudi notranjo referenčno napetost 1,1 V, kar lahko uporabimo za delo AREF. Preprosto uporabite vrstico:

analogna referenca (NOTRANJA);

Za plošče Arduino Mega uporabite:

analogReference (INTERNAL1V1);

in void setup () in ste izklopljeni. Če imate Arduino Mega, je na voljo tudi referenčna napetost 2,56 V, ki se aktivira z:

analogna referenca (INTERNAL2V56);

Nazadnje - preden se odločite za rezultate iz zatiča AREF, vedno umerite odčitke glede na znani dober multimeter.

Zaključek

Funkcija AREF vam daje večjo prilagodljivost pri merjenju analognih signalov.

To objavo vam je predstavil pmdway.com - vse za ustvarjalce in navdušence nad elektroniko z brezplačno dostavo po vsem svetu.

Priporočena: