Konvertering af analog til digital (analog læs seriel) - Arduino-grundlæggende

Prøv Vores Instrument Til At Fjerne Problemer





I dette Arduino-basics forsøger vi at forstå kodeimplementeringsproceduren, hvor et eksternt analogt signal føres til Arduino-analoge input og oversættes eller konverteres til en tilsvarende proportional digital aflæsning. Her anvender vi en variabel modstand i form af en potte som den analoge signalkilde.

Analog læseserie

I dette eksempel lærer vi metoden til aflæsning af en analog indgang fra en ekstern enhed, et sådant potentiometer, som er en n elektromekanisk enhed designet til at implementere en varierende modstand i et kredsløb gennem manuel betjening.



En Arduino kan bruges til at måle størrelsen af ​​spænding, der kommer ud fra et potentiometer for at læse og identificere dens tilsvarende varierende modstand. Dette kan gøres ved at føre spændingen til den analoge Arduino-indgangsport som en analog værdi.

Her ser vi, hvordan ovenstående håndhæves efter oprettelse af seriel kommunikation på tværs af Arduino og den sammenkædede computer.



Hardware krævet

Arduino Board

Potentiometer på 10 kilohm

Kredsløb

Som vist i diagrammet ovenfor skal du tilslutte de tre ledninger, der kommer ud fra puljen til dine Arduino-porte.

Tråd fra en af ​​de ydre ledninger i puljen tildeles jorden eller den negative linje på brættet.

Den anden ledning til ekstrem ydre ende forbindes med + 5V på kortet.

Hvad der er tilbage er den midterste ledning i potten, som bliver afsluttet til den analoge indgang på Arduino-kortet.

Når gryderakslen drejes, skifter modstanden over midterledningen og den ydre terminal fra højere til lavere og omvendt afhængigt af hvilken side skyderarmen kommer tættere på.

For eksempel når skyderarmen drejes mod + 5V-ledningen, kommer midterledningen tættere på 5V og har tendens til at erhverve hele værdien, når den rører ved den 5V tildelte ledning. Tilsvarende når skyderakslen bevæges mod jordpotensledningen, har midterledningen en tendens til at nå et nulpotentiale.

Ovennævnte lineært varierende forsyningsspænding over grydernes midterledning læses af den arduino analoge indgang til fortolkning af den i en tilsvarende varierende modstand af gryden.

Arduino vedlægger et internt analog-til-digital-omformerkredsløb, som effektivt fortolker ovenstående pottebevægelse og konverterer det til tal mellem 0 og 1023.

En bestemt position over potskaftet resulterer i, at et proportionalt tal mellem 0 og 1023 oversættes af Arduino, og for slutværdierne på 5V og nul volt er fortolkningerne naturligvis 0 og 1023.

I det henviste program skal installationsfunktionen udløses udelukkende til initiering af seriel kommunikation, hastigheden er 9600 bit data pr. Sekund på tværs af dit Arduino-kort og computeren.

Den forventede kommando er i form:

Serial.begin (9600)

Derefter håndhæver vi i din kodes hovedsløjfe en variabel for at fastsætte modstandsværdien (som ville være som diskuteret mellem 0 og 1023, bare egnet til en int-datatype) modtaget fra pot-leads:

int sensorValue = analogRead (A0)

For at afslutte skal du udskrive disse oplysninger til dit serielle vindue som en decimalværdi. Du kan bruge kommandoen Serial.println () til at implementere dette i den sidste kodelinje:

Serial.println (sensorValue, DEC)

Herefter, hver gang Serial Monitor startes i Arduino-udviklingsdomænet (dette gøres ved at klikke på knappen, der er umiddelbart til højre for knappen 'Upload' i programmets overskrift).

vi ville se en ensartet kæde af cifre, der løber fra 0-1023, svarende til den forskellige rotationsposition for potakslen.

Hvis vi et øjeblik stopper rotationen af ​​potten, vises det tilsvarende øjeblikkelige antal på Arduino-skærmen, dette vil igen ændre sig forholdsmæssigt, når vi fortsætter med at ændre potten.

Koden

/ *
AnalogReadSerial
Læser en analog indgang på pin 0, udskriver resultatet til den serielle skærm.
Fastgør potentiometerets midterstift til pin A0, og de udvendige ben til + 5V og jord.

Dette eksempelkode er i det offentlige domæne.
* /

// installationsrutinen kører en gang, når du trykker på reset:
ugyldig opsætning () {
// initialiser seriel kommunikation med 9600 bits pr. sekund:
Serial.begin (9600)
}

// loop-rutinen løber igen og igen for evigt:
ugyldig sløjfe () {
// læs input på analog pin 0:
int sensorValue = analogRead (A0)
// udskriv den værdi, du læser:
Serial.println (sensorValue)
forsinkelse (1) // forsinkelse mellem læsninger for stabilitet
}




Tidligere: Monitoring State of a Switch (Digital Read Serial) - Arduino Basics Næste: 1.25V til 120V netjusterbar spændingsregulator kredsløb