В этом уроке мы научимся подключать модуль датчика постоянного тока INA219 к плате Arduino. Используя датчик постоянного тока INA219, мы можем измерять ток, напряжение и мощность. Он может измерять напряжение до +26 В и ток до 3,2 А. Если вам нужно измерять более высокий ток (до 50 А), вы можете использовать модуль INA226.
INA219 — это модуль шунтового датчика тока, представленный компанией Texas Instruments. Это модуль с нулевым дрейфом, двунаправленный, с монитором мощности, который контролирует напряжение шунта, напряжение шины, ток и мощность. Для связи с микроконтроллерами он использует интегрированный интерфейс, совместимый как с I2C, так и с SMBus.
INA219 может использоваться в различных приложениях, таких как управление питанием и защита от перегрузки по току в серверах, испытательном оборудовании, зарядных устройствах для аккумуляторов и любых системах, которым требуется высокоточный и недорогой метод контроля мощности и тока.
Если вам нужны более расширенные возможности измерения постоянного тока, то присмотритесь к "старшему брату" INA219 - датчику INA226.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Датчик тока INA219 (купить на AliExpress).
- Светодиод 5 мм (купить на AliExpress).
- Резистор 330 Ом.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Модуль датчика постоянного тока INA219
INA219 — это шунт тока и ИС (интегральная схема) монитора мощности, разработанная Texas Instruments. Она работает на интерфейсе, совместимом с I2C или SMBus, что облегчает связь с микроконтроллерами. Ключевыми особенностями этой ИС являются ее способность измерять как падение напряжения шунта, так и напряжение питания шины, а также ее архитектура с нулевым дрейфом, что обеспечивает точные и последовательные измерения.
Более подробную информацию об этой ИС можно посмотреть в техническом паспорте INA219.
Принципиальная схема INA219
Модуль INA219 состоит из микросхемы INA219, нескольких резисторов и конденсатора, который помогает уменьшить шум или нежелательные электрические сигналы.
Особенности и характеристики INA219
- Рабочее напряжение (3–5,5 В): INA219 работает в диапазоне от 3 до 5,5 В, что повышает его совместимость с различными системами, работающими на логическом уровне 3,3 В или 5 В. Эта функция повышает гибкость модуля в различных схемах.
- Диапазон напряжения шины (0–26 В): INA219 может контролировать источники питания в диапазоне от 0 до 26 В. Этот широкий диапазон делает модуль применимым к низковольтным логическим схемам и высоковольтным источникам питания.
- Диапазон измерения тока (±3,2 А с разрешением ±0,8 мА): INA219 может контролировать диапазон тока ±3,2 А с точным разрешением ±0,8 мА. Эта способность делает его пригодным для различных приложений, включая управление питанием, зарядные устройства для аккумуляторов и управление двигателями постоянного тока, что позволяет точно отслеживать и контролировать потребление энергии.
- 0,1 Ом 1% 2 Вт токовый измерительный резистор: модуль использует шунтирующий резистор 0,1 Ом с допуском 1% и номинальной мощностью 2 Вт для измерения тока. Низкое значение сопротивления минимизирует потери мощности, а допуск 1% обеспечивает точность измерения. Номинальная мощность 2 Вт указывает на его надежность, поддерживая измерения тока до ±3,2 А.
Распиновка INA219
Модуль датчика INA219 обычно имеет следующие контакты:
- VCC: этот контакт используется для подачи рабочего напряжения на модуль INA219. Он может обрабатывать входное напряжение от 3,3 В до 5,5 В.
- GND: это контакт общего провода (земли).
- SCL: этот контакт используется для линии синхронизации интерфейса I2C.
- SDA: этот контакт используется для линии данных интерфейса I2C.
- Vin-: этот контакт подключается к отрицательной клемме источника напряжения, которое вы хотите измерить. Также он является местом расположения шунтирующего резистора и используется для измерения тока.
- Vin+: этот вывод подключается к положительному выводу источника напряжения, которое вы хотите измерить.
I2C-адрес модуля INA219
INA219 использует протокол I2C для связи с микроконтроллерами, и каждое устройство на шине I2C должно иметь уникальный адрес. Адрес I2C по умолчанию для INA219 — 0x40 (или 1000000 в двоичном формате).
Адрес можно изменить, если вы хотите использовать несколько датчиков INA219 на одной шине I2C. INA219 допускает до 16 различных адресов I2C в диапазоне от 0x40 до 0x4F. Это достигается путем настройки состояний двух адресных контактов A0 и A1. На модуле INA219 эти два контакта, A0 и A1, часто находятся с контактными площадками для пайки или перемычками. По умолчанию они подключены к земле (GND), что соответствует адресу по умолчанию 0x40.
A1 | A0 | Slave Address (Hex) (адрес ведомого) |
GND | GND | 0x40 |
GND | 0x41 | |
GND | SDA | 0x42 |
GND | SCL | 0x43 |
GND | 0x44 | |
0x45 | ||
SDA | 0x46 | |
SCL | 0x47 | |
SDA | GND | 0x48 |
SDA | 0x49 | |
SDA | SDA | 0x4A |
SDA | SCL | 0x4B |
SCL | GND | 0x4C |
SCL | 0x4D | |
SCL | SDA | 0x4E |
SCL | SCL | 0x4F |
Вы можете изменить адрес I2C, изменив соединения этих выводов на GND, SDA, SCL или оставив их плавающими (неподключенными). Например, если вы подключите вывод A0 к SDA, а A1 к GND, адрес будет 0x48.
Итак, если вы хотите иметь несколько модулей INA219 в одной системе, вам просто нужно задать уникальный адрес для каждого из них, настроив соответствующим образом контакты A0 и A1. Помните, что всякий раз, когда вы меняете адрес I2C, вы должны обновить адрес в программном обеспечении вашего микроконтроллера, чтобы он знал, где найти каждый INA219 на шине I2C.
Расчеты адресов и значений регистра
INA219 имеет набор внутренних регистров, которые содержат данные измерений и настройки управления. К ним можно получить доступ через интерфейс I2C для настройки чипа, запуска измерений и считывания результатов измерений.
1. Регистр конфигурации (адрес = 00h): этот регистр используется для управления различными аспектами INA219, такими как диапазон напряжения шины, усиление PGA, разрешение/усреднение АЦП, режим работы и т. д. Его можно читать или записывать для настройки INA219 по мере необходимости.
2. Регистр напряжения шунта (адрес = 01h): этот регистр содержит необработанный результат измерения напряжения шунта. Его можно прочитать, чтобы получить измерение напряжения шунта, а значение должно быть обработано в соответствии с руководством в техническом описании, чтобы получить фактическое напряжение в вольтах.
Напряжение шунта (в вольтах) рассчитывается путем взятия необработанного показания из регистра напряжения шунта и умножения его на 10 мкВ. Формула:
Напряжение шины (в вольтах) рассчитывается путем взятия необработанного показания из регистра напряжения шины и умножения его на 4 мВ. Формула:
Мощность (в ваттах) рассчитывается путем взятия необработанного показания из регистра мощности и умножения его на значение Power_LSB (определяется при установке регистра калибровки). Формула следующая:
Ток (в амперах) рассчитывается путем взятия необработанного показания из регистра тока и умножения его на значение Current_LSB (определяется при установке регистра калибровки). Формула следующая:
Взаимодействие модуля датчика постоянного тока INA219 с Arduino
Теперь давайте подключим модуль датчика постоянного тока INA219 к Arduino. Аппаратное взаимодействие очень простое.
Схема подключения
Ниже представлена простая схема подключения, которую можно использовать для сопряжения датчика INA219 с Arduino, а также внешней нагрузкой и источником питания.
Подключите выводы VCC, GND, SCL и SDA INA219 к 5V, GND, A5 и A4 Arduino соответственно. Вывод Vin+ должен быть подключен к источнику питания, а Vin- к нагрузке, как показано на рисунке выше.
Схема для тестирования проекта
Для практического тестирования я использовал 4 светодиода разного цвета, например, красный, зеленый, желтый и синий. Это поможет проверить ток, напряжение и мощность.
Для тестирования я использовал макетную плату и Arduino Nano.
Исходный код программы
Вот пример кода для сопряжения модуля датчика тока INA219 с Arduino. Для компиляции кода требуется библиотека Adafruit INA219. Поэтому скачайте эту библиотеку и добавьте ее в папку с библиотеками.
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 51 52 53 |
#include <Wire.h> #include <Adafruit_INA219.h> Adafruit_INA219 ina219; void setup(void) { Serial.begin(9600); while (!Serial) { delay(1); } // Initialize the INA219. if (! ina219.begin()) { Serial.println("Failed to find INA219 chip"); while (1) { delay(10); } } // To use a slightly lower 32V, 1A range (higher precision on amps): //ina219.setCalibration_32V_1A(); // Or to use a lower 16V, 400mA range, call: //ina219.setCalibration_16V_400mA(); Serial.println("Measuring voltage, current, and power with INA219 ..."); } void loop(void) { float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; float power_mW = 0; shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_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(1000); } |
Следующие строки задают различные диапазоны для датчика тока INA219.
1 2 3 4 |
// To use a slightly lower 32V, 1A range (higher precision on amps): ina219.setCalibration_32V_1A(); // Or to use a lower 16V, 400mA range, call: ina219.setCalibration_16V_400mA(); |
По умолчанию датчик INA219 инициализируется с диапазоном 32 В и 2 А. Но вы можете изменить эту настройку по умолчанию, чтобы выполнить калибровку для других диапазонов, и эти прокомментированные строки кода показывают, как это сделать.
ina219.setCalibration_32V_1A();
калибрует INA219 для диапазона до 32 В и 1 А. Это уменьшает максимальный диапазон измерения тока, но увеличивает точность измерений тока, делая их более точными.ina219.setCalibration_16V_400mA();
калибрует INA219 для диапазона до 16 В и 400 мА. Это еще больше уменьшает диапазон измерения напряжения и тока, но взамен повышает точность измерения как напряжения, так и тока.
Тестирование работы проекта
Это показания, которые мы получили без какой-либо нагрузки.
Затем мы подключили к цепи 1 светодиод в качестве нагрузки.
Последовательный монитор показал следующие показания с 1 светодиодом.
Мы увеличили количество светодиодов до 2.
С увеличением количества светодиодов увеличиваются значения тока, напряжения и мощности.
Затем мы увеличили количество светодиодов до 3.
Это еще больше увеличивает потребление энергии.
Затем мы провели финальное тестирование с 4 светодиодами.
При использовании 4 светодиодов энергопотребление было максимальным.
Вы можете увеличивать количество светодиодов или добавить двигатель постоянного тока напряжением 5 В, чтобы наблюдать за изменением показаний напряжения, тока и мощности.
Заключение
В данном проекте продемонстрирована способность модуля датчика постоянного тока INA219, сопряженного с платой Arduino, измерять и контролировать напряжение, ток и мощность. В ходе серии испытаний с использованием светодиодов в качестве нагрузки было установлено, что модуль INA219 может точно отслеживать изменения в энергопотреблении. Было замечено, что по мере увеличения количества светодиодов потребление энергии, а также ток и напряжение также соответственно увеличивались. Эта прямая связь между увеличением нагрузки и значениями напряжения, тока и мощности подтверждает надежность и эффективность модуля INA219 в точном обнаружении и мониторинге изменений этих параметров.
54 просмотров
Здрпастауйте
И вам добрый вечер. Что вы хотели спросить?