INA3221 — отличный трехканальный модуль для многих задач. Удивительно, но он существует уже давно и предлагается к продаже у китайцев и россиян. Тем не менее не набрал свою популярность среди ардуино сообщества. Возможно это потому что INA3221 несколько специфический девайс. Давайте разберемся в чем его достоинства и недостатки.
Предыдущая статья, возможно вам будет интересно:
GM328 многофункциональный тестер радиодеталей — сборка.
Характеристики 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
Итак, что же представляет из себя модуль INA3221? Это трехканальный цифровой измеритель тока и напряжения. Кроме того на его борту имеются несколько программируемых выводов для оповещения, о проблемах или о превышении заданных параметров. Максимальный измеряемый ток на один канал составляет 1,6 ампера. Это связано не с мощностью шунта, а с входным диапазоном АЦП. Для 12-ти бит шаг составляет от -160,84 до +160,8 милливольт. Соответственно для увеличения диапазона измеряемого тока необходимо уменьшить сопротивление шунта. Повторюсь, в заводском исполнении сопротивление шунта составляет 0,1 ома.
Темнемение вышеуказанное ограничение позволяет использовать девайс в зарядниках и тестерах АКБ, а так же в маломощных блоках питания.
На бору имеется множество контактов для подключения, давайте разберемся в назначении каждого из них. Фото модуля с подписанными выводами представлено ниже, оно увеличится по клику.
Большие:
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.
Это адреса на шине 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, загружаете пример, прошиваетесь и радуетесь. На выходе должно получиться следующее:
В мониторе порта будет выведена информация по напряжениям, амперажу, мощности и падению на шунтах всех трех каналов и шины питания. Показания весьма корректны и погрешность минимальна. Если у вас сильно разнятся параметры то скорее всего всему виной плохой контакт. Убедитесь что используете провода достаточного сечения с минимальным сопротивлением, их длинна так же должна быть минимальной. Зажимы типа «крокодил» в нашем случае тоже могут добавить ложку дегтя в бочку меда. Лучше припаяться. К информационным подключениям это не относится, только к силовым.
Надеюсь статья была полезной. Если возникли проблемы или вопросы то с удовольствием отвечу на них в комментариях. Любая критика, замечания и дополнения так же приветствуются.
1 комментарий
Такой же модуль, один канал «200мА», два других «-200мА», при поочередном подключении одной нагрузки