Konvertering av analog til digital (analog leseserie) - Arduino-grunnleggende

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette Arduino-grunnleggende prøver vi å forstå prosedyren for implementering av kode der et eksternt analogt signal blir matet til Arduino-analoge inngangen og oversatt eller konvertert til en tilsvarende proporsjonal digital avlesning. Her benytter vi en variabel motstand i form av en pott som den analoge signalkilden.

Analog Read Serial

I dette eksemplet lærer vi metoden for å lese en analog inngang fra en ekstern enhet slik et potensiometer, som er en n elektromekanisk enhet designet for å implementere en varierende motstand i en krets gjennom manuell drift.



En Arduino kan brukes til å måle størrelsen på spenningen som kommer ut fra et potensiometer for å lese og identifisere dens tilsvarende varierende motstand. Dette kan gjøres ved å mate spenningen til den analoge inngangsporten til Arduino som en analog verdi.

Her får vi se hvordan det ovennevnte håndheves etter etablering av seriell kommunikasjon over Arduino og den koblede datamaskinen.



Maskinvare kreves

Arduino Board

10 kilohm potensiometer

Kretsdrift

Som avbildet i diagrammet ovenfor, kobler du de tre ledningene som kommer ut fra potten til Arduino-porter.

Ledningen fra en av de ytre ledningene i potten tildeles bakken eller den negative linjen på brettet.

Den andre ledningen for ekstreme ytterenden blir koblet til + 5V på brettet.

Det som er igjen er senterledningen til potten, som blir avsluttet til den analoge inngangen til Arduino-kortet.

Når potteakselen roteres, skifter motstanden over midtledningen og den ytre terminalen fra høyere til nedre og omvendt, avhengig av hvilken side skyvearmen kommer nærmere.

For eksempel når glidearmen roteres mot + 5V-ledningen, kommer midtledningen nærmere 5V og har en tendens til å tilegne seg hele verdien når den berører 5V-tilordnet ledning. På samme måte når glideakselen beveges mot bakken potten bly, har midtledningen en tendens til å oppnå et nullpotensial.

Ovennevnte lineært varierende forsyningsspenning over senterledningen til gryten leses av den arduino analoge inngangen for å tolke den til en tilsvarende varierende motstand av gryten.

Arduino vedlegger en intern analog-til-digital-omformerkrets som effektivt tolker den ovennevnte pottebevegelsen og konverterer den til tall mellom 0 og 1023.

En bestemt posisjon over gryteakselen resulterer i at et proporsjonalt tall mellom 0 og 1023 blir oversatt av Arduino, og for sluttverdiene på 5V og null volt er tolkningene åpenbart 0 og 1023.

I det refererte programmet må oppsettfunksjonen bare utløses for å starte seriell kommunikasjon, hastigheten er 9600 biter data per sekund, over Arduino-kortet og datamaskinen.

Den forventede kommandoen er i form:

Serial.begin (9600)

Deretter håndhever vi en variabel i hovedsløyfen til koden din for å fikse motstandsverdien (som ville være som diskutert mellom 0 og 1023, bare egnet for en int-datatype) mottatt fra potleadene:

int sensorValue = analogRead (A0)

For å avslutte, skriv ut denne informasjonen til serievinduet som en desimalverdi (DEC). Du kan bruke kommandoen Serial.println () for å implementere dette i den siste kodelinjen:

Serial.println (sensorValue, DEC)

Etter dette, hver gang Serial Monitor startes i Arduino-utviklingsdomenet (dette gjøres ved å klikke på knappen som er rett til høyre for 'Last opp' -knappen i toppteksten til programmet).

vi ville se en jevn kjede av sifre som løper fra 0-1023, tilsvarende den varierende rotasjonsposisjonen til poteakselen.

Hvis vi stopper rotasjonen av pottskaftet på et øyeblikk, vil det tilsvarende øyeblikkelige nummeret vises på skjermen til Arduino, dette vil igjen endre seg proporsjonalt når vi fortsetter å endre poteakselposisjonen.

Koden

/ *
AnalogReadSerial
Leser en analog inngang på pin 0, skriver ut resultatet til seriell skjerm.
Fest midtpinnen til et potensiometer til pinnen A0, og de utvendige pinnene til + 5V og jord.

Dette eksempelkoden er i det offentlige området.
* /

// installasjonsrutinen kjører en gang når du trykker på reset:
ugyldig oppsett () {
// initialisere seriell kommunikasjon med 9600 bits per sekund:
Serial.begin (9600)
}

// loop-rutinen går om og om igjen for alltid:
ugyldig sløyfe () {
// les inngangen på analog pin 0:
int sensorValue = analogRead (A0)
// skriv ut verdien du leste:
Serial.println (sensorValue)
forsinkelse (1) // forsinkelse mellom avlesninger for stabilitet
}




Forrige: Monitoring State of a Switch (Digital Read Serial) - Arduino Basics Neste: 1.25V til 120V nettjusterbar spenningsregulator krets