John Errington’s Experiments with an Arduino
On 28 listopada, 2021 by adminPrecyzyjny pomiar napięcia za pomocą płytki Arduino.
Mikrokontrolery z serii Arduino posiadają wejścia analogowe, które można wykorzystać do pomiaru napięcia. Możemy to wykorzystać do zbudowania woltomierza.
Funkcja analogRead() odczytuje napięcie i konwertuje je na liczbę z zakresu od 0 do 1023.
Tutorial Arduino (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage ma taki przykład:
To jest BŁĘDNE! Dla lepszego wyniku użyj (sensorValue + 0.5) * 5.0 / 1024.0 – zobacz wyjaśnienie tutaj
To prowadzi nas do przekonania, że odczyt 0 odpowiada napięciu wejściowemu 0.000V; a 1023 odpowiada napięciu wejściowemu 5.000V. Nie jest to do końca prawdą. Spójrzmy na arkusz danych i zobaczmy, co on nam mówi.
Układ ATMEGA zastosowany w Arduino ma wejścia analogowe, które mogą być użyte do dokładnego pomiaru napięcia
Mikrokontroler Arduino jest wyposażony w przetwornik analogowo-cyfrowy (ADC) typu successive approximation, który ma następującą specyfikację. Odniesienia pokazane w nawiasach w ten sposób (2: 26.1) odnoszą się do sekcji arkusza danych AtMega 2560.
(2: 26.1): ATMega328 i 32U4 mają podobne wartości.
Specyfikacje te mówią nam, że Arduino jest w stanie mierzyć napięcia z dokładnością
o ± 2 LSB – więc maksymalny błąd wynosi 2 bity (4 dziesiętne) w 10 bitach (1024 dziesiętne)
Więc najgorszy przypadek dokładności konwertera wynosi 4 / 1024 lub 1 część na 256, tj. 0,25%.
Jednakże granica dokładności pomiaru zależy od użytego odniesienia napięcia.
Arduino ma własne referencje napięciowe – ale nie są one zbyt precyzyjne
Układ – w zależności od typu – jest wyposażony w JEDNO z następujących napięć referencyjnych (6)
DEFAULT: domyślna analogowa referencja 5 V (na płytkach Arduino 5 V) lub 3.3 V (na płytkach Arduino 3.3 V)
INTERNAL: wbudowana referencja, równa 1.1 V na ATmega168 lub ATmega328 i 2.56 V na ATmega8 i 32U4.
jest ona wytwarzana wewnętrznie przez wzmocnienie referencji 1.1 V. 2.56V jest tylko wartością „typową”.
EXTERNAL: napięcie przyłożone do pinu AREF (tylko od 0 do 5V). (MicroPro 32U4, NodeMCU i ESP32 nie mają pinu dla zewnętrznego odniesienia – zobacz poniżej po więcej informacji.)
Dokładność odniesienia, względem którego mierzone jest napięcie – używając któregokolwiek z powyższych odniesień – wynosi w najlepszym przypadku tylko 5.25 – 5.0/5.0 * 100 = 5% – znacznie gorzej niż 0.25%, które zapewnia ADC. Jest oczywiste, że jeśli chcemy mierzyć napięcia z dokładnością zapewnianą przez Arduino, referencje on-chip nie są wystarczająco dobre. Poniższy wykres pokazuje te błędy w porównaniu do referencji 4.096V opisanej poniżej.
Dodaj komentarz