John Errington kísérletei Arduinóval
On november 28, 2021 by adminPrecise voltage measurement with the Arduino board.
Az Arduino mikrokontrollerek sorozata analóg bemeneteket biztosít, amelyek feszültségmérésre használhatók. Ezt felhasználhatjuk egy feszültségmérő megépítéséhez.
Az analógRead() függvény kiolvassa a feszültséget és átalakítja egy 0 és 1023 közötti számmá.
Az Arduino tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage ezt a példát tartalmazza:
Ez ROSSZ! A jobb eredményhez használd (sensorValue + 0.5) * 5.0 / 1024.0 – lásd a magyarázatot itt
Ez arra enged következtetni, hogy a 0 érték 0.000V bemeneti feszültségnek felel meg; az 1023 pedig 5.000 volt bemeneti feszültségnek. Ez nem teljesen igaz. Nézzük meg az adatlapot, és nézzük meg, mit mond nekünk.
Az Arduinón használt ATMEGA chip analóg bemenetekkel rendelkezik, amelyek a feszültség pontos mérésére használhatók
Az Arduino mikrokontroller egy szukcesszív közelítés típusú analóg-digitális átalakítóval (ADC) van ellátva, amely a következő specifikációval rendelkezik. A zárójelben feltüntetett hivatkozások így (2: 26.1) az AtMega 2560 adatlap szakaszaira utalnak.
(2: 26.1): Az ATMega328 és a 32U4 hasonló értékekkel rendelkezik.
Ezek a specifikációk azt mondják, hogy az Arduino képes feszültségeket mérni ± 2 LSB pontossággal
– tehát a maximális hiba 2 bit (4 decimális) 10 bitben (1024 decimális)
Az átalakító legrosszabb esetben a pontossága 4 / 1024 vagy 1 rész 256-hoz, azaz 0,25%.
A mérési pontosság határa azonban a használt feszültségreferenciától függ.
Az Arduino saját feszültségreferenciákkal rendelkezik – de ezek nem túl pontosak
A chip – típustól függően – a következő referenciafeszültségek (6)
DEFAULT: az alapértelmezett analóg referencia 5 volt (5V-os Arduino lapokon) vagy 3.3 volt (3,3 V-os Arduino lapkákon)
INTERNÁLIS: egy beépített referencia, amely az ATmega168 vagy ATmega328 lapkákon 1,1 voltnak, az ATmega8 és 32U4 lapkákon 2,56 voltnak felel meg.
Ez belsőleg az 1,1 V-os referencia erősítésével jön létre. A 2,56V csak egy “tipikus” érték.
EXTERNÁLIS: az AREF tűn alkalmazott feszültség (csak 0 és 5V között). (A MicroPro 32U4, a NodeMCU és az ESP32 nem rendelkezik külső referencia tűvel – további információkért lásd alább.)
A referencia pontossága, amelyhez képest a feszültséget mérjük – a fenti referenciák bármelyikét használva – a legjobb esetben is csak 5,25 – 5,0/5,0 * 100 = 5% – sokkal rosszabb, mint az ADC által biztosított 0,25%. Nyilvánvaló, hogy ha feszültségeket akarunk mérni az Arduino által biztosított pontossággal, akkor a chip-en lévő referenciák nem elég jók. Az alábbi diagram mutatja ezeket a hibákat az alább leírt 4,096V-os referenciával összehasonlítva.
Vélemény, hozzászólás?