INA3221 подключение к ардуино, обзор и тест.

 

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

 

Предыдущая статья, возможно вам будет интересно:

GM328 многофункциональный тестер радиодеталей — сборка. 

Характеристики INA3221

Поговорим о характеристиках:

INA3221

INA3221

  • Измерение напряжения от 0 до 26 вольт.
  • Три независимых канала для измерений.
  • Собственное потребление 350 микроампер (что довольно мало).
  • Питание от 2,7 до 5,5 вольт (согласно даташиту)
  • Интерфейсы SMBus и I²C.
  • Четыре программируемых адреса.
  • Программируемое усреднение значений.
  • Работает в интервале температур от -40 до +125 °C.
  • Контроль напряжений питающей шины и трех токовых шунтов.
  • Офсетное напряжение максимум ± 80 микровольт.
  • Разрешение АЦП 12 бит (что довольно неплохо).
  • С предустановленным шунтом в 0,1 ома максимальный измеряемый ток 1,6 ампера на канал.
  • Размеры 38 × 18 × 12 миллиметров.
  • Вес 10 граммов.

На просторах интернета мало схем подключения данного девайса к платам ардуино. Встречаются даже попытки «доработок» и переделок. Я не вижу смысла что то переделывать потому что тесты показали что и так прекрасно работает. Основное направление переделки направлено на возможность мерять ток и напряжение на тех каналах независимо. Что ж, это весьма полезно в определенных случаях, особенно если вы хотите сэкономить 100 рублей  😀 . Согласно  заводской документации микросхема INA3221 может работать и в таком режиме. Однако модуль на базе этой микросхемы, который попался мне в руки, не может. Алиэкспресс завален только такими модулями, встречаются конечно исключения, но слишком мал процент.

Назначение контактов ina3221

схема модуля ina 3221

Типичная обвязка микросхемы согласно даташиту

Итак, что же представляет из себя модуль INA3221? Это трехканальный цифровой измеритель тока и напряжения. Кроме того на его борту имеются несколько программируемых выводов для оповещения, о проблемах или о превышении заданных параметров. Максимальный измеряемый ток на один канал составляет 1,6 ампера. Это связано не с мощностью шунта, а с входным диапазоном АЦП. Для 12-ти бит шаг составляет от -160,84 до +160,8 милливольт. Соответственно для увеличения диапазона измеряемого тока необходимо уменьшить сопротивление шунта. Повторюсь, в заводском исполнении сопротивление шунта составляет 0,1 ома.

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

На бору имеется множество контактов для подключения, давайте разберемся в назначении каждого из них.  Фото модуля с подписанными выводами представлено ниже, оно увеличится по клику.

Большие:

Распиновка 3221

CH1, CH2, CH3 — это три выходных канала контролируемого плюса питания. GND, то есть «минус» каждого канала находятся рядом с ними. Именно на этих выводах осуществляется измерение тока, и падение напряжения на шунте. Данные каждого канала микросхема предоставляет в цифровом виде.

VPU — вывод мониторинга допустимой мощности. Подтянут к контакту PV через резистор 10КОм.

POW — плюс питания. Сюда следует подключать, так сказать, транзитное питание которое хотите контролировать. На выходах СН1, СН1 и СН3 выводится плюс именно с этого входа через шунт. Максимально допустимое напряжение этого канала составляет 26 вольт.

GND (большой, рядом с POV и VPU) — минус от источника, плюс которого подается на POW. Извиняюсь за каламбур 😀 .

Маленькие:

VS — это питание микросхемы. Сюда следует подавать напряжение в пределах от 2,7 до 5,5 вольт.

GND  (маленький, между VS и SCL) — минус питания микрухи.

SCL — последовательные данные шины I2C (serial data)

SDA — последовательное тактирование шины данных I2C (serial clock)

PV — цифровой выход сигнала превышения напряжения. Уровень минимального и максимального напряжения программируется, но не может превышать 26 вольт. С открытым стоком. Если уровень выходит за пределы диапазона контакт покажет единицу. В стоке это от 0 до 26 вольт.

CRI — так же цифровой выход оповещения о критической ситуации, такой как переполюсовка или короткой замыкание. С открытым стоком. Установит логическую единицу в случае проблемы.

WAR — предупреждение об ошибке измерения, цифровой, с открытым стоком.

ТС — контроль таймингов, цифровой. Меняет свое состояние если пробит один из шунтов. Рассмотрим эту функцию подробнее. При обнаружении напряжения выше 1,2 вольта на первом канале микросхема переходит к измерению второго канала. После второго переходит к третьему. Замеры производятся с интервалом в 2,2 миллисекунды. В том случае если микросхема не обнаружит корректного напряжения на одном из каналов замеры повторяются 4 раза на каждый канал. То есть по истечении 28,6 миллисекунд выход ТС будет активен. 

Назначение светодиодов INA3221:

LED1 — индикатор наличия питания на микросхеме.

LED2 — указывает на то что питание находится в запрограммированном диапазоне. По умолчанию это 0 — 26 вольт.

LED3 — указатель критической проблемы такой как неверная полярность или короткое замыкание. Сигнал относится к питанию шины, а не контроллера. Канал CRI.

LED4 — ошибка измерения. Канал WAR.

LED5 — обрыв линии питания одного из трех выводов. Канал ТС.

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

Подключение INA3221 к arduino

Но вернемся к подключению. На самом деле оно весьма банально. Даже рисовать особо нечего поэтому просто напишу несколько пунктов.

схема подключения

На контакты GND и POW подается питание на шину в пределах 0-26V. Другими словами это питание которое мы будем измерять. Качество питания тут не особо важно. Однако стоит учесть тот факт, что большие пульсации приведут к увеличению погрешности измерений, другими словами, снизят точность.

На пины VS и GND подается напряжение в диапазоне 2,7 — 5,5V. Это напряжение питания микросхемы. Примечательно что оно может быть и нестабилизированным. Соответственно можно запитать плату от li-ion аккумулятора формата 18650 и разряжать через нагрузку. Получится автономный тестер для аккумуляторов, если усесть потерю 350 микроампер собственного потребления. И да, «нестабилизированным» совсем не означает ШИМ 🙂 , поэтому не стоит питать модуль от чего попало.

SCL и SDA подключаем к шине I2C принимающего устройства соответственно на пины SCL и SDA. Тут все зависит от платы которая будет основой вашего проекта. Если это Arduino Uno, Nano, Pro и Pro Mini то подключаться следует к ногам А4 и А5. В случае Arduino Mega это 20я и 21я ноги. Для  Arduino Leonardo это второй и третий выводы. Ну а у Arduino Due это соответственно 20, SDA1 и 21, SCL1 (она «крутая» у нее два канала I2C). Для плат на базе микроконтроллеров ESP8266 все так же зависит от выбранной модели. Для wemos D1 mini это D1 (GPIO5) и D2 (GPIO4) как и nodemcu. Wemos D1 R1 и R2 подключаются к D15 (GPIO5) и D14 (GPIO4) вне зависимости от модели.  

Цифровые выводы оповещений, а именно PV, CRI, WAR и TC подключаются к пинам с буквой D(digital) которые назначаются програмно в прошивке микроконтроллера. О написании прошивки немного позже.

Назначение адреса INA3221. 

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

ina3221 адрес

Это адреса на шине I2C 40 — го до 43 -го. В зависимости от расположения перемычки меняется и адрес платы. Ниже соответствие перемычки адресу. Стоит заметить что перемычка должна быть только одна или ее не должно быть вообще.

  • GND — HEX 40,  BIN 1000000
  • SCL — HEX 41,  BIN 1000001
  • SDA — HEX 42,  BIN 1000010
  • VS — HEX 43,  BIN 1000011

Вот эти адреса мы и будем использовать в прошивке. Исходя из вышеизложенного материала следует что всего к одной ардуинке мы можем подключить не более четырех таких устройств. И это довольно много учитывая что у каждого по четыре канала. Соответственно получаем 16 каналов мониторинга. Как то так.

 

Прошивка ардуино для чтения данных ina3221

Модуль подключили, пора и скетч писать. Но писать как раз мы ничего и не будем. Нет ну конечно же будем, но потом, когда все проверим. Для проверки уже давно есть готовый скетч на гитхабе. И библиотека так же уже написана за нас. Все это добро лежит на гитхабе.

 

Скачать библиотеку и тестовую прошивку

 

Если у вас возникли затруднения со скачиванием, то все сейчас объясню. Справа будет стрелочка в палочку и «Код»  😀 . Жмакаете на вкладку и выбираете скачать ZIP. И да, находятся все еще люди которые не ориентируются на гитхабе. Что бы в комментах воду не лить по этому поводу, написал пару предложений.

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

результат в мониторе порта

В мониторе порта будет выведена информация по напряжениям, амперажу, мощности и падению на шунтах всех трех каналов и шины питания. Показания весьма корректны и погрешность минимальна. Если у вас сильно разнятся параметры то скорее всего всему виной плохой контакт. Убедитесь что используете провода достаточного сечения с минимальным сопротивлением, их длинна так же должна быть минимальной. Зажимы типа «крокодил» в нашем случае тоже могут добавить ложку дегтя в бочку меда. Лучше припаяться. К информационным подключениям это не относится, только к силовым.

Надеюсь статья была полезной. Если возникли проблемы или вопросы то с удовольствием отвечу на них в комментариях. Любая критика, замечания и дополнения так же приветствуются.

 

Постоянная ссылка на это сообщение: https://rightnotes.ru/instruktsii/ina3221-podklyuchenie-k-arduino-obzor-i-test.html

1 комментарий

  1. Такой же модуль, один канал «200мА», два других «-200мА», при поочередном подключении одной нагрузки

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

Ваш адрес электронной почты не будет опубликован.