John Errington’s Experiments with an Arduino
On november 28, 2021 by adminPrecis spänningsmätning med Arduino-kortet.
Mikrokontrollerna i Arduino-serien har analoga ingångar som kan användas för att mäta spänning. Vi kan använda detta för att bygga en voltmeter.
Funktionen analogRead() läser av spänningen och omvandlar den till ett tal mellan 0 och 1023.
Arduino tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage har detta exempel:
Detta är FEL! För ett bättre resultat använd (sensorValue + 0.5) * 5.0 / 1024.0 – se förklaring här
Detta får oss att tro att en avläsning på 0 motsvarar en ingångsspänning på 0.000V; och 1023 motsvarar en ingångsspänning på 5.000 volt. Detta är inte helt sant. Låt oss titta på databladet och se vad det säger oss:
ATMEGA-chippet som används i Arduino har analoga ingångar som kan användas för att exakt mäta spänning
Arduino-mikrokontrollern är försedd med en analog-till-digital-omvandlare (ADC) av successiv approximationstyp som har följande specifikation. Hänvisningar inom parentes (2: 26.1) hänvisar till avsnitt i AtMega 2560-databladet.
(2: 26.1): ATMega328 och 32U4 har liknande värden.
Dessa specifikationer talar om att Arduino kan mäta spänningar med en noggrannhet
på ± 2 LSB – så det maximala felet är 2 bitar (4 decimaler) på 10 bitar (1024 decimaler)
Så omvandlarens noggrannhet i värsta fall är 4 / 1024 eller 1 del av 256, dvs. 0,25 %.
Men gränsen för mätnoggrannheten beror dock på den använda spänningsreferensen.
Arduino har sina egna spänningsreferenser – men de är inte särskilt exakta
Chippet är – beroende på typ – försett med NÅGRA av följande referensspänningar (6)
DEFAULT: den analoga standardreferensen på 5 volt (på 5V Arduino-kort) eller 3.3 volt (på 3,3V Arduino-kretsar)
INTERNAL: en inbyggd referens, motsvarande 1,1 volt på ATmega168 eller ATmega328 och 2,56 volt på ATmega8- och 32U4-kretsar.
Detta produceras internt genom att förstärka 1,1V-referensen. 2,56V är bara ett ”typiskt” värde.
EXTERNAL: den spänning som läggs på AREF-stiftet (endast 0 till 5V). (MicroPro 32U4, NodeMCU och ESP32 har ingen stift för en extern referens – se nedan för mer information.)
Närheten hos referensen mot vilken spänningen mäts – med hjälp av någon av ovanstående referenser – är i bästa fall endast 5,25 – 5,0/5,0/5,0 * 100 = 5 % – mycket sämre än de 0,25 % som ADC:n ger. Om vi vill mäta spänningar med den noggrannhet som Arduino ger är de inbyggda referenserna uppenbarligen inte tillräckligt bra. Diagrammet nedan visar dessa fel jämfört med en referens på 4,096 V som beskrivs nedan.
Lämna ett svar