Найти в Дзене
Электроника, ESP32, Arduino

Как сделать Амперметр и Вольтметр на Arduino. Датчик тока INA219

Ну и заодно ваттметр. Датчик ina219 можно подключить к любому микроконтроллеру по протоколу I2C. Все контакты модуля ina219 идут с шагом 2.54мм, кроме того измеряемую цепь можно подключить используя клеммник или болтовое соединение. Соберем на Arduino эквивалентную схему, позволяющую измерять ток и напряжение: Для работы с ina219 удобно использовать библиотеку от adafruit, перед заливкой прошивки её необходимо установить в среду Arduino IDE https://github.com/adafruit/Adafruit_INA219 Основные функции библиотеки: float getBusVoltage_V(void);
Считывает напряжение между GND и VIN-. Это полное напряжение, наблюдаемое схемой. (напряжение питания - напряжение шунта).
Возвращаемое значение - в вольтах. float getShuntVoltage_mV(void);
Считывает напряжение между VIN- и VIN+. Это измеренное падение напряжения на шунтирующем резисторе (номинал 0.1 Ом). Возвращаемое значение - в милливольтах. float getCurrent_mA(void);
Считывает ток, полученный по закону Ома, из измеренного напряжения шунта. Воз

Ну и заодно ваттметр.

  • ► Напряжение питания: 3 — 5 В
  • ► Максимальное измеряемое напряжение: 26 В
  • ► Максимальная измеряемая сила тока: 3.2 А

Датчик ina219 можно подключить к любому микроконтроллеру по протоколу I2C.

INA219 Внешний вид
INA219 Внешний вид

Все контакты модуля ina219 идут с шагом 2.54мм, кроме того измеряемую цепь можно подключить используя клеммник или болтовое соединение.

Соберем на Arduino эквивалентную схему, позволяющую измерять ток и напряжение:

Измерение тока проходящего через лампу и напряжения на её выводах
Измерение тока проходящего через лампу и напряжения на её выводах
ina219 подключение к ардуино
ina219 подключение к ардуино

Для работы с ina219 удобно использовать библиотеку от adafruit, перед заливкой прошивки её необходимо установить в среду Arduino IDE

https://github.com/adafruit/Adafruit_INA219

Основные функции библиотеки:

float getBusVoltage_V(void);
Считывает напряжение между GND и VIN-. Это полное напряжение, наблюдаемое схемой. (напряжение питания - напряжение шунта).
Возвращаемое значение - в вольтах.

float getShuntVoltage_mV(void);
Считывает напряжение между VIN- и VIN+. Это измеренное падение напряжения на шунтирующем резисторе (номинал 0.1 Ом). Возвращаемое значение - в милливольтах.

float getCurrent_mA(void);
Считывает ток, полученный по закону Ома, из измеренного напряжения шунта. Возвращаемое значение - в миллиамперах.

ina219.getPower_mW();
Мощность потребляемая нагрузкой. Возвращаемое значение - в (Милливаттах)

Пример работы:

Подключение библиотек и инициализация ina219
Подключение библиотек и инициализация ina219
Отправляем показания датчика ina219 показания 1 раз в 2 секунды в монитор порта
Отправляем показания датчика ina219 показания 1 раз в 2 секунды в монитор порта

Открываем монитор порта:

Отображение показаний в мониторе порта на ПК
Отображение показаний в мониторе порта на ПК
Погрешность по измерению силы тока всего 1mA 245.4 / 244.4
Погрешность по измерению силы тока всего 1mA 245.4 / 244.4

Напряжение на лампе ровно 6.54V, что для прототипа собранного на соплях беспаечной макетной плате практически идеально.

Измерение напряжения между клеммами Vin- и GND
Измерение напряжения между клеммами Vin- и GND

Это была скучная схема из документации, при желании с INA219 можно немножко "по химичить", а для этого добавим на шину i2C дисплей.

Если напряжения питания нагрузки больше 7V - отдельное питание для Arduino не нужно!
Если напряжения питания нагрузки больше 7V - отдельное питание для Arduino не нужно!

Добавив перемычку (фиолетовая линия на схеме) с клеммы "+" блока питания на вход Vin платы Arduino, измерять ток проходящий через лампу можно и без дополнительного источника питания для самой Arduino.

Напряжение на лампе 6.3V ток 242mA
Напряжение на лампе 6.3V ток 242mA

Такая схема подойдет для контроля тока какого-нибудь электродвигателя - но о принципах такой защиты я расскажу в одной из следующих статей.

Если в данной схеме отключить нагрузку:

Нагрузка исключена из измерительной цепи
Нагрузка исключена из измерительной цепи

то на дисплее будет отображаться значение напряжения источника питания от которого питается сама схема. Данный вариант идеально подойдет для контроля АКБ и передачи телеметрии о состоянии батареи.

На дисплее отображается значение напряжения источника питания 7.22 / 7.23
На дисплее отображается значение напряжения источника питания 7.22 / 7.23

Последний вариант самый "забористый" - измерение собственного энергопотребления. Для этого вся схема подключается через шунт токового датчика.

Измерение собственного энергопотребления.
Измерение собственного энергопотребления.
31.5 mA / 31.2 mA
31.5 mA / 31.2 mA

Поскольку моя статья не копипаста с Интернета и несмотря на то, что последние 3 схемы я успешно использовал в практических целях - правильно так делать или нет мне не известно....

На плате модуля находятся две группы адресных перемычек, по умолчанию установлен адрес 0х40. Если замкнуть перемычку А0, то адрес поменяется на 0х41, если замкнуть перемычку А1, то адрес поменяется на 0х44, при замыкании двух перемычек адрес поменяется на 0х45. Таким образом при желании можно повесить на шину i2C 4 датчика.

На Ali мне еще встречались синенькие платки. Среди них мне попадались и платы с браком (практически к/з по входу - выходу), ina219 сильно греется и не инициализируется. Деньги правда удалось "от спорить" - видимо Китайцы и сами в курсе данной ситуации - так что если надумаете покупать такую плату - обязательно проверяйте её перед тем, как куда-то впаивать намертво.

В целом датчик довольно интересный так как позволяет применять достаточно нестандартные схемы подключения, что позволяет использовать его не совсем по прямому назначению.

Можно удалить шунт на 0.1 Ом и заменить его на свой собственный, чтобы изменить диапазон измерений тока (допустим 0.01 Ом для того чтобы измерять ток до 32 Ампер с разрешением 8mA).

Цена вопроса на Ali 150-200 рублей - датчик ina219

Примеры кода из статьи качайте тут

Полный список всех статей на канале доступен по этой ссылке:

Если информация была полезной не забудьте подписаться и поставить лайк. Всем удачи!