Измерения напряжения и тока производятся поочередно: при подключении входов «VBUS» и «GND» к источнику питания происходит замер питающего напряжения; в момент, когда включены измерительные входы «IN+» и «IN-», подключенные к шунтирующему сопротивлению – измеряется текущий через нагрузку ток.
Мощность находится путем аппаратного вычисления произведения тока и напряжения, данные о которых берутся из соответствующих регистров микросхемы. После перемножения производится запись информации в регистр мощности.
Все измеренные параметры передаются по шине стандартного последовательного протокола I2C (также возможна поддержка последовательного SMBus – совместимого интерфейса). Адресация устройства задается коммутацией выводов A0 и A1 с питанием, общим проводом, и выводами шины последовательного интерфейса. На шине I2C устройство работает исключительно в режиме «Slave».

Модуль INA226 состоит из микросхемы INA226, нескольких резисторов и конденсатора, который помогает уменьшить шум или нежелательные электрические сигналы.

Распиновка
Назначение выводов платы:
- IN+, IN-: измерительные входы;
- VBUS: вход измеряемого напряжения;
- ALE: цифровой выход состояния аварийного регистра;
- SDA, SCL: выводы интерфейса I2C;
- GND: земля;
- VCC: питание;
- A0, A1: контакты конфигурирования адреса модуля.
I2C-адрес
Адрес I2C по умолчанию для INA226 — 0x40. Этот адрес можно изменить, чтобы облегчить использование нескольких датчиков INA226 на одной шине I2C. INA226 допускает до 16 различных адресов I2C, от 0x40 до 0x4F. Вы можете изменить адрес I2C, изменив соединения выводов A0 и A1.

Внутренние регистры
INA226 также имеет внутренние регистры, доступ к которым осуществляется через интерфейс I2C. Некоторые из основных:
- Регистр конфигурации (адрес = 00h): подобно INA219 , этот регистр используется для управления различными аспектами INA226.
- Регистр напряжения шунта (адрес = 01h): в этом регистре хранятся необработанные результаты измерения напряжения шунта.
Напряжение шунта (В) = Значение регистра напряжения шунта * 2,5 мкВ - Регистр напряжения шины (адрес = 02h): этот регистр содержит необработанные измерения напряжения шины.
Напряжение шины (В) = Значение регистра напряжения шины * 1,25 мВ - Регистр мощности (адрес = 03h): в этом регистре хранится рассчитанное значение мощности.
Мощность (Вт) = Значение регистра мощности * Power_LSB - Текущий регистр (адрес = 04h): этот регистр содержит вычисленное текущее значение.
Ток (A) = Текущее значение регистра * Текущий_LSB - Регистр калибровки (адрес = 05h): этот регистр используется для установки значения калибровки для расчетов тока и мощности.
Пример подключения
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include <Wire.h> #include <INA226.h> // Замените на адрес вашего устройства #define I2C_ADDRESS 0x40 // Инициализация INA226 с использованием шины I2C (Wire) INA226 ina226(I2C_ADDRESS); void setup() { // Настройка последовательного порта для вывода данных Serial.begin(9600); // Инициализация шины I2C Wire.begin(); // Проверка успешной инициализации INA226 if (!ina226.begin()) { Serial.println("Ошибка инициализации INA226. Проверьте подключение."); while (1); } } void loop() { // Получение значений напряжения на шине, напряжения на шунте и тока float busVoltage = ina226.getBusVoltage(); float shuntVoltage = ina226.getShuntVoltage_mV(); float current = ina226.getCurrent_mA(); // Вывод измерений на монитор последовательного порта с двумя знаками после запятой Serial.print("Напряжение шины: "); Serial.print(busVoltage, 2); Serial.println(" V"); Serial.print("Напряжение на шунте: "); Serial.print(shuntVoltage, 2); Serial.println(" mV"); Serial.print("Ток: "); Serial.print(current, 2); Serial.println(" mA"); // Задержка перед следующим измерением delay(1000); } |
Скачать библиотеку INA226 (ZIP)
Скачать документацию INA226 (PDF)








