Описание
Сегодня расскажу о модуле INA219 с помощью которого можно одновременно измерить напряжение до 26 В и ток до 3.2 А c высокой точностью. Данный модуль можно использовать в лабораторном блоке питания, измерения мощности и так далее.
Технические параметры
► Напряжение питания: 3 — 5 В
► Максимальное измеряемое напряжение: 26 В
► Максимальная измеряемая сила тока: 3.2 А
► Рабочая температура: -40 … 85° C
► Дрейф в рабочем температурном диапазоне: 100 мкВ
► Разрешение измерителя: 12 бит
► Интерфейс: I2C
► Скорость интерфейса: 3.4 МГц
► Фильтрация: х128 отсчетов
Обзор модуля модуле INA219
Модуль основан на микросхеме INA219, которая собрана в корпусе SOT23. Измерение тока осуществляется с помощью резистора (шунта)на 0.1 Ом с точностью 1% (выводы Vin+ и Vin-), по сути микросхема измеряет падение напряжение на шунте, а потом по закону ома рассчитывает ток (I) = напряжение (V) / сопротивление (R).
Максимальное падение напряжения, которое может измерить INA219, составляет 320 мВ или 0,32 В. Следовательно, максимальный ток, который INA219 может измерить с резистором по умолчанию, составляет 0,32 В / 0,1 Ом = 3,2 А. Если вам необходимо измерить более 3,2 А можно заменить шунт 0,0,5 Ом на более низкое значение. Шунт 0,01 Ом позволит проводить измерения тока 6.4 А.

Назначение контактов:
► VCC — вывод питания микросхемы INA219, 3 — 5 В;
► GND — заземляющий вывод питания микросхемы INA219, 3 — 5 В;
► SCL — вывод I2C, подключается к линии I2C микроконтроллера, рабочие напряжение 3 В или 5 В.
► SDA — вывод данных I2C подключается к линии I2C микроконтроллера, рабочие напряжение 3 В или 5 В.
► Vin+ —
► Vin- —
Смена адреса I2C:
Адрес по умолчанию адрес модуля установлен 0×40, который легко можно изменить с помощью перемычки в правом углу, для этого соедините перемычку припоем, чтобы указать двоичное число «1».

Принципиальная схема модуля INA219 показана на рисунке ниже.

Подключение INA219 к Arduino
Необходимые детали:
► Arduino UNO x 1 шт.
► Модуля тока и напряжения INA219 x 1 шт.
► Провода DuPont M-F, 20 см x 1 шт.
► Аккумулятор LiitoKala HG2, 18650, 3000 mAh x 1 шт.
► Коллекторный двигатель x 2 шт.
Описание:
В этом примере покажу как подключить модуля INA219 к Arduino. В качестве нагрузки будем использовать обычный коллекторный двигатель, который подключим к литий-ионному аккумулятору.
Подключение.
Сначала подключить питание, выводы +5 В и GND (Arduino) подключаем к выводам Vcc и GND (INA219), далее подключаем интерфейс I2C, выводы A4 и A5 (Arduino) подключаем к выводам SDA и SCL (INA219). Теперь осталось подключить нагрузку, вывод Vin+ (INA219) подключаем к плюсу аккумулятору, вывод Vin- (INA219) подключаем к одному из выводом мотора. Второй вывод мотора подключаем к GND arduino и аккумулятора.

Установка библиотеки:
Для работы скетча необходимо две библиотеки «Adafruit INA219» и «Adafruit BusIO Register«, необходимо дополнительно скачать с «Менеджера библиотек«.

В строке поиска вводим «INA219» находим библиотеку «Adafruit INA219» и устанавливаем ее.

Далее, в строке поиска вводим «Adafruit BusIO» находим библиотеку «Adafruit BusIO Register и устанавливаем ее.

Программа:
Теперь можно приступить к скетчу, скачиваем или копируем его в среду разработки Arduino IDE.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <Wire.h> // Подключаем библиотеку Wire
#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); // Пауза
}
|
Похожие товары