John Errington’s Experiments with an Arduino
On november 28, 2021 by adminNauwkeurige spanningsmeting met het Arduino board.
De Arduino reeks van microcontrollers biedt analoge ingangen die kunnen worden gebruikt om spanning te meten. We kunnen dit gebruiken om een voltmeter te bouwen.
De functie analogRead() leest de spanning en zet deze om in een getal tussen 0 en 1023.
Arduino tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage heeft dit voorbeeld:
Dit is FOUT! Voor een beter resultaat gebruikt u (sensorValue + 0.5) * 5.0 / 1024.0 – zie uitleg hier
Dit doet ons geloven dat een waarde van 0 overeenkomt met een ingangsspanning van 0.000V; en 1023 komt overeen met een ingangsspanning van 5.000 volt. Dit is niet helemaal waar. Laten we eens kijken naar de datasheet en zien wat het ons vertelt.
De ATMEGA chip gebruikt op de Arduino heeft analoge ingangen die kunnen worden gebruikt om nauwkeurig spanning te meten
De Arduino microcontroller is voorzien van een opeenvolgende benadering type Analoog naar Digitaal omzetter (ADC) die de volgende specificatie heeft. Verwijzingen tussen haakjes aldus (2: 26.1) verwijzen naar secties van de AtMega 2560 datasheet.
(2: 26.1): ATMega328 en 32U4 hebben vergelijkbare waarden.
Deze specificaties vertellen ons dat de Arduino in staat is om spanningen te meten met een nauwkeurigheid
van ± 2 LSB – dus de maximale fout is 2 bits (4 decimaal) in 10 bits (1024 decimaal)
Dus de worst case nauwkeurigheid van de converter is 4 / 1024 of 1 deel in 256 dwz 0,25%.
De grens van de meetnauwkeurigheid hangt echter af van de gebruikte spanningsreferentie.
De Arduino heeft zijn eigen spanningsreferenties – maar ze zijn niet erg nauwkeurig
De chip – afhankelijk van het type – is voorzien van ZEKER van de volgende referentie voltages (6)
DEFAULT: de standaard analoge referentie van 5 volt (op 5V Arduino boards) of 3.3 volt (op 3.3V Arduino boards)
INTERNAL: een ingebouwde referentie, gelijk aan 1.1 volt op de ATmega168 of ATmega328 en 2.56 volt op de ATmega8 en 32U4 chip boards.
dit wordt intern geproduceerd door versterking van de 1.1V referentie. 2.56V is slechts een “typische” waarde.
EXTERNAL: de spanning die op de AREF pin wordt gezet (alleen 0 tot 5V). (De MicroPro 32U4, NodeMCU en ESP32 hebben geen pen voor een externe referentie – zie hieronder voor meer informatie.)
De nauwkeurigheid van de referentie waartegen de spanning wordt gemeten – met behulp van een van de bovenstaande referenties – is op zijn best slechts 5,25 – 5,0/5,0 * 100 = 5% – veel slechter dan de 0,25% die de ADC levert. Duidelijk als wij voltages aan de nauwkeurigheid wensen te meten die door Arduino wordt verstrekt zijn de op-chip verwijzingen niet goed genoeg. Het diagram hieronder toont deze fouten in vergelijking met een 4.096V referentie die hieronder wordt beschreven.
Geef een antwoord