Senzor napětí a proudu INA3221 je vstupní modul pro Arduino. Tento modul obsahuje integrovaný obvod INA3221, který umožňuje měřit napětí a proud na třech spotřebičích díky třem měřícím kanálům. Pro měření je ale zapotřebí připojit k modulu také společný napájecí zdroj pro všechny tři kanály. Komunikace s Arduinem probíhá po sběrnici I2C.
Pro napájení modulu INA3221 je možné použít napětí v rozsahu 2,7-5,5 Voltu a odběr se pak pohybuje okolo 350 mikroAmpér. Co se týká měřících rozsahů, tak vstupní napětí můžeme připojit v rozsahu 0-26 Voltů a maximální měřitelný proud je cca 1,1 Ampér. Omezení měřeného proudu je dané velikostí takzvaných bočníků, což jsou tři odpory s nápisem R100 na modulu. Tyto odpory mají hodnotu 0,1 ohmu a pokud bychom chtěli dosáhnout většího rozsahu (nebo naopak vyšší přesnosti), museli bychom tyto odpory nahradit jinými.
Pro úspěšné propojení modulu senzoru INA3221 a Arduino desky je nutné zapojit celkem 4 vodiče. Propojíme VS s 5V Arduina, GND se zemí Arduina, SCL s pinem A5 a SDA s pinem A4. Pro piny SDA a SCL musíme vybrat vždy vyhrazené I2C piny na námi vybrané desce, u Arduino UNO jsou to právě piny A4 a A5. Externí napájecí zdroj poté připojíme na piny POW a GND (+ a -) a zátěže na jednotlivé kanály, vždy dvojice CH* a GND (CH1, CH2, CH3).
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu SDL_Arduino_INA3221, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, vytvoření objektu senzoru z knihovny a vytvoření měřících proměnných.
V podprogramu setup nejprve zahájíme komunikaci po sériové lince a následně také komunikaci se senzorem.
Nekonečná smyčka loop obsahuje na svém začátku for smyčku, která postupně projde všechny 3 měřící kanály CH1-3. Ve for smyčce v prvním kroku načteme všechny dostupné údaje, tedy vstupní napětí, napětí na bočníku a proud zátěží, a poté ještě vypočteme napětí na zátěži. V druhém kroku vytiskneme všechny dostupné údaje po sériové lince a tyto dva kroky se díky for smyčce provedou celkem třikrát pro všechny kanály. Po ukončení for smyčky už jen vytiskneme dělící řádek pro lepší přehled výsledků a po pauze se celá smyčka loop opakuje.
// Senzor napětí a proudu INA3221 // připojení potřebné knihovny #include <SDL_Arduino_INA3221.h> // vytvoření objektu senzoru z knihovny SDL_Arduino_INA3221 ina3221; // vytvoření měřících proměnných float napetiVstup; float napetiBocnik; float proudZatez; float napetiZatez; void setup() { // zahájení komunikace po sériové lince Serial.begin(9600); // zahájení komunikace se senzorem ina3221.begin(); } void loop() { // postupná práce se třemi dostupnými kanály CH1-CH3 for (int poradi = 1; poradi <= 3; poradi++) { // načtení dostupných údajů ze senzoru napetiVstup = ina3221.getBusVoltage_V(poradi); napetiBocnik = ina3221.getShuntVoltage_mV(poradi); proudZatez = ina3221.getCurrent_mA(poradi); // výpočet napětí na zátěži napetiZatez = napetiVstup + (napetiBocnik / 1000.0); // vytištění všech dostupných údajů po sériové lince Serial.print("Kanal CH"); Serial.print(poradi); Serial.println(":"); Serial.print("Napeti zdroje: "); Serial.print(napetiVstup); Serial.println(" V"); Serial.print("Napeti na bocniku: "); Serial.print(napetiBocnik); Serial.println(" mV"); Serial.print("Napeti na zatezi: "); Serial.print(napetiZatez); Serial.println(" V"); Serial.print("Proud zatezi: "); Serial.print(proudZatez); Serial.println(" mA"); Serial.println(); } // vytištění dělícího řádku pro přehled Serial.println("------------------------------"); // pauza před novým během smyčky delay(1000); }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem napětí a proudu INA 3221 získáme například tento výsledek. V tomto případě jsem jako zdroj použil 3,3V z Arduina a na kanál CH1 jsem připojil LED diodu.
Kanal CH1: Napeti zdroje: 3.22 V Napeti na bocniku: 2.32 mV Napeti na zatezi: 3.22 V Proud zatezi: 23.20 mA Kanal CH2: Napeti zdroje: 3.22 V Napeti na bocniku: 0.04 mV Napeti na zatezi: 3.22 V Proud zatezi: 0.40 mA Kanal CH3: Napeti zdroje: 3.22 V Napeti na bocniku: 0.04 mV Napeti na zatezi: 3.22 V Proud zatezi: 0.40 mA ------------------------------
Senzor napětí a proudu INA3221 je šikovný modul, který nám umožňuje měřit až tři spotřebiče připojené na jeden napájecí zdroj. Díky velkému rozsahu měřeného napětí a proudu může dobře posloužit například při tvorbě Arduino volt/ampér-metru či při kontrole baterie v našem zařízení. Právě pro bateriový provoz je výhodou jeho velmi nízký odběr proudu při měření. A pokud by Vám nevyhovoval měřící rozsah proudu či jeho přesnost, můžete na modulu změnit velikosti bočníků podle sebe.
Seznam použitých komponent:
https://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html
https://dratek.cz/arduino/3080-i2c-senzor-napeti-a-proudu-3kanalovy-ina3221.html