Датчик тока INA219 применяется в проектах ардуино для измерения тока и напряжения. В рамках данной стать рассмотрим, как с помощью модуля датчика INA219 измерить напряжение батарейного питания, а так же как датчик подключить к ардуино.
INA219 подключается к ардуино по интерфейсу I2C. Для того, чтобы считать данные, необходимо знать адрес датчика. Сам адрес задается с помощью запайки на плате перемычек A0 и A1.
Установка адреса INA219
В зависимости от положения перемычек на А0 и А1, мы можем назначить модулю один из 4 адресов:
- 0x40 (соединения А0 и А1 выпаяны);
- 0x41 (соединение A0 запаяна);
- 0x44 (соединение A1 запаяна);
- 0x45 (соединения A0 и A1 запаяны).
Характеристики датчика тока INA219
- Напряжение питания: 3 — 5 В
- Максимальное измеряемое напряжение: 26 В
- Максимальная измеряемая сила тока: 3.2 А
- Рабочая температура: -40 … 85° C
- Погрешность измерения в нормальных условиях: 100 мкВ
- Разрешение АЦП: 12 бит
- Интерфейс связи: I2C
- Скорость обмена по интерфейсу: 3.4 МГц
- Фильтрация: х128 отсчетов
Схема подключения модуля INA219
Контакты SCL и SDA подключаются к соответствующим контактам на плате ардуино. К контактам VIN+ , VIN- подключаем плюс и минус соответственно к измеряемой цепи.
Пример программы модуля тока INA219
Датчик тока INA219 управляется библиотекой Adafruit_BusIO. Ниже приведен полный код для работы с модулем датчика тока.
#include <Adafruit_INA219.h> // Подключаем библиотеку Adafruit_INA219
Adafruit_INA219 ina219; // Создаем объект ina219
void setup(void)
{
Serial.begin(115200); // Инициализируем последовательную связь на скорости 115200
uint32_t currentFrequency; // Создаем переменную
// По умолчанию при инициализации будет использоваться самый большой диапазон (32 В, 2 А)
// Проверка инициализации модуля INA219
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
// Чтобы использовать немного более низкий диапазон 32 В, 1 А (более высокая точность на усилителях):
// ina219.setCalibration_32V_1A ();
// Или использовать более низкий диапазон 16 В, 400 мА (более высокая точность на вольт и ампер):
// ina219.setCalibration_16V_400mA ();
Serial.println("Measuring voltage and current with INA219 ..."); // Отправка сообщение
}
void loop(void)
{
float shuntvoltage = 0; // Создаем переменную shuntvoltage
float busvoltage = 0; // Создаем переменную busvoltage
float current_mA = 0; // Создаем переменную current_mA
float loadvoltage = 0; // Создаем переменную loadvoltage
float power_mW = 0; // Создаем переменную power_mW
shuntvoltage = ina219.getShuntVoltage_mV(); // Получение напряжение на шунте
busvoltage = ina219.getBusVoltage_V(); // Получение значение напряжения V
current_mA = ina219.getCurrent_mA(); // Получение значение тока в мА
power_mW = ina219.getPower_mW(); // Получение значение мощности
loadvoltage = busvoltage + (shuntvoltage / 1000); // Расчет напряжение на нагрузки
// Поочередно отправляем полученные значение в последовательный порт.
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(2000); // Пауза
}
Документация
Где купить
- Датчик тока INA219





