John Erringtons Experimente mit einem Arduino
On November 28, 2021 by adminPräzise Spannungsmessung mit dem Arduino-Board.
Die Mikrocontroller der Arduino-Reihe bieten analoge Eingänge, die zur Spannungsmessung verwendet werden können. Damit können wir ein Voltmeter bauen.
Die Funktion analogRead() liest die Spannung und wandelt sie in eine Zahl zwischen 0 und 1023 um.
Das Arduino-Tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage hat dieses Beispiel:
Das ist FALSCH! Für ein besseres Ergebnis verwenden Sie (sensorValue + 0.5) * 5.0 / 1024.0 – siehe Erklärung hier
Das führt uns zu der Annahme, dass ein Wert von 0 einer Eingangsspannung von 0.000V entspricht; und 1023 entspricht einer Eingangsspannung von 5.000 Volt. Dies ist nicht ganz richtig. Schauen wir uns das Datenblatt an und sehen wir, was es uns sagt.
Der ATMEGA-Chip, der im Arduino verwendet wird, hat analoge Eingänge, die verwendet werden können, um die Spannung genau zu messen
Der Arduino-Mikrocontroller ist mit einem Analog-Digital-Wandler (ADC) des Typs sukzessive Annäherung ausgestattet, der die folgende Spezifikation hat. Die Verweise in Klammern (2: 26.1) beziehen sich auf Abschnitte des AtMega 2560-Datenblatts.
(2: 26.1): ATMega328 und 32U4 haben ähnliche Werte.
Aus diesen Spezifikationen geht hervor, dass der Arduino in der Lage ist, Spannungen mit einer Genauigkeit
von ± 2 LSB zu messen – der maximale Fehler beträgt also 2 Bits (4 dezimal) in 10 Bits (1024 dezimal)
Die Worst-Case-Genauigkeit des Wandlers ist also 4 / 1024 oder 1 Teil in 256, also 0,25%.
Die Grenze der Messgenauigkeit hängt jedoch von der verwendeten Spannungsreferenz ab.
Der Arduino hat seine eigenen Spannungsreferenzen – aber sie sind nicht sehr genau
Der Chip ist – je nach Typ – mit EINIGEN der folgenden Referenzspannungen ausgestattet (6)
DEFAULT: die Standard-Analogreferenz von 5 Volt (auf 5V Arduino Boards) oder 3.3 Volt (auf 3,3V Arduino-Boards)
INTERNAL: eine eingebaute Referenz, die 1,1 Volt auf dem ATmega168 oder ATmega328 und 2,56 Volt auf den ATmega8- und 32U4-Chipboards entspricht.
Dies wird intern durch Verstärkung der 1,1V-Referenz erzeugt. 2,56V ist nur ein „typischer“ Wert.
EXTERN: die an den AREF-Pin angelegte Spannung (nur 0 bis 5V). (Der MicroPro 32U4, NodeMCU und ESP32 haben keinen Pin für eine externe Referenz – siehe unten für weitere Informationen.)
Die Genauigkeit der Referenz, gegen die die Spannung gemessen wird – unter Verwendung einer der oben genannten Referenzen – ist bestenfalls nur 5,25 – 5,0/5,0 * 100 = 5% – viel schlechter als die 0,25%, die der ADC liefert. Wenn wir Spannungen mit der vom Arduino gebotenen Genauigkeit messen wollen, sind die On-Chip-Referenzen eindeutig nicht gut genug. Das folgende Diagramm zeigt diese Fehler im Vergleich zu einer 4,096V-Referenz, die weiter unten beschrieben wird.
Schreibe einen Kommentar