Senzor napětí a proudu INA3221

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

Další podobné články