Innehållsförteckning:

Arduino AREF -stift: 6 steg
Arduino AREF -stift: 6 steg

Video: Arduino AREF -stift: 6 steg

Video: Arduino AREF -stift: 6 steg
Video: Демонстрация внешнего AREF Arduino 2024, November
Anonim
Arduino AREF -stift
Arduino AREF -stift

I denna handledning tittar vi på hur du kan mäta mindre spänningar med större noggrannhet med de analoga ingångsstiften på din Arduino eller kompatibla kort i kombination med AREF -stiftet. Men först kommer vi att göra en översyn för att få dig upp i fart. Läs det här inlägget helt innan du arbetar med AREF första gången.

Steg 1: Revision

Revision!
Revision!

Du kanske kommer ihåg att du kan använda Arduino analogRead () -funktionen för att mäta spänningen hos en elektrisk ström från sensorer och så vidare med en av de analoga ingångsstiften. Värdet som returneras från analogRead () skulle vara mellan noll och 1023, där noll representerar noll volt och 1023 representerar arbetsspänningen för Arduino -kortet som används.

Och när vi säger driftsspänningen - detta är den spänning som är tillgänglig för Arduino efter strömförsörjningskretsarna. Till exempel, om du har ett typiskt Arduino Uno -kort och kör det från USB -uttaget - visst finns det 5V tillgängligt för kortet från USB -uttaget på din dator eller hubb - men spänningen minskar något när strömmen slingrar sig runt krets till mikrokontrollern - eller så är USB -källan helt enkelt inte klar.

Detta kan enkelt demonstreras genom att ansluta en Arduino Uno till USB och sätta en multimeter för att mäta spänning över 5V- och GND -stiften. Vissa kort kommer tillbaka så lågt som 4,8 V, vissa högre men fortfarande under 5V. Så om du letar efter noggrannhet, slå på kortet från en extern strömförsörjning via DC -uttaget eller Vin -stiftet - till exempel 9V DC. Sedan går det genom effektregulatorkretsen och du får en fin 5V, till exempel bilden.

Detta är viktigt eftersom noggrannheten för alla analoga Read () -värden påverkas av att inte ha en sann 5 V. Om du inte har något alternativ kan du använda några matematik i din skiss för att kompensera för spänningsfallet. Till exempel, om din spänning är 4,8V - kommer analogRead () -området 0 ~ 1023 att relatera till 0 ~ 4,8V och inte 0 ~ 5V. Detta kan låta trivialt, men om du använder en sensor som returnerar ett värde som en spänning (t.ex. TMP36 temperaturgivare) - det beräknade värdet blir fel. Så för noggrannhetens skull, använd en extern strömförsörjning.

Steg 2: Varför returnerar AnalogRead () ett värde mellan 0 och 1023?

Varför returnerar AnalogRead () ett värde mellan 0 och 1023?
Varför returnerar AnalogRead () ett värde mellan 0 och 1023?

Detta beror på ADC: s upplösning. Upplösningen (för denna artikel) är i vilken grad något kan representeras numeriskt. Ju högre upplösning, desto större noggrannhet kan något representeras med. Vi mäter upplösning i termer av antalet bitar av upplösning.

Till exempel skulle en 1-bitars upplösning endast tillåta två (två till en) effekt-noll och ett. En 2-bitars upplösning skulle tillåta fyra (två till två) mätvärden-noll, en, två och tre. Om vi försökte mäta ett fem volt-område med en tvåbitars upplösning och den uppmätta spänningen var fyra volt, skulle vår ADC returnera ett numeriskt värde på 3-eftersom fyra volt faller mellan 3,75 och 5V. Det är lättare att föreställa sig detta med bilden.

Så med vårt exempel ADC med 2-bitars upplösning kan det bara representera spänningen med fyra möjliga resulterande värden. Om ingångsspänningen faller mellan 0 och 1,25, returnerar ADC numeriskt 0; om spänningen faller mellan 1,25 och 2,5 returnerar ADC ett numeriskt värde på 1. Och så vidare. Med vår Arduinos ADC-intervall på 0 ~ 1023-har vi 1024 möjliga värden-eller 2 till en effekt av 10. Så våra Arduinos har en ADC med en 10-bitars upplösning.

Steg 3: Så vad är AREF?

För att korta en lång historia, när din Arduino tar en analog avläsning, jämför den spänningen som mäts vid den analoga stiftet som används mot vad som kallas referensspänning. Vid normal analog läsanvändning är referensspänningen kortets driftspänning.

För de mer populära Arduino -korten som Uno, Mega, Duemilanove och Leonardo/Yún -brädorna är driftspänningen 5V. Om du har ett Arduino Due -kort är driftspänningen 3,3V. Om du har något annat - kolla Arduino -produktsidan eller fråga din kortleverantör.

Så om du har en referensspänning på 5V värderas varje enhet som returneras av analogRead () till 0,00488 V. (Detta beräknas genom att dela 1024 i 5V). Vad händer om vi vill mäta spänningar mellan 0 och 2, eller 0 och 4,6? Hur skulle ADC veta vad som är 100% av vårt spänningsintervall?

Och däri ligger anledningen till AREF -stiftet. AREF betyder analog referens. Det tillåter oss att mata Arduino en referensspänning från en extern strömförsörjning. Till exempel, om vi vill mäta spänningar med ett maximalt intervall på 3,3V, skulle vi mata in en fin jämn 3,3V i AREF -stiftet - kanske från en spänningsregulator IC.

Då skulle varje steg i ADC representera cirka 3,22 millivolt (dela 1024 i 3,3). Observera att den lägsta referensspänning du kan ha är 1,1V. Det finns två former av AREF - internt och externt, så låt oss kolla in dem.

Steg 4: Extern AREF

En extern AREF är där du levererar en extern referensspänning till Arduino -kortet. Detta kan komma från en reglerad strömförsörjning, eller om du behöver 3,3V kan du få det från Arduinos 3,3V -stift. Om du använder en extern strömförsörjning, se till att ansluta GND till Arduinos GND -stift. Eller om du använder Ardunos 3.3V -källa - kör bara en bygel från 3.3V -stiftet till AREF -stiftet.

För att aktivera den externa AREF, använd följande i void setup ():

analogReference (EXTERNAL); // använd AREF för referensspänning

Detta sätter referensspänningen till vad du än har anslutit till AREF -stiftet - vilket naturligtvis kommer att ha en spänning mellan 1,1V och kortets driftspänning. Mycket viktig anmärkning - när du använder en extern spänningsreferens måste du ställa in den analoga referensen till EXTERNAL innan du använder analogRead (). Detta hindrar dig från att kortsluta den aktiva interna referensspänningen och AREF -stiftet, vilket kan skada mikrokontrollen på kortet. Om det behövs för din applikation kan du återgå till kortets driftspänning för AREF (det vill säga - tillbaka till det normala) med följande

analogReference (DEFAULT);

Nu för att demonstrera extern AREF på jobbet. Med hjälp av en 3.3V AREF mäter följande skiss spänningen från A0 och visar procentandelen av total AREF och den beräknade spänningen:

#inkludera "LiquidCrystal.h"

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

int analoginput = 0; // vår analoga stift

int analogmount = 0; // lagrar flödesprocent för inkommande värde = 0; // används för att lagra vår procentuella värde flottörspänning = 0; // används för att lagra spänningsvärde

void setup ()

{lcd.begin (16, 2); analogReference (EXTERNAL); // använd AREF för referensspänning}

void loop ()

{lcd.clear (); analogamount = analogRead (analoginput); procent = (analogt belopp/1024,00)*100; spänning = analogmängd*3,222; // i millivolts lcd.setCursor (0, 0); lcd.print ("% av AREF:"); lcd.print (procentandel, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (spänning, 2); fördröjning (250); }

Resultaten av skissen ovan visas i videon.

Steg 5: Intern AREF

Mikrokontrollerna på våra Arduino -kort kan också generera en intern referensspänning på 1,1 V och vi kan använda detta för AREF -arbete. Använd bara raden:

analogReference (INTERNAL);

För Arduino Mega boards, använd:

analogReference (INTERNAL1V1);

i void setup () och du är avstängd. Om du har en Arduino Mega finns det också en 2,56V referensspänning tillgänglig som aktiveras med:

analogReference (INTERNAL2V56);

Slutligen - innan du bestämmer dig för resultaten från din AREF -stift, kalibrera alltid avläsningarna mot en känd bra multimeter.

Slutsats

AREF -funktionen ger dig mer flexibilitet med mätning av analoga signaler.

Det här inlägget kommer till dig av pmdway.com - allt för tillverkare och elektronikentusiaster, med gratis leverans över hela världen.

Rekommenderad: