Indholdsfortegnelse:

Arduino AREF Pin: 6 trin
Arduino AREF Pin: 6 trin

Video: Arduino AREF Pin: 6 trin

Video: Arduino AREF Pin: 6 trin
Video: Измерение расстояния с помощью 6-контактного лазерного модуля VL53L0X с Arduino 2024, Juli
Anonim
Arduino AREF Pin
Arduino AREF Pin

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

Revision!
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?

Hvorfor returnerer AnalogRead () en værdi mellem 0 og 1023?
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: