
Интернет-магазин «Неглупый Дом»
INA226 — более новая и точная микросхема измерения тока и напряжения по шине I2C, чем уже разбиравшийся на сайте INA219: у INA226 выше разрядность встроенного АЦП и есть аппаратное усреднение нескольких измерений внутри самой микросхемы. В этом проекте она не просто отображает ток, а активно защищает нагрузку — реле отключает питание, если потребление превышает заданный безопасный порог.
INA226 измеряет ток не напрямую, а косвенно — по падению напряжения на маленьком известном шунтирующем резисторе (на платах с маркировкой R100 это обычно резистор сопротивлением 0.1 Ом), включённом последовательно в силовую цепь нагрузки. Зная точное сопротивление шунта и измерив падение напряжения на нём, микросхема по закону Ома сама вычисляет ток и отдаёт готовое значение в амперах по I2C — Arduino не нужно пересчитывать напряжение в ток самостоятельно.
В отличие от уже разобранного на сайте мониторинга тока на INA219 (который просто показывает текущее значение), здесь ток в каждом цикле сравнивается с заданным безопасным порогом — как только измеренное значение превышает порог, реле немедленно обесточивает нагрузку. Это защита от перегрузки, короткого замыкания в нагрузке или постепенной деградации устройства, которая начинает потреблять больше нормы.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Точные имена методов
// библиотеки под вашу версию INA226 уточните в Менеджере библиотек —
// в проекте показана общая логика, а не гарантированно точный API.
#include <Wire.h>
#include <INA226.h> // одна из распространённых библиотек для INA226
INA226 ina(0x40);
const int RELAY_PIN = 2;
const float MAX_CURRENT_A = 2.0; // безопасный порог тока в амперах, подберите под свою нагрузку
bool tripped = false;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // нагрузка включена в норме
ina.begin();
ina.setMaxCurrentShunt(5, 0.1); // максимум 5А через шунт 0.1 Ом — подберите под свой модуль
}
void loop() {
if (tripped) {
digitalWrite(RELAY_PIN, LOW); // держим нагрузку отключённой после срабатывания защиты
return;
}
float current = ina.getCurrent_mA() / 1000.0;
Serial.print("Ток: ");
Serial.print(current);
Serial.println(" А");
if (current > MAX_CURRENT_A) {
tripped = true;
Serial.println("ПРЕВЫШЕНИЕ ТОКА! Нагрузка отключена.");
}
delay(200);
}
Библиотека для INA226 ставится через Менеджер библиотек Arduino IDE — доступно несколько сторонних библиотек с немного разными именами методов, уточните точный API именно для установленной у вас версии. Как и в проекте защиты по оборотам на датчике Холла, после срабатывания защита держит нагрузку отключённой до перезагрузки Arduino — осознанное решение безопасности, а не ошибка.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 243 ₽ 219 ₽ (экономия 24 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.