Měření proudu a napětí s Arduinem: senzor INA219

Senzorů a modulů pro Arduino existuje opravdu hodně. Některé měří teplotu, jiné vlhkost, světlo, tlak nebo vzdálenost. Tentokrát se podíváme na modul INA219, který slouží k měření napětí, proudu a výkonu.

Na první pohled je to malý nenápadný modul s několika piny, ale pro různé pokusy je hodně užitečný. Díky němu můžeme zjistit, kolik proudu odebírá LED pásek, motor, Arduino projekt, malý solární panel nebo třeba zařízení napájené z baterie.

Velká výhoda INA219 je v tom, že neposílá do Arduina jen nějakou neurčitou analogovou hodnotu. Komunikuje přes sběrnici I2C a hodnoty dostaneme rovnou jako napětí, proud a výkon. Pro začátečníka je to tedy docela jednoduchý způsob, jak si začít hrát s měřením spotřeby.

V článku si ukážeme, co modul INA219 umí, jak se zapojuje, proč se musí připojit do série se zátěží a jak si naměřené hodnoty zobrazit v Arduino IDE.

modul od Laskakitu
modul od Laskakitu

Co je INA219

INA219 je obvod určený pro měření proudu, napětí a výkonu v elektrickém obvodu. Nejčastěji se prodává jako malý hotový modul, na kterém je samotný čip INA219, měřicí odpor a několik dalších součástek.

Modul umí měřit:

  • napětí na napájené větvi
  • proud protékající obvodem
  • výkon vypočítaný z napětí a proudu

Díky tomu se hodí třeba pro sledování spotřeby různých Arduino projektů, měření odběru motorů, LED pásků, senzorů, bateriových zařízení nebo malých solárních pokusů.

Důležité je pochopit jednu věc: INA219 se nezapojuje stejně jako voltmetr.

Napětí měříme paralelně, ale proud se měří v sérii se zátěží. To znamená, že modul musí být vložený přímo do cesty, kterou proud teče.

Jak INA219 měří proud

Na modulu je malý přesný odpor, kterému se říká bočník nebo také shunt resistor. Proud protéká přes tento odpor a na odporu vznikne velmi malý úbytek napětí.

Čip INA219 tento malý úbytek změří a podle něj vypočítá proud.

Zjednodušeně řečeno:

Čím větší proud teče přes měřicí odpor, tím větší úbytek napětí na něm vznikne.

INA219 tedy neměří proud „přímo“, ale měří malé napětí na známém odporu. Z toho potom spočítá proud.

To je také důvod, proč má modul svorky nebo piny označené například VIN+ a VIN−. Tudy prochází měřený proud.

High-side měření

INA219 se často označuje jako high-side current sensor. To znamená, že se obvykle zapojuje do kladné větve napájení, tedy mezi plus zdroje a plus zátěže.

To je praktické, protože nemusíme přerušovat zemní vodič. Zem zůstane společná a měří se proud v kladné větvi.

Arduino je k modulu připojené přes napájení a I2C sběrnici. Měřený proud ale neteče přes Arduino, teče přes svorky VIN+ a VIN− na modulu.

Zapojení modulu

Modul INA219 má obvykle tyto piny:

Pin INA219Význam
VCCnapájení modulu
GNDzem
SDAdatová linka I2C
SCLhodinová linka I2C
VIN+vstup měřeného proudu od zdroje
VIN−výstup měřeného proudu ke zátěži
modul od Laskakitu má Vin nepopsané. Polaritu je potřeba vyzkoušet

U Arduina UNO a Nano je I2C sběrnice obvykle na pinech:

INA219Arduino UNO / Nano
VCC5 V
GNDGND
SDAA4
SCLA5

U Arduina Mega je I2C sběrnice na pinech:

INA219Arduino Mega
VCC5 V
GNDGND
SDA20
SCL21

Měřená část se zapojí do série se zátěží:

VodičZapojení
plus zdrojeVIN+
VIN−plus zátěže
minus zátěžeminus zdroje

Tady je dobré dát si pozor. Pokud modul připojíme jen přes VCC, GND, SDA a SCL, bude sice komunikovat s Arduinem, ale žádný proud zátěží měřit nebude. Měřený obvod musí opravdu procházet přes VIN+ a VIN−.

Instalace knihovny

Pro práci s modulem použijeme knihovnu Adafruit INA219.

V Arduino IDE otevřeme Manažera knihoven, do vyhledávání zadáme Adafruit INA219 a nalezenou knihovnu nainstalujeme.

Arduino IDE se může zeptat také na instalaci dalších potřebných knihoven od Adafruit. Ty necháme nainstalovat také, aby knihovna správně fungovala.

První testovací program

Nejdřív si nahrajeme jednoduchý program, který bude vypisovat naměřené hodnoty do Serial Monitoru.

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;

void setup() {
Serial.begin(9600);

while (!Serial) {
delay(1);
}

Serial.println("Test modulu INA219");

if (!ina219.begin()) {
Serial.println("Modul INA219 nebyl nalezen. Zkontroluj zapojeni.");
while (1) {
delay(10);
}
}

Serial.println("INA219 nalezen.");
}

void loop() {
float shuntVoltage = 0;
float busVoltage = 0;
float current_mA = 0;
float loadVoltage = 0;
float power_mW = 0;

shuntVoltage = ina219.getShuntVoltage_mV();
busVoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();

loadVoltage = busVoltage + (shuntVoltage / 1000);

Serial.println("-------------------------");
Serial.print("Napeti sbernice: ");
Serial.print(busVoltage);
Serial.println(" V");

Serial.print("Ubytek na bocniku: ");
Serial.print(shuntVoltage);
Serial.println(" mV");

Serial.print("Napeti zateze: ");
Serial.print(loadVoltage);
Serial.println(" V");

Serial.print("Proud: ");
Serial.print(current_mA);
Serial.println(" mA");

Serial.print("Vykon: ");
Serial.print(power_mW);
Serial.println(" mW");

delay(1000);
}

Po nahrání programu otevřeme Serial Monitor a nastavíme rychlost na 9600 baudů. Pokud je vše správně zapojené, měly by se začít vypisovat hodnoty napětí, proudu a výkonu.

výpis v monitoru

Co znamenají vypsané hodnoty

Program vypisuje několik údajů.

Napětí sběrnice

To je napětí měřené na napájené větvi za měřicím odporem. V praxi nás bude často zajímat jako napětí zátěže.

Úbytek na bočníku

To je malé napětí, které vzniká na měřicím odporu. Běžně půjde o milivolty. Právě z této hodnoty se počítá proud.

Proud

To je proud, který protéká přes modul ze zdroje do zátěže. Hodnota je vypsaná v miliampérech.

Výkon

Výkon je vypočítaný z napětí a proudu. Program ho vypisuje v miliwattech.

Zjednodušeně platí:

výkon = napětí × proud

Pokud tedy zařízení odebírá 5 V a 100 mA, jeho příkon je přibližně 0,5 W.

Měření odběru Arduina nebo jiného modulu

INA219 se hodí i na měření spotřeby hotového zařízení. Můžeme přes něj napájet například Arduino, ESP modul nebo jiný obvod.

Tady už je ale potřeba dávat pozor na proud. Běžné moduly INA219 mají na desce malý měřicí odpor a nejsou určené pro velké proudy. Pro malé projekty, senzory a běžné Arduino pokusy je to v pořádku, ale pro silné motory, dlouhé LED pásky nebo výkonné spotřebiče už to vhodné být nemusí.

Běžné breakout moduly s odporem 0,1 Ω se často uvádějí zhruba do 3,2 A, ale vždy záleží na konkrétním modulu a jeho provedení.

Na co si dát pozor

U INA219 je několik věcí, které je dobré si pohlídat.

Modul se zapojuje do série

Toto je nejčastější začátečnická chyba. Pokud chceme měřit proud, musí proud přes modul opravdu téct.

Nestačí připojit jen I2C piny k Arduinu.

Pozor na maximální proud

Malý modul není univerzální ampérmetr pro cokoliv. Je určený pro menší proudy. Pokud přes něj pustíme příliš velký proud, může se měřicí odpor zahřívat nebo poškodit.

Pozor na maximální napětí

INA219 se často používá pro měření napájecích větví do desítek voltů. U běžných modulů se často uvádí maximum kolem 26 V. Pro Arduino pokusy s 5 V nebo 12 V je to obvykle v pohodě, ale u vyšších napětí je potřeba ověřit konkrétní modul.

Společná zem

Arduino a měřený obvod by měly mít společnou zem. Jinak může být měření nespolehlivé nebo nemusí komunikace správně fungovat.

Úbytek napětí na měřicím odporu

Protože proud teče přes měřicí odpor, vzniká na něm malý úbytek napětí. Většinou je malý, ale u citlivých nebo proudově náročnějších obvodů s ním musíme počítat.

Kde se INA219 hodí

Modul INA219 se hodí hlavně tam, kde chceme sledovat spotřebu nebo výrobu energie.

Například:

  • měření odběru Arduino projektu,
  • sledování spotřeby ESP8266 nebo ESP32,
  • měření proudu LED pásku,
  • měření malého solárního panelu,
  • kontrola vybíjení baterie,
  • porovnání spotřeby různých režimů zařízení,
  • zjištění, kolik bere motor naprázdno a při zatížení.

Pro začátečníka je to dobrý modul i proto, že na něm jde pěkně pochopit rozdíl mezi napětím, proudem a výkonem.

Závěr

INA219 je šikovný modul pro každého, kdo si chce u Arduino projektů začít měřit spotřebu. Umí měřit napětí, proud i výkon a díky komunikaci přes I2C se s ním pracuje velmi jednoduše.

Nejdůležitější je správně pochopit zapojení. Měřený proud musí téct přes svorky VIN+ a VIN−, takže modul zapojujeme do série se zátěží. Jakmile je toto jasné, je použití INA219 poměrně jednoduché.

Pro běžné pokusy s Arduinem, LEDkami, malými moduly nebo solárním panelem je to velmi užitečný pomocník. Místo odhadování spotřeby dostaneme konkrétní čísla, se kterými se dá dál pracovat.

V dalších pokusech se dá modul použít třeba pro sledování vybíjení baterie, měření malého solárního systému nebo porovnání spotřeby zařízení v různých režimech.

Tento senzor zakoupíte na Laskakit.cz přímý odkaz je ZDE.

Další díly ze začátečnické série o modulech najdete zde:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *