Základní teorie a ukázkový příklad, jak měřit napětí pomocí Arduino a napěťového senzoru jako děliče napětí
Arduino má schopnost měřit napětí pomocí analogového vstupního pinu. Pro Arduino UNO je k dispozici 6 analogových vstupních pinů (A0-A5), kde lze jeden z pinů použít k měření stejnosměrného napětí. Arduino NANO má 8 pinů, zatímco Arduino MEGA má 16 vstupních pinů. Analogové vstupní piny mapují vstupní napětí mezi 0 a 5 V na celočíselné hodnoty mezi 0 a 1023 s rozlišením 4,9 mV na jednotku (5,00 V / 1024 jednotek). Nesmí se měnit polarita napětí, mohlo by dojít k poškození pinů.
Pokud se měří hodnota stejnosměrného napětí, která není větší než 5,0 V, lze se přímo připojit k analogovému kolíku bez jakékoli úpravy. Aby bylo možné měřit vyšší napětí, jako je 18Vdc, 48Vdc a 100Vdc, používá se metoda děliče napětí k rozdělení a snížení měřicího napětí do rozsahu 5V. Dělič napětí se skládá ze dvou rezistorů zapojených do série, jak je znázorněno na obrázku níže. Vše, co potřebujeme, jsou pouze 2 odpory s různými hodnotami odporu.
Když je napětí aplikováno přes párový odpor různé hodnoty, vytváří se úbytek napětí na každém rezistoru a může být použit jako referenční hodnota a je přímo úměrný celkové hodnotě napětí. Vyšší odpor R1 má tendenci mít větší pokles napětí, zatímco menší odpor R2 bude mít menší hodnotu napětí, která je v přijatelném rozsahu Arduina.
Pro konfiguraci rezistorů se vychází ze vzorce:
Při výpočtu hodnoty rezistorů se postupuje tak, že se určí maximální napětí, které se má měřit. Stanoví se hodnota rezistoru R1 v rozsahu kilo ohmů. Pomocí vzorce se vypočítá hodnota rezistoru R2. Musí se mít na paměti, že výstupním napětím by mělo být maximálně 3.3V – 5V v závislosti na typu MCU.
Malý celkový odpor však bude mít velkou spotřebu a odvod tepla pro měření vysokého napětí, což nakonec znamená, že budete muset koupit větší odpor ve wattech. Naopak příliš velký celkový odpor může skončit příliš pomalým nebo nepřesným zpracováním měření napětí při měření nízkého napětí.
Jako vodítko, 100Vdc a méně lze použít hodnotu celkového odporu 50 000 ohmů, 200Vdc v 100 000 ohm a napětí menší než 500Vdc ve 300 000 ohmech.
Při výběru rezistoru je třeba specifikovat 3 důležité informace.
1) Hodnota odporu
Příklad: 45 000 ohmů a 5 300 ohmů. Tím je zajištěno, že monitorovací napětí lze měřit v rozsahu 0-5V.
2) Výkon rezistoru
Podobně jako jiné produkty má i samotný odpor jmenovitý výkon ve wattech. Předimenzovaný příkon je vždy lepší než použití malého příkonu při velkém odběru, který může vést ke spálení odporu. Rezistor R1 má vždy větší odvod tepla než rezistor R2, takže není divu, že oba odpory nemají stejný příkon. Stačí získat hodnotu větší, než je jmenovitý výkon ve wattech. Standardní příkon rezistoru je: 1/8 Watt (0,125 W), 1/4 Watt (0,25 W), 1/2 Watt (0,5 W), 1 Watt, 2 Watt a 5 Watt.
3) Tolerance odporu v %.
Tolerance odporu je procento odchylky od uvedené hodnoty odporu. Pokud nemáte multimetr pro měření skutečné hodnoty odporu, budete si muset zakoupit rezistor s lepší přesností. Rezistory jsou velmi malé a levné součástky; pokud možno získejte co nejpřesnější. 1% je široce používané a vhodné pro účely monitorování a měření.
Pro výpočet rezistorů lze využít online kalkulátor:
Modul pro měření napětí pomocí arduino
Jedná se o levný a spolehlivý modul snímače napětí využívající stejnou metodu dělení napětí. Modul snímače napětí je určen pro měření napětí do 25Vdc s tolerancí odporů 1%. R1 je 30 kOhm, zatímco R2 je 7,5 kOhm. Pokud je monitorovací rozsah do 25 V DC, lze zvážit získání tohoto modulu.
Zapojení modulu
Zapojení s děličem
Zdrojový kód
int analogInputPin = A2;
float vArduino = 0.0;
float vActual = 0.0;
float R1 = 30000.0;
float R2 = 7500.0;
int rawValueRead= 0;
void setup(){
pinMode(analogInputPin, INPUT);
Serial.begin(9600);
Serial.println("DC VOLTMETER");
}
void loop(){
rawValueRead = analogRead(analogInputPin);
vArduino = (rawValueRead * 5.0) / 1024.0;
vActual = vArduino / (R2/(R1+R2));
Serial.print("Vdc = ");
Serial.println(vActual,2);
delay(1000);
}