
Интернет-магазин «Неглупый Дом»
INA219 по шине I2C сразу отдаёт три значения — напряжение, ток и вычисленную мощность нагрузки, точнее и информативнее, чем аналоговый датчик тока на эффекте Холла.
INA219 — это специализированная микросхема для измерения тока и напряжения, которая измеряет падение напряжения на встроенном прецизионном шунтирующем резисторе и по этой величине вычисляет силу тока. В отличие от датчиков на эффекте Холла (таких как ACS712), INA219 общается с Arduino по цифровой шине I2C и отдаёт уже готовые, откалиброванные производителем значения — напряжение в вольтах, ток в миллиамперах и мощность в милливаттах, без необходимости считать формулы пересчёта вручную.
Измеряемая нагрузка подключается последовательно через клеммы VIN+/VIN- датчика (то есть ток нагрузки должен физически течь через сам модуль INA219), а связь с Arduino идёт отдельно, через те же провода SDA/SCL, что и у LCD-дисплея — оба устройства могут сидеть на одной шине I2C одновременно, так как у каждого свой уникальный адрес.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <Adafruit_INA219.h>
#include <LiquidCrystal_I2C.h>
Adafruit_INA219 ina219;
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес дисплея может отличаться, см. ниже
void setup() {
Serial.begin(9600);
ina219.begin();
lcd.init();
lcd.backlight();
}
void loop() {
float busVoltage = ina219.getBusVoltage_V(); // напряжение, В
float current_mA = ina219.getCurrent_mA(); // ток, мА
float power_mW = ina219.getPower_mW(); // мощность, мВт
lcd.setCursor(0, 0);
lcd.print(busVoltage);
lcd.print("V ");
lcd.print(current_mA);
lcd.print("mA ");
lcd.setCursor(0, 1);
lcd.print("Power: ");
lcd.print(power_mW);
lcd.print("mW ");
Serial.print(busVoltage);
Serial.print(" V, ");
Serial.print(current_mA);
Serial.print(" mA, ");
Serial.print(power_mW);
Serial.println(" mW");
delay(500);
}
Библиотека Adafruit_INA219 сама учитывает калибровку датчика — в отличие от ACS712 не нужно вручную считать напряжение нулевой точки и коэффициент чувствительности.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 348 ₽ 313 ₽ (экономия 35 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.