Рубрики
Схемы на Arduino

Подключение датчика постоянного тока INA226 к Arduino

В этом уроке мы узнаем как подключить модуль датчика постоянного тока INA226 к плате Arduino. INA226, как и его предшественник INA219, представляет собой устройство, которое может измерять ток, напряжение и мощность. Однако он имеет расширенный диапазон, способный измерять напряжение до 36 В и ток до 20 А.

INA226 — это монитор напряжения шунта и шины, представленный компанией Texas Instruments. Он предлагает интегрированный, с нулевым дрейфом, двунаправленный интерфейс, который контролирует напряжение шунта, напряжение шины, ток и мощность. INA226 взаимодействует с микроконтроллерами через интерфейс I2C, что позволяет легко передавать и интерпретировать данные.

Одной из уникальных особенностей INA226 является настраиваемое время усреднения и преобразования для измерений как напряжения шунта, так и напряжения шины. Это дает возможность оптимизировать устройство для различных приложений и системных требований. Кроме того, он также включает программируемый порог и функцию оповещения для этих измерений, которые могут использоваться для оптимизации на уровне системы, такой как энергосбережение и программирование прерываний, управляемых событиями.

Модуль датчика тока INA226 универсален и находит применение в управлении питанием серверов, телекоммуникациях, оборудовании электропитания и системах управления батареями. По сути, любая система, требующая высокоточного и экономичного мониторинга мощности и тока, может получить значительную выгоду от этого модуля.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Датчик тока INA226 (купить на AliExpress).
  3. Батарея 3,7 В.
  4. Двигатель постоянного тока.
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Модуль датчика постоянного тока INA226

INA226 — это усовершенствованная интегральная схема (ИС) шунта тока и монитора мощности, разработанная Texas Instruments. Она работает через интерфейс, совместимый с I2C или SMBus, предлагая прямую цифровую связь с микроконтроллером. Она обеспечивает более широкие возможности, чем INA219, включая лучшую точность, более широкий диапазон напряжения и тока, а также интегрированные математические функции, которые напрямую сообщают мощность в ваттах.

Более подробную информацию об этой ИС можно посмотреть в техническом паспорте INA226.

Схема платы INA226

Модуль INA226 состоит из микросхемы INA226, нескольких резисторов и конденсатора, который помогает уменьшить шум или нежелательные электрические сигналы.

Особенности и характеристики INA226

  1. Рабочее напряжение (2,7–5,5 В): INA226 работает в диапазоне от 2,7 до 5,5 В. Это расширяет его совместимость с системами, работающими при разных уровнях напряжения. Эта особенность полезна для адаптации к широкому диапазону схемных решений.
  2. Диапазон напряжения шины (0–36 В): INA226 может контролировать источники питания напряжением до 36 В, что расширяет применимость устройства к различным источникам питания.
  3. Диапазон измерения тока (от ± 500 мА до ± 50 А): в зависимости от номинала шунтирующего резистора INA226 может контролировать широкий диапазон токов, что позволяет использовать его во множестве приложений, включая управление питанием, зарядные устройства для аккумуляторов и управление двигателями постоянного тока.
  4. Потребляемая мощность: непрерывный режим: 0,35 мА; режим пониженного энергопотребления: 2,3 мкА.
  5. Режимы измерения: непрерывный или по требованию («запускаемый»).
  6. Усреднение 1, 4, 64, 128, 256, 512 или 1024 отдельных измерений.
  7. Время аналого-цифрового преобразования регулируется на восьми уровнях: от 0,14 до 8,2 мс.
  8. Более высокая точность: INA226 обеспечивает повышенную точность благодаря 16-битному АЦП, что обеспечивает более точные измерения.
  9. Программируемый сигнальный контакт для обнаружения нарушений предельных значений и доступных данных.

Распиновка INA226

Модуль датчика INA226 обычно имеет 8 контактов, которые расположены следующим образом:

  1. VCC: принимает входное напряжение от 2,7 В до 5,5 В.
  2. GND: Заземляющий контакт, подключенный к заземлению источника питания.
  3. SDA: последовательная линия данных для интерфейса I2C. Используется для двунаправленной передачи данных.
  4. SCL: последовательная линия синхронизации для интерфейса I2C. Используется для синхронизации во время передачи данных.
  5. ALE: Это вывод оповещения. Это выход с открытым стоком, требующий подтягивающего резистора. Этот вывод можно использовать для различных оповещений или как готовый к преобразованию сигнал.
  6. VBUS: Этот вывод используется для измерения напряжения питания. Он может измерять напряжение питания до 36 В.
  7. IN- : Этот вывод подключается к нагрузке. Здесь размещается шунтирующий резистор для измерения тока.
  8. IN+ : этот контакт подключается к источнику питания.

Выбор резистора для измерения тока

Максимальный ток , который может измерить INA226, определяется не непосредственно самой микросхемой, а скорее значением шунтирующего резистора, используемого совместно с ней.

INA226 измеряет падение напряжения на шунтирующем резисторе и на его основе вычисляет ток, используя закон Ома (I = V/R). Поскольку INA226 может измерять максимальное напряжение шунта 81,92 мВ (с разрешением 2,5 мкВ), максимальный ток зависит от сопротивления шунта.

Ниже приведена таблица рекомендуемых шунтов.

Разрешение АЦП

Регистр напряжения шины INA226, 16-битный знаковый объект, имеет младший значащий бит (LSB) или разрешение 1,25 мВ. Это позволяет измерять напряжение в диапазоне полной шкалы +/-40,96 В.

Аналоговый вход INA226, предназначенный для шунтирующего резистора, способен принимать максимальное (полное) напряжение 81,92 мВ. В сочетании с шунтирующим резистором 4 мОм он позволяет измерять ток до +/-20,48 А с разрешением до 625 мкА .

I2C-адрес

Подобно INA219, INA226 использует протокол I2C для связи с микроконтроллерами. Адрес I2C по умолчанию для INA226 — 0x40. Этот адрес можно изменить, чтобы облегчить использование нескольких датчиков INA226 на одной шине I2C. INA226 допускает до 16 различных адресов I2C, от 0x40 до 0x4F. Вы можете изменить адрес I2C, изменив соединения выводов A0 и A1.

Расчеты адресов и значений регистра

INA226 также имеет внутренние регистры, доступ к которым осуществляется через интерфейс I2C. Некоторые из основных:

  1. Регистр конфигурации (адрес = 00h): подобно INA219 , этот регистр используется для управления различными аспектами INA226.
  2. Регистр напряжения шунта (адрес = 01h): в этом регистре хранятся необработанные результаты измерения напряжения шунта.
    Напряжение шунта (В) = Значение регистра напряжения шунта * 2,5 мкВ
  3. Регистр напряжения шины (адрес = 02h): этот регистр содержит необработанные измерения напряжения шины.
    Напряжение шины (В) = Значение регистра напряжения шины * 1,25 мВ
  4. Регистр мощности (адрес = 03h): в этом регистре хранится рассчитанное значение мощности.
    Мощность (Вт) = Значение регистра мощности * Power_LSB
  5. Текущий регистр (адрес = 04h): этот регистр содержит вычисленное текущее значение.
    Ток (A) = Текущее значение регистра * Текущий_LSB
  6. Регистр калибровки (адрес = 05h): этот регистр используется для установки значения калибровки для расчетов тока и мощности.

Как использовать датчик постоянного тока INA226 с Arduino

Теперь давайте подключим модуль датчика постоянного тока INA226 к Arduino. Аппаратное взаимодействие очень простое.

Ниже представлена ​​простая схема подключения, которую можно использовать для сопряжения датчика тока INA226 с Arduino вместе с внешней нагрузкой и источником питания.

Подключите контакты VCC, GND, SCL и SDA датчика INA219 к контактам 5V, GND, A5 и A4 платы Arduino соответственно. Контакт Vin+ должен быть подключен к источнику питания, а Vin- к нагрузке, как показано на рисунке выше. Датчик INA226 имеет контакт VBus, который используется для измерения напряжения источника. Подключите контакт VBus к выводу Vin-.

Для теста я использовал в качестве источника питания батареи 3,7 В и 9 В. В качестве нагрузки для этой схемы я использовал двигатель постоянного тока.

Контакт Vin+ может принимать входное напряжение до 36 В. Устройство рассчитано на 36 В (абсолютный максимум 40 В) на входных контактах. Поэтому не подавайте на них ничего выше 36 В.

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

Библиотека INA226 Arduino

Существует много версий библиотеки INA226, доступных для использования. Я протестировал большинство из них. Библиотека от Wollewald показалась мне наиболее точной.

Вы можете загрузить библиотеку с GitHub или установить ее напрямую с помощью менеджера библиотек Arduino IDE.

СкачатьБиблиотека INA226
Всего имеется семь примеров скетчей, используемых для представления функций библиотеки. Я использовал пример непрерывного режима. Многие функции используются во всех скетчах и поэтому должны быть объяснены только один раз.

Исходный код программы

Скопируйте следующий код и вставьте его в окно редактора Arduino IDE. Перед загрузкой кода вам может потребоваться внести некоторые изменения.

Модификации и настройка кода

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

Эта строка устанавливает резистор и диапазон тока. Если резистор 5,0 мОм, диапазон тока до 10 А. По умолчанию 100 мОм и около 1,3 А.

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

Поправочный коэффициент = ток, выдаваемый калиброванным оборудованием / ток, выдаваемый INA226
Вы можете подключить мультиметр последовательно с Vin- и измерить ток, а затем сверить его со значением в последовательном мониторе.

Ниже приведены некоторые другие функции и требуемые настройки:

  1. Установите количество отдельных измерений для преобразования напряжения шунта и шины с помощью setAverage()
    • Усредняются 1, 4, 16, 64, 128, 256, 512 или 1024 отдельных измерений
  2. Установите время аналого-цифрового преобразования для напряжения шунта и шины с помощью setConvTime()
    • 8 уровней, регулируемых от 140 мкс до 8,244 мс
    • Примечание: получение набора данных о напряжении шунта и шины занимает в два раза больше времени.
  3. Установите режим измерения с помощью setMeasureMode()
    • CONTINUOUS (НЕПРЕРЫВНЫЙ) – непрерывное измерение
    • TRIGGERED (ТРИГГЕРНЫЙ) – «по запросу»: я объясню в следующем примере.
    • POWER_DOWN – выключает INA226. Но лучше использовать более удобную  powerDown() функцию, которая описана ниже.
    • INA226 на самом деле позволяет определять шунтовые или шинные напряжения – но я этого не реализовал. Используя мою библиотеку, измерения доступны только в двойном пакете.
  4. Установите текущий диапазон с помощью setCurrentRange()
    • Вы можете установить 400 или 800 мА в качестве максимального тока. Чем меньше диапазон тока, тем выше разрешение для тока и мощности.

Результаты тестирования

После загрузки кода на плату Arduino можно приступить к тестированию настройки.

Сначала подключите литий-ионную батарею 3,7 В к контакту Vin+, а двигатель постоянного тока к контакту Vin-. Двигатель постоянного тока начнет вращаться.

Теперь откройте последовательный монитор, и вы увидите следующие результаты для источника 3,7 В.

Извлеките батарею 3,7 В и подключите батарею 9 В.

Та же схема при испытании с источником постоянного тока 9 В дает следующие результаты.

Заключение

В заключение, модуль датчика постоянного тока INA226 — это очень универсальное и мощное устройство, идеально подходящее для широкого спектра применений, где требуется точный мониторинг мощности, тока и напряжения. Он имеет расширенный диапазон по сравнению со своим предшественником INA219, позволяя измерять до 36 В напряжения и 20 А тока.

Интерфейс этого модуля датчика тока INA226 с Arduino позволяет нам использовать его расширенные возможности простым способом, что делает его бесценным инструментом для тех, кто ищет высокоточные и экономически эффективные решения для мониторинга. Таким образом, освоив интерфейс INA226 с Arduino, мы можем значительно расширить наши возможности по мониторингу и управлению питанием в электронных системах.

4 ответа к “Подключение датчика постоянного тока INA226 к Arduino”

Здравствуйте! Благодарю за статью.
Поясните пожалуйста подробнее этот момент:
« INA226 на самом деле позволяет определять шунтовые или шинные напряжения – но я этого не реализовал. Используя мою библиотеку, измерения доступны только в двойном пакете.»
Спасибо.

Добрый день.
Фраза «позволяет определять шунтовые и шинные напряжения» означает, что этот чип выполняет две ключевые функции одновременно:
Измеряет крошечное напряжение на шунте (токоизмерительном резисторе), чтобы рассчитать ток в цепи.
Измеряет абсолютное напряжение на самой шине питания/нагрузки относительно земли.
Вместе это дает полную картину о мощности нагрузки.

Таким образом, «определять шунтовые или шинные напряжения» — это способность INA226 быть не просто измерителем тока, а полноценным и точным ваттметром в одном чипе. Это делает его незаменимым для задач умного управления питанием, мониторинга батарей, диагностики встраиваемых систем и солнечных контроллеров.

Спасибо за ответ.
Вот как раз интересует : « Измеряет крошечное напряжение на шунте (токоизмерительном резисторе), чтобы рассчитать ток в цепи.».
Правильно-ли я понял, что можно измерять микротоки? Например, ток потребления ESP32 в спящем режиме?

К сожалению так глубоко я уже не специалист, затрудняюсь с ответом

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *