
Интернет-магазин «Неглупый Дом»
В другом проекте на сайте INA226 используется для защитного отключения нагрузки при превышении тока. Здесь тот же датчик применяется иначе — просто как точный измерительный прибор, показывающий реальную потребляемую мощность нагрузки в ваттах на дисплее TM1637, без какой-либо защитной логики.
INA226 измеряет и ток (через падение напряжения на шунтирующем резисторе), и напряжение на нагрузке одновременно, по одной и той же шине I2C. Имея оба этих значения, микросхема (или библиотека, работающая с ней) может сама вычислить мощность по формуле P = U × I — то есть ваттметр получается "бесплатно", без дополнительных вычислений на стороне Arduino, если библиотека поддерживает прямое чтение мощности, либо одной короткой формулой, если считать мощность вручную из тока и напряжения.
В отличие от простого измерения тока (как в проекте защиты от перегрузки), мощность в ваттах даёт более интуитивно понятную единицу для бытового восприятия — большинство людей привыкли думать о потреблении приборов именно в ваттах (как на этикетке лампочки или фена), а не в амперах, которые сами по себе ничего не говорят без знания напряжения.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Точные имена методов
// библиотеки под вашу версию INA226 уточните в Менеджере библиотек.
#include <Wire.h>
#include <INA226.h>
#include <TM1637Display.h>
INA226 ina(0x40);
TM1637Display display(9, 10); // CLK, DIO
void setup() {
Serial.begin(9600);
ina.begin();
ina.setMaxCurrentShunt(5, 0.1); // подберите под свой модуль
display.setBrightness(5);
}
void loop() {
float voltage = ina.getBusVoltage();
float current = ina.getCurrent_mA() / 1000.0;
float power = voltage * current; // мощность в ваттах, P = U x I
Serial.print("Напряжение: ");
Serial.print(voltage);
Serial.print(" В, Ток: ");
Serial.print(current);
Serial.print(" А, Мощность: ");
Serial.print(power);
Serial.println(" Вт");
display.showNumberDecEx((int)(power * 10), 0b01000000, false); // один десятичный знак через точку
delay(300);
}
Библиотеки для INA226 и TM1637Display ставятся через Менеджер библиотек Arduino IDE — доступно несколько сторонних библиотек для INA226 с немного разными именами методов (например, `getPower()` может быть доступен напрямую в некоторых версиях вместо ручного перемножения), уточните точный API именно для установленной у вас версии.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 237 ₽ 213 ₽ (экономия 24 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.