INHOUDSOPGAWE:

Die Arduino AREF -pen: 6 stappe
Die Arduino AREF -pen: 6 stappe

Video: Die Arduino AREF -pen: 6 stappe

Video: Die Arduino AREF -pen: 6 stappe
Video: 6 ARDUINO ANALOG analogReference 2024, Julie
Anonim
Die Arduino AREF -pen
Die Arduino AREF -pen

In hierdie tutoriaal kyk ons na hoe u kleiner spannings met groter akkuraatheid kan meet met behulp van die analoog ingangspennetjies op u Arduino of versoenbare bord saam met die AREF -pen. Eerstens sal ons 'n bietjie hersiening doen om u op hoogte te bring. Lees hierdie berig volledig voordat u die eerste keer met AREF werk.

Stap 1: hersiening

Hersiening!
Hersiening!

U onthou miskien dat u die Arduino analogRead () -funksie kan gebruik om die spanning van 'n elektriese stroom van sensors, ensovoorts, te meet deur een van die analoog ingangspennetjies te gebruik. Die waarde wat teruggekeer word van analogRead () sal tussen nul en 1023 wees, met nul wat nul volt verteenwoordig en 1023 wat die werkspanning van die Arduino -bord in gebruik verteenwoordig.

En as ons die werkspanning sê - dit is die spanning wat die Arduino beskikbaar het na die kragtoevoer. As u byvoorbeeld 'n tipiese Arduino Uno -kaart het en dit vanaf die USB -aansluiting laat loop - daar is seker 5V beskikbaar op die kaart vanaf die USB -aansluiting op u rekenaar of hub - maar die spanning word effens verminder namate die stroom om die stroombaan na die mikrobeheerder - of die USB -bron is eenvoudig nie reg nie.

Dit kan maklik bewys word deur 'n Arduino Uno aan USB te koppel en 'n multimeterstel te plaas om spanning oor die 5V- en GND -penne te meet. Sommige borde sal so laag as 4,8 V terugkeer, sommige hoër, maar steeds onder 5V. As u dus op soek is na akkuraatheid, kan u u kaart van 'n eksterne kragtoevoer via die DC -aansluiting of Vin -pen, soos 9V DC, voed. Dan sal u 'n goeie 5V hê, byvoorbeeld die beeld, nadat dit deur die kragreguleerkring gegaan het.

Dit is belangrik, aangesien die akkuraatheid van enige analoogLees () waardes beïnvloed sal word deur nie 'n ware 5 V. te hê nie. As u nie 'n opsie het nie, kan u 'n paar wiskunde in u skets gebruik om die spanningverlies te vergoed. Byvoorbeeld, as u spanning 4.8V is - sal die analogRead () reeks van 0 ~ 1023 verband hou met 0 ~ 4.8V en nie 0 ~ 5V nie. Dit klink dalk triviaal, maar as u 'n sensor gebruik wat 'n waarde as 'n spanning teruggee (bv. Die TMP36 temperatuursensor) - sal die berekende waarde verkeerd wees. Gebruik dus om 'n akkurate belang 'n eksterne kragtoevoer.

Stap 2: Waarom gee AnalogRead () 'n waarde tussen 0 en 1023 terug?

Waarom gee AnalogRead () 'n waarde tussen 0 en 1023 op?
Waarom gee AnalogRead () 'n waarde tussen 0 en 1023 op?

Dit is te wyte aan die resolusie van die ADC. Die resolusie (vir hierdie artikel) is die mate waarin iets numeries voorgestel kan word. Hoe hoër die resolusie, hoe groter akkuraatheid kan iets voorgestel word. Ons meet resolusie in terme van die aantal stukkies resolusie.

Byvoorbeeld, met 'n 1-bis-resolusie kan slegs twee (twee op die krag van een) waardes toegelaat word-nul en een. Met 'n 2-bis-resolusie kan vier (twee met die krag van twee) waardes toegelaat word-nul, een, twee en drie. As ons probeer om 'n reeks van vyf volt met 'n twee-bits resolusie te meet, en die gemete spanning was vier volt, sou ons ADC 'n numeriese waarde van 3 gee-aangesien vier volt tussen 3,75 en 5V val. Dit is makliker om dit met die beeld voor te stel.

Met ons voorbeeld ADC met 'n 2-bis-resolusie, kan dit slegs die spanning met vier moontlike gevolglike waardes verteenwoordig. As die insetspanning tussen 0 en 1,25 daal, gee die ADC numeriese 0; as die spanning tussen 1,25 en 2,5 daal, gee die ADC 'n numeriese waarde van 1. En so aan. Met ons Arduino se ADC-reeks van 0 ~ 1023-het ons 1024 moontlike waardes-of 2 met die krag van 10. Ons Arduino's het dus 'n ADC met 'n resolusie van 10 bis.

Stap 3: Wat is AREF?

Om 'n lang verhaal kort te maak, as u Arduino 'n analoog meting neem, vergelyk dit die spanning wat gemeet word aan die analoogpen wat gebruik word met wat bekend staan as die verwysingspanning. By normale analoog Leesgebruik is die verwysingspanning die werkspanning van die bord.

Vir die meer gewilde Arduino -borde, soos die Uno-, Mega-, Duemilanove- en Leonardo/Yún -borde, is die werkspanning van 5V. As u 'n Arduino Due -bord het, is die werkspanning 3,3V. As u iets anders het - kyk na die Arduino -produkbladsy of vra u bordverskaffer.

As u dus 'n verwysingsspanning van 5V het, word elke eenheid wat deur analogRead () teruggestuur word, gewaardeer op 0.00488 V. (Dit word bereken deur 1024 in 5V te deel). Wat as ons spannings tussen 0 en 2, of 0 en 4.6, wil meet? Hoe sou die ADC weet wat 100% van ons spanningsreeks is?

En daarin lê die rede vir die AREF -pen. AREF beteken Analoog VERWYSING. Dit stel ons in staat om die Arduino 'n verwysingspanning van 'n eksterne kragtoevoer te voer. As ons byvoorbeeld spanning met 'n maksimum bereik van 3.3V wil meet, sal ons 'n mooi gladde 3.3V in die AREF -pen invoer - miskien van 'n spanningsreguleerder IC.

Dan sou elke stap van die ADC ongeveer 3,22 millivolt verteenwoordig (deel 1024 in 3,3). Let daarop dat die laagste verwysingsspanning wat u kan hê, 1.1V is. Daar is twee vorme van AREF - intern en ekstern, dus kom ons kyk daarna.

Stap 4: Eksterne AREF

'N Eksterne AREF is waar u 'n eksterne verwysingsspanning aan die Arduino -bord verskaf. Dit kan afkomstig wees van 'n gereguleerde kragtoevoer, of as u 3.3V benodig, kan u dit by die Arduino se 3.3V -pen kry. As u 'n eksterne kragtoevoer gebruik, moet u die GND aan die Arduino se GND -pen koppel. Of as u die 3.3V -bron van die Arduno gebruik - loop net 'n springer van die 3.3V -pen na die AREF -pen.

Om die eksterne AREF te aktiveer, gebruik die volgende in leemte -opstelling ():

analogReference (EXTERNAL); // gebruik AREF vir verwysingspanning

Dit stel die verwysingspanning in op alles wat u aan die AREF -pen gekoppel het - wat natuurlik 'n spanning tussen 1.1V en die werkingspanning van die bord sal hê. Baie belangrike opmerking - as u 'n eksterne spanningsverwysing gebruik, moet u die analoog verwysing na EXTERN voordat u analogRead () gebruik. Dit sal u verhinder om die aktiewe interne verwysingsspanning en die AREF -pen te kort, wat die mikrobeheerder op die bord kan beskadig. As dit nodig is vir u toepassing, kan u terugkeer na die werkspanning van die kaart vir AREF (dit is - terug na normaal) met die volgende

analogReference (standaard);

Nou om eksterne AREF by die werk te demonstreer. Met behulp van 'n 3.3V AREF, meet die volgende skets die spanning van A0 en toon die persentasie van die totale AREF en die berekende spanning:

#sluit "LiquidCrystal.h" in

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

int analooginvoer = 0; // ons analoog pen

int analoog = 0; // stoor inkomende waarde vlotter persentasie = 0; // word gebruik om ons vlotspanning = 0; // word gebruik om die spanningswaarde op te slaan

leemte opstelling ()

{lcd.begin (16, 2); analogReference (EXTERNAL); // gebruik AREF vir verwysingspanning}

leemte lus ()

{lcd.clear (); analogamount = analogRead (analoog invoer); persentasie = (analoog bedrag/1024,00)*100; spanning = analoog bedrag*3,222; // in millivolts lcd.setCursor (0, 0); lcd.print ("% van AREF:"); lcd.print (persentasie, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (spanning, 2); vertraging (250); }

Die resultate van die skets hierbo word in die video getoon.

Stap 5: Interne AREF

Die mikrobeheerders op ons Arduino -borde kan ook 'n interne verwysingsspanning van 1.1V genereer, en ons kan dit gebruik vir AREF -werk. Gebruik eenvoudig die reël:

analogReference (INTERNE);

Gebruik vir Arduino Mega -borde:

analogReference (INTERNAL1V1);

in die nietige opstelling () en u is af. As u 'n Arduino Mega het, is daar ook 'n 2.56V verwysingspanning beskikbaar wat geaktiveer word met:

analogReference (INTERNAL2V56);

Ten slotte - voordat u die resultate van u AREF -pen bepaal, moet u altyd die metings kalibreer teen 'n bekende goeie multimeter.

Afsluiting

Die AREF -funksie bied meer buigsaamheid by die meting van analoog seine.

Hierdie pos word deur pmdway.com aan u gebring - alles vir vervaardigers en elektronika -entoesiaste, met gratis aflewering wêreldwyd.

Aanbeveel: