Konvertera analog till digital (analog läsning) - Arduino-grunderna

Prova Vårt Instrument För Att Eliminera Problem





I de här Arduino-grunderna försöker vi förstå kodimplementeringsförfarandet där en extern analog signal matas till den Arduino analoga ingången och översätts eller omvandlas till en motsvarande proportionell digital avläsning. Här använder vi ett variabelt motstånd i form av en kruka som den analoga signalkällan.

Analog Läs serie

I detta exempel lär vi oss metoden för att läsa en analog ingång från en extern enhet, en sådan potentiometer, som är en n elektromekanisk anordning som är utformad för att implementera ett varierande motstånd i en krets genom manuell drift.



En Arduino kan användas för att mäta storleken på spänningen som kommer ut från en potentiometer för att läsa och identifiera dess motsvarande varierande motstånd. Detta kan göras genom att mata spänningen till den analoga Arduino-ingången som ett analogt värde.

Här ser vi hur ovanstående tillämpas efter att ha upprättat seriell kommunikation över Arduino och den länkade datorn.



Maskinvara krävs

Arduino styrelse

Potentiometer på 10 kilohm

Kretsdrift

Som avbildat i diagrammet ovan, anslut de tre ledningarna som kommer ut från potten till dina Arduino-portar.

Tråd från en av de yttre ledningarna i potten tilldelas marken eller den negativa linjen på brädet.

Den andra ledningen för extrema yttre ändar kopplas till + 5V på kortet.

Det som finns kvar är mittkabeln på potten, som avslutas med den analoga ingången på Arduino-kortet.

När kardanaxeln roteras förskjuts motståndet över mittledningen och den yttre terminalen från högre till nedre och vice versa beroende på vilken sida skjutarmen kommer närmare.

Till exempel när skjutarmen roteras mot + 5V-ledningen kommer mittledningen närmare 5V och tenderar att få hela värdet när den vidrör 5V-tilldelad ledning. På liknande sätt när skjutaxeln förflyttas mot jordkabelns ledning tenderar mittledningen att uppnå en nollpotential.

Ovanstående linjärt varierande matningsspänning över kärlets mittkabel läses av den arduino analoga ingången för att tolka den i ett motsvarande varierande motstånd hos krukan.

Arduino bifogar en intern analog-till-digital-omvandlingskrets som effektivt tolkar ovanstående rörelser och omvandlar den till siffror mellan 0 och 1023.

En viss position över krukaxeln resulterar i att ett proportionellt antal mellan 0 och 1023 översätts av Arduino, och för slutvärdena 5V och noll volt är tolkningarna uppenbarligen 0 och 1023.

I det hänvisade programmet behöver installationsfunktionen bara utlösas för att initiera seriell kommunikation, hastigheten är 9600 bitar data per sekund, över ditt Arduino-kort och datorn.

Det förväntade kommandot är i form:

Serial.begin (9600)

Därefter, i huvudslingan i din kod, tillämpar vi en variabel för att fixa motståndsvärdet (vilket skulle vara som diskuterat mellan 0 och 1023, bara lämpligt för en int-datatyp) som tas emot från potten:

int sensorValue = analogRead (A0)

För att avsluta, skriv ut denna information till ditt seriefönster som ett decimalvärde (DEC). Du kan använda kommandot Serial.println () för att implementera detta i den sista raden kod:

Serial.println (sensorValue, DEC)

Efter detta, när Serial Monitor initieras i Arduino-utvecklingsdomänen (detta görs genom att klicka på knappen som är omedelbart till höger om knappen 'Ladda upp' i programmets rubrik).

vi skulle se en konstant kedja av siffror som sträcker sig från 0-1023, vilket motsvarar den varierande rotationspositionen för kardanaxeln.

Om vi ​​stoppar rotationen av krukaxeln någon gång kommer motsvarande ögonblicksnummer att visas på Arduino-skärmen, detta skulle återigen förändras proportionellt när vi fortsätter att ändra krukaxelns position.

Koden

/ *
AnalogReadSerial
Läser en analog ingång på stift 0, skriver ut resultatet till den seriella bildskärmen.
Fäst mittstiftet på en potentiometer på stift A0 och de yttre stiften till + 5V och jord.

Det här exempelkoden är i det offentliga området.
* /

// installationsrutinen körs en gång när du trycker på reset:
ogiltig installation () {
// initiera seriell kommunikation med 9600 bitar per sekund:
Serial.begin (9600)
}

// looprutinen går om och om igen för alltid:
ogiltig slinga () {
// läs ingången på den analoga stift 0:
int sensorValue = analogRead (A0)
// skriv ut det värde du läser:
Serial.println (sensorValue)
fördröjning (1) // fördröjning mellan läsningar för stabilitet
}




Tidigare: Monitoring State of a Switch (Digital Read Serial) - Arduino Basics Nästa: 1.25V till 120V nätjusterbar spänningsregulatorkrets