Experimenty Johna Erringtona s Arduinem
On 28 listopadu, 2021 by adminPřesné měření napětí pomocí desky Arduino.
Řada mikrokontrolérů Arduino nabízí analogové vstupy, které lze použít k měření napětí. Toho můžeme využít k sestavení voltmetru.
Funkce analogRead() načte napětí a převede ho na číslo v rozmezí 0 až 1023.
V tutoriálu Arduino (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage je tento příklad:
To je ŠPATNĚ! Pro lepší výsledek použijte (sensorValue + 0,5) * 5,0 / 1024,0 – viz vysvětlení zde
To nás vede k domněnce, že údaj 0 odpovídá vstupnímu napětí 0,000 V; a 1023 odpovídá vstupnímu napětí 5,000 voltů. To není zcela pravda. Podívejme se na datový list a zjistěme, co nám říká:
Čip ATMEGA použitý v Arduinu má analogové vstupy, které lze použít k přesnému měření napětí
Mikrokontrolér Arduino je vybaven analogově-digitálním převodníkem (ADC) typu postupné aproximace, který má následující specifikace. Odkazy uvedené v závorkách tedy (2: 26.1) odkazují na části datového listu AtMega 2560.
(2: 26.1): ATMega328 a 32U4 mají podobné hodnoty.
Tyto specifikace nám říkají, že Arduino je schopno měřit napětí s přesností
±2 LSB – maximální chyba je tedy 2 bity (4 desetinné) v 10 bitech (1024 desetinných)
Takže nejhorší případ přesnosti převodníku je 4 / 1024 nebo 1 díl z 256, tj. 0,25 %.
Hranice přesnosti měření však závisí na použité referenci napětí.
Čip Arduino má vlastní napěťové reference – nejsou však příliš přesné
Čip je – v závislosti na typu – vybaven NĚKTERÝM z následujících referenčních napětí (6)
DEFAULT: výchozí analogová reference 5 V (na 5V deskách Arduino) nebo 3 V (na deskách Arduino).3 V (na 3,3V deskách Arduino)
INTERNÍ: vestavěná reference, která se rovná 1,1 V na deskách ATmega168 nebo ATmega328 a 2,56 V na deskách s čipy ATmega8 a 32U4.
Tato se vytváří interně zesílením 1,1V reference. 2,56 V je pouze „typická“ hodnota.
EXTERNÍ: napětí přivedené na pin AREF (pouze 0 až 5 V). (MicroPro 32U4, NodeMCU a ESP32 nemají pin pro externí referenci – další informace viz níže.)
Přesnost reference, vůči které se napětí měří – při použití kterékoli z výše uvedených referencí – je v nejlepším případě pouze 5,25 – 5,0/5,0 * 100 = 5 % – mnohem horší než 0,25 %, které poskytuje ADC. Je zřejmé, že pokud chceme měřit napětí s přesností, kterou poskytuje Arduino, reference na čipu nejsou dostatečně dobré. Následující graf ukazuje tyto chyby ve srovnání s níže popsanou referencí 4,096 V.
.
Napsat komentář