Analoog naar digitaal converteren (analoog serieel lezen) - Arduino Basics

Probeer Ons Instrument Voor Het Oplossen Van Problemen





In deze Arduino-basics proberen we de code-implementatieprocedure te begrijpen waarbij een extern analoog signaal wordt toegevoerd aan de Arduino analoge ingang en wordt vertaald of omgezet in een overeenkomstig evenredige digitale uitlezing. Hier gebruiken we een variabele weerstand in de vorm van een pot als analoge signaalbron.

Analoog lezen serieel

In dit voorbeeld leren we de methode voor het lezen van een analoge ingang van een extern apparaat, zoals een potentiometer, een elektromechanisch apparaat dat is ontworpen om een ​​variërende weerstand in een circuit te implementeren door middel van handmatige bediening.



Een Arduino kan worden gebruikt voor het meten van de grootte van de spanning die uit een potentiometer komt om de overeenkomstig variërende weerstand te lezen en te identificeren. Dit kan gedaan worden door de spanning als analoge waarde in de Arduino analoge ingangspoort te voeren.

Hier zullen we zien hoe het bovenstaande wordt afgedwongen na het tot stand brengen van seriële communicatie tussen de Arduino en de gekoppelde computer.



Hardware vereist

Arduino-bord

Potentiometer van 10 kilo-ohm

Circuitwerking

Zoals weergegeven in het bovenstaande diagram, sluit u de drie draden die uit de pot komen aan op uw Arduino-poorten.

De draad van een van de buitenste draden van de pot wordt toegewezen aan de grond of de negatieve lijn van het bord.

Het andere vrije uiteinde van het uiteinde wordt verbonden met de + 5V van het bord.

Wat overblijft is de middelste leiding van de pot, die wordt beëindigd op de analoge ingang van het Arduino-bord.

Wanneer de potschacht wordt geroteerd, verschuift de weerstand over de middelste leiding en de buitenste aansluiting van hoger naar lager en vice versa, afhankelijk van aan welke kant de schuifarm dichterbij komt.

Wanneer de schuifarm bijvoorbeeld naar de + 5V-lead wordt gedraaid, komt de middelste lead dichter bij 5V en heeft deze de neiging om de hele waarde te verwerven wanneer deze de toegewezen 5V-lead raakt. Evenzo, wanneer de schuifas naar de aardpotlood wordt bewogen, neigt de middelste geleider naar een nulpotentiaal.

De bovenstaande lineair variërende voedingsspanning over de centrale aansluiting van de pot wordt gelezen door de analoge ingang van Arduino om deze te interpreteren in een overeenkomstig variërende weerstand van de pot.

De Arduino bevat een intern analoog-naar-digitaal convertercircuit dat de bovenstaande potbeweging effectief interpreteert en omzet in getallen tussen 0 en 1023.

Een bepaalde positie boven de potschacht resulteert in een proportioneel getal tussen 0 en 1023 dat wordt vertaald door de Arduino, en voor de eindwaarden van 5V en nul volt zijn de interpretaties duidelijk 0 en 1023.

In het genoemde programma hoeft de setup-functie alleen te worden geactiveerd voor het initiëren van seriële communicatie, met een snelheid van 9600 bits gegevens per seconde, over uw Arduino-bord en de computer.

Het verwachte commando is in de vorm:

Serial.begin (9600)

Vervolgens dwingen we in de hoofdlus van uw code een variabele af om de weerstandswaarde vast te stellen (die zou zijn zoals besproken tussen 0 en 1023, alleen geschikt voor een int-gegevenstype) ontvangen van de pot-leads:

int sensorValue = analogRead (A0)

Druk deze informatie tot slot af naar uw seriële venster als een decimale waarde (DEC). U kunt het commando Serial.println () gebruiken om dit in de laatste regel code te implementeren:

Serial.println (sensorValue, DEC)

Hierna, telkens wanneer Serial Monitor wordt gestart in het Arduino-ontwikkelingsdomein (dit wordt gedaan door op de knop te klikken die direct aan de rechterkant van de 'Upload'-knop in de koptekst van het programma staat).

we zouden een consistente reeks cijfers zien lopen van 0-1023, overeenkomend met de variërende rotatiepositie van de potschacht.

Als we de rotatie van de potschacht op een bepaald moment stoppen, wordt het corresponderende momentane nummer weergegeven op het scherm van de Arduino, dit zou weer proportioneel veranderen naarmate we de positie van de potschacht veranderen.

De code


AnalogReadSerial
Leest een analoge ingang op pin 0, print het resultaat naar de seriële monitor.
Bevestig de middelste pen van een potentiometer aan pen A0 en de buitenste pennen aan + 5V en aarde.

Deze voorbeeldcode is in het publieke domein.

// de setup-routine wordt eenmaal uitgevoerd wanneer u op reset drukt:
ongeldige setup () {
// initialiseer seriële communicatie met 9600 bits per seconde:
Serial.begin (9600)

// de lusroutine loopt voor altijd opnieuw en opnieuw:
leegte lus () {
// lees de invoer op analoge pin 0:
int sensorValue = analogRead (A0)
// print de waarde die u leest:
Serial.println (sensorValue)
delay (1) // vertraging tussen leesbewerkingen voor stabiliteit




Vorige: Controle van de status van een schakelaar (digitaal lezen serieel) - Arduino Basics Volgende: 1,25 V tot 120 V netspanningsregelaarcircuit