Indholdsfortegnelse:
- Trin 1: Revision
- Trin 2: Hvorfor returnerer AnalogRead () en værdi mellem 0 og 1023?
- Trin 3: Så hvad er AREF?
- Trin 4: Ekstern AREF
- Trin 5: Intern AREF
Video: Arduino AREF Pin: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
I denne vejledning ser vi på, hvordan du kan måle mindre spændinger med større nøjagtighed ved hjælp af de analoge indgangsstifter på din Arduino eller kompatible kort i forbindelse med AREF -stiften. Men først vil vi lave en revision for at få dig til at komme i gang. Læs dette indlæg helt, før du arbejder med AREF første gang.
Trin 1: Revision
Du husker måske, at du kan bruge Arduino analogRead () -funktionen til at måle spændingen af en elektrisk strøm fra sensorer og så videre ved hjælp af en af de analoge indgangsstifter. Værdien returneret fra analogRead () vil være mellem nul og 1023, hvor nul repræsenterer nul volt og 1023 repræsenterer driftsspændingen for Arduino -kortet i brug.
Og når vi siger driftsspændingen - det er spændingen, der er tilgængelig for Arduino efter strømforsyningskredsløbet. For eksempel, hvis du har et typisk Arduino Uno -kort og kører det fra USB -stikket - der er sikkert 5V til rådighed for kortet fra USB -stikket på din computer eller hub - men spændingen reduceres en smule, når strømmen snor sig rundt om kredsløb til mikrokontrolleren - eller USB -kilden er bare ikke klar til at ridse.
Dette kan let demonstreres ved at tilslutte en Arduino Uno til USB og sætte et multimeter sæt til måling af spænding over 5V- og GND -benene. Nogle tavler vender tilbage så lavt som 4,8 V, nogle højere, men stadig under 5V. Så hvis du kigger efter nøjagtighed, så tænd dit kort fra en ekstern strømforsyning via DC -stikket eller Vin -pin - f.eks. 9V DC. Derefter får du en dejlig 5V, f.eks. Billedet, efter det går gennem effektregulator kredsløbet.
Dette er vigtigt, da nøjagtigheden af enhver analogRead () -værdi påvirkes af ikke at have en ægte 5 V. Hvis du ikke har nogen mulighed, kan du bruge nogle matematik i din skitse til at kompensere for spændingsfaldet. For eksempel, hvis din spænding er 4,8V - vil analogRead () -området på 0 ~ 1023 vedrøre 0 ~ 4,8V og ikke 0 ~ 5V. Dette kan lyde trivielt, men hvis du bruger en sensor, der returnerer en værdi som en spænding (f.eks. TMP36 temperatursensoren) - vil den beregnede værdi være forkert. Så af hensyn til nøjagtigheden skal du bruge en ekstern strømforsyning.
Trin 2: Hvorfor returnerer AnalogRead () en værdi mellem 0 og 1023?
Dette skyldes opløsningen i ADC. Opløsningen (for denne artikel) er i hvilken grad noget kan repræsenteres numerisk. Jo højere opløsning, jo større nøjagtighed kan noget repræsenteres med. Vi måler opløsning i form af antallet af bits af opløsning.
For eksempel ville en 1-bit opløsning kun tillade to (to til en) effekt-nul og en. En 2-bit opløsning ville tillade fire (to til to) to værdier-nul, en, to og tre. Hvis vi forsøgte at måle et fem volt område med en to-bit opløsning, og den målte spænding var fire volt, ville vores ADC returnere en numerisk værdi på 3-da fire volt falder mellem 3,75 og 5V. Det er lettere at forestille sig dette med billedet.
Så med vores eksempel ADC med 2-bit opløsning, kan det kun repræsentere spændingen med fire mulige resulterende værdier. Hvis indgangsspændingen falder mellem 0 og 1,25, returnerer ADC numerisk 0; hvis spændingen falder mellem 1,25 og 2,5, returnerer ADC en numerisk værdi på 1. Og så videre. Med vores Arduinos ADC-område på 0 ~ 1023-har vi 1024 mulige værdier-eller 2 til en styrke på 10. Så vores Arduinos har en ADC med en 10-bit opløsning.
Trin 3: Så hvad er AREF?
For at kortlægge en lang historie, når din Arduino tager en analog aflæsning, sammenligner den spændingen målt ved den analoge pin, der bruges, mod det, der er kendt som referencespændingen. Ved normal analogLæs brug er referencespændingen kortets driftsspænding.
For de mere populære Arduino -tavler som Uno, Mega, Duemilanove og Leonardo/Yún boards, er driftsspændingen på 5V. Hvis du har et Arduino Due -kort, er driftsspændingen 3,3V. Hvis du har noget andet - tjek Arduino -produktsiden, eller spørg din bordleverandør.
Så hvis du har en referencespænding på 5V, er hver enhed returneret af analogRead () værdiansat til 0,00488 V. (Dette beregnes ved at dividere 1024 i 5V). Hvad hvis vi vil måle spændinger mellem 0 og 2 eller 0 og 4,6? Hvordan ville ADC vide, hvad der er 100% af vores spændingsområde?
Og deri ligger årsagen til AREF -stiften. AREF betyder Analog REFerence. Det giver os mulighed for at fodre Arduino en referencespænding fra en ekstern strømforsyning. For eksempel, hvis vi vil måle spændinger med et maksimumsområde på 3,3V, ville vi føre en dejlig glat 3,3V ind i AREF -stiften - måske fra en spændingsregulator IC.
Så ville hvert trin i ADC repræsentere omkring 3,22 millivolt (opdele 1024 i 3,3). Bemærk, at den laveste referencespænding, du kan have, er 1,1V. Der er to former for AREF - intern og ekstern, så lad os tjekke dem.
Trin 4: Ekstern AREF
En ekstern AREF er, hvor du leverer en ekstern referencespænding til Arduino -kortet. Dette kan komme fra en reguleret strømforsyning, eller hvis du har brug for 3.3V, kan du få det fra Arduino's 3.3V pin. Hvis du bruger en ekstern strømforsyning, skal du sørge for at tilslutte GND'en til Arduino's GND -pin. Eller hvis du bruger Ardunos 3.3V kilde - bare kør en jumper fra 3.3V pin til AREF pin.
For at aktivere den eksterne AREF skal du bruge følgende i konfiguration af tomrum ():
analogReference (EXTERNAL); // brug AREF til referencespænding
Dette indstiller referencespændingen til det, du har tilsluttet AREF -stiften - som naturligvis vil have en spænding mellem 1,1V og tavlens driftsspænding. Meget vigtig bemærkning - når du bruger en ekstern spændingsreference, skal du indstille den analoge reference til EKSTERN før du bruger analogRead (). Dette forhindrer dig i at kortslutte den aktive interne referencespænding og AREF -stiften, hvilket kan beskadige mikrokontrolleren på kortet. Hvis det er nødvendigt for din applikation, kan du vende tilbage til kortets driftsspænding for AREF (det vil sige - tilbage til det normale) med følgende
analogReference (DEFAULT);
Nu for at demonstrere ekstern AREF på arbejde. Ved hjælp af en 3.3V AREF måler følgende skitse spændingen fra A0 og viser procentdelen af den samlede AREF og den beregnede spænding:
#include "LiquidCrystal.h"
LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
int analoginput = 0; // vores analoge pin
int analogbeløb = 0; // gemmer flydende procentdel for indgående værdi = 0; // bruges til at gemme vores procentværdi float spænding = 0; // bruges til at gemme spændingsværdi
ugyldig opsætning ()
{lcd.begin (16, 2); analogReference (EXTERNAL); // brug AREF til referencespænding}
hulrum ()
{lcd.clear (); analogamount = analogRead (analogindgang); procent = (analogt beløb/1024,00)*100; spænding = analogmængde*3,222; // i millivolt lcd.setCursor (0, 0); lcd.print ("% af AREF:"); lcd.print (procent, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (spænding, 2); forsinkelse (250); }
Resultaterne af skitsen ovenfor er vist i videoen.
Trin 5: Intern AREF
Mikrokontrollerne på vores Arduino -tavler kan også generere en intern referencespænding på 1,1V, og vi kan bruge dette til AREF -arbejde. Brug blot linjen:
analogReference (INTERN);
Til Arduino Mega boards, brug:
analogReference (INTERNAL1V1);
i void setup (), og du er slukket. Hvis du har en Arduino Mega, er der også en 2,56V referencespænding tilgængelig, som aktiveres med:
analogReference (INTERNAL2V56);
Endelig - før du afgør resultaterne fra din AREF -pin, skal du altid kalibrere målingerne mod et kendt godt multimeter.
Konklusion
AREF -funktionen giver dig mere fleksibilitet med måling af analoge signaler.
Dette indlæg blev bragt til dig af pmdway.com - alt for producenter og elektronikentusiaster, med gratis levering over hele verden.
Anbefalede:
DIY Arduino Pin Pointer Metal Detector: 3 trin
DIY Arduino Pin Pointer Metal Detector: En traditionel metaldetektor kan lokalisere et nedgravet emne og give dig en grov placering af objektet på jorden En pinpointer giver dig mulighed for at fastgøre et objekts placering, lave et mindre hul, når du graver, og udtrække elementet . Det kan også
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
100+ switches i en enkelt pin af Arduino: 6 trin (med billeder)
100+ kontakter i en enkelt pin af Arduino: Introduktion Var du løbet tør for input -pins? Bare rolig, her er en løsning uden skiftregistre. I denne video skal vi lære om at forbinde mere end 100 switches til en enkelt pin af Arduino
Tilslutning af flere knapper til en enkelt pin på Arduino: 4 trin
Tilslutning af flere knapper til en enkelt pin på Arduino: Hej alle sammen, Når dine Arduino -projekter har vokset blinkende lysdioder, kan det være, at du har brug for nogle ekstra pins. Jeg viser dig et trick, som du kan bruge, hvor du kan have flere knapper, der alle er forbundet til den samme analoge pin
ISP 6 Pin til 8 Pin Socket: 4 trin
ISP 6 Pin til 8 Pin Socket: Grunden til at jeg hovedsageligt byggede dette projekt var at programmere ATTiny45, som har en 8 pin forbindelse, mens min USBtinyISP (fra Ladyada) kun har en 10 pin og 6 pin forbindelse. Efter at have snoket rundt på internettet i cirka 3-4 uger fandt jeg ikke noget, hvad