John Erringtons eksperimenter med en Arduino
On november 28, 2021 by adminPræcis spændingsmåling med Arduino-kortet.
Mikrocontrollere i Arduino-serien har analoge indgange, der kan bruges til at måle spænding. Vi kan bruge dette til at bygge et voltmeter.
Funktionen analogRead() læser spændingen og konverterer den til et tal mellem 0 og 1023.
Arduino tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage har dette eksempel:
Dette er FORKERT! For et bedre resultat skal du bruge (sensorValue + 0,5) * 5,0 / 1024,0 – se forklaring her
Dette får os til at tro, at en aflæsning på 0 svarer til en indgang på 0,000V; og 1023 svarer til en indgangsspænding på 5,000 volt. Dette er ikke helt rigtigt. Lad os se på databladet og se, hvad det fortæller os.
Den ATMEGA-chip, der anvendes på Arduino, har analoge indgange, der kan bruges til nøjagtig måling af spænding
Arduino-mikrocontrolleren er forsynet med en analog-til-digital-konverter (ADC) af typen successiv tilnærmelse, som har følgende specifikation. Henvisninger i parentes således (2: 26.1) henviser til afsnit i AtMega 2560-databladet.
(2: 26.1): ATMega328 og 32U4 har lignende værdier.
Disse specifikationer fortæller os, at Arduino’en er i stand til at måle spændinger med en nøjagtighed
på ± 2 LSB – så den maksimale fejl er 2 bits (4 decimaler) i 10 bits (1024 decimaler)
Så konverterens værst tænkelige nøjagtighed er 4 / 1024 eller 1 del i 256 dvs. 0,25 %.
Midlertid afhænger grænsen for målenøjagtigheden af den anvendte spændingsreference.
Arduinoen har sine egne spændingsreferencer – men de er ikke særlig præcise
Chippen er – afhængigt af typen – forsynet med NOGLE af følgende referencespændinger (6)
DEFAULT: den analoge standardreference på 5 volt (på 5V Arduino-kort) eller 3.3 volt (på 3,3V Arduino-kort)
INTERNAL: en indbygget reference, svarende til 1,1 volt på ATmega168 eller ATmega328 og 2,56 volt på ATmega8- og 32U4-chipkort.
Dette produceres internt ved at forstærke 1,1V-referencen. 2,56V er blot en “typisk” værdi.
EXTERNT: den spænding, der påføres AREF-pinden (kun 0 til 5V). (MicroPro 32U4, NodeMCU og ESP32 har ikke en pin til en ekstern reference – se nedenfor for flere oplysninger.)
Nøjagtigheden af den reference, som spændingen måles i forhold til – ved hjælp af en af ovenstående referencer – er i bedste fald kun 5,25 – 5,0/5,0/5,0 * 100 = 5 % – meget værre end de 0,25 %, som ADC’en giver. Det er klart, at hvis vi ønsker at måle spændinger med den nøjagtighed, som Arduino’en giver, er on-chip referencerne ikke gode nok. Diagrammet nedenfor viser disse fejl sammenlignet med en 4,096V reference beskrevet nedenfor.
Skriv et svar