Главная » Измерения
Призовой фонд
на апрель 2020 г.

Вольт-Амперметр на INA233 и Arduino как монитор для лабораторного БП

Схема представляет собой цифровой монитор тока и напряжения с вычислением мощности и заряда в Ампер-часах.

Устройством измерения выступает микросхема INA233 производства Texas Instruments. На сайте производителя она позиционируется как 16-битный, ультра прецизионный монитор тока/напряжения/мощности/энергии с I2C протоколом связи, поддержкой команд управления источниками питания PMBus и с независимым выходом сигнализации аварийных ситуаций.

Технические характеристики устройства:

  • Измерение тока в диапазоне: 0÷3,2А с разрешением 1мА (при RSHUNT  = 25мОм)
  • Измерение напряжения в диапазоне: 0÷36В с разрешением 1мВ
  • Расчет мощности в диапазоне: 0÷100Вт с разрешением 1мВт
  • Расчет заряда аккумулятора в диапазоне: 0÷100А⋅ч с разрешением 1мА⋅ч

Схема

Board

Основное назначения микросхемы - следить за параметрами некоторой пользовательской шины питания постоянного тока, по запросу отдавать измеренные параметры микроконтроллеру и при выходе величин за установленные пределы подавать сигнал «Alert».

Непосредственно измеряемые параметры - это напряжение шунта (VIN+ – VIN–) и напряжение шины (VBUS) , которые не должны превышать ±81,92мВ и 36В соответственно.

Для установки правильного диапазона измерений сопротивление шунта устанавливается как RSHUNT = 81,92 (мВ) / IMAX (мА).

Например, для моего случая: RSHUNT = 81,92 (мВ) / 3200 (мА) = 25,6мОм ≈ 25мОм

При этом рассеиваемая мощность при номинальном токе составит P = U⋅I = 81,92 (мВ) ⋅ 3200 (мА) ≈ 0,262 Вт что не превышает допустимые 1Вт для корпуса SMD 2512.

Для расширения диапазона при измерении напряжения шины (VBUS) может быть использован резистивный делитель, при этом коэффициент деления необходимо будет учесть в программе микроконтроллера.

Дополнительно стоит учесть, что напряжение на шунте измеряется как дифференциальное значение, то есть может быть как положительным, так и отрицательным, а напряжение шины измеряется относительно общего проводника и может иметь только однополярное значение.

В моей реализации мозгом устройства выступает плата Arduino Nano c микроконтроллером ATmega328P. Человеко-машинный интерфейс - это экран OLED 2,42″ на контроллере SSD1309 и кнопка для спроса накопленных показаний мА⋅ч.

Данные на дисплей передаются по протоколу SPI, для этого кроме стандартной библиотеки SPI.h так же подключается сторонняя для Arduino IDE библиотека U8g2lib.h, она позволяет работать с большим количеством дисплеев в том числе и с контроллером SSD1309 на 128x64 точки. У нее имеется весьма обширный репозиторий на GitHub, а также огромное количество шрифтов с возможностью дополнительной установки, в том числе кириллических. Устанавливается она через менеджер библиотек Arduino IDE «U8g2 by oliver». И хотя она занимает просто огромное количество места что в памяти программ, что в динамической памяти, для меня работа с дисплеями это один из тех случаев, когда писать свою библиотеку с набором шрифтов ну совсем не целесообразно.

Модуль INA233 представлен отдельной схемой и выполняется на миниатюрной плате, расположение выводов аналогично модулю INA226, но из-за применения протокола PMBus обмен данными у них будет немного отличаться. Главное отличие - это последовательность байт при передаче данных. Если по стандарту для I2C при передачи двухбайтового числа первым принято передавать старший байт, а затем младший, то для PMBus эта последовательность заменена на обратную. Адрес устройства установлен резисторами R4, R9 в 0x40.

INA233 Scheme

INA Board

Упрощенный протокол инициализации и обмена данными с INA233 выглядит так:

1. Передаем значение в регистр конфигурации АЦП (MFR_ADC_CONFIG [0xD0])

Начало передачи I2C Master Output Slave In + адрес устройства I2С + пакет данных.

Состав пакета: [адрес устройства] [адрес регистра, младший байт данных, старший байт данных]

Пакет целиком (мой вариант конфигурации): [0x40][0xD0, 0xFF, 0x45]

Расшифровка:

  • Режим усреднения по 16-ти точкам;
  • Время преобразования при измерении напряжения шины 8.244мс;
  • Время преобразования при измерении напряжения шунта 8.244мс;
  • Режим работы – непрерывное измерение тока и напряжения.  

2. Передаем значение в регистр калибровки АЦП (MFR_CALIBRATION [0xD4])

Состав пакета: [адрес устройства] [адрес регистра, младший байт данных, старший байт данных]

Пакет целиком (мой вариант калибровки): [0x40][0xD4, 0x00, 0x08]

Расшифровка:

MFR_CALIBRATION = 0,00512/(Current_LSB⋅RSHUNT), где Current_LSB = 1-LSB Shunt voltage / RSHUNT = 2,5мкВ/25мОм = 0,1мА,

тогда MFR_CALIBRATION = 0,00512/(0,1мА⋅25мОм) = 2048 (0x0800).

При таком значении регистра калибровки INA233 будет отдавать значение 32767 при IMAX = 3,2767А, значит для правильного отображения тока в мА необходимо будет разделить в МК данные с АЦП на 10.

Второй путь, это запись в MFR_CALIBRATION 2048/10 ≈ 205 (0x00CD), тогда данные будут сразу в мА.

Для обоих вариантов значение регистра калибровки может быть дополнительно уточнено пользователем с использованием прецизионного измерительного оборудования.

3. Чтение в цикле значений тока и напряжения

- Напряжение, PMBus команда 0x88

- Ток, PMBus команда 0x89

Состав запроса: [адрес устройства][команда]

Состав ответа: [адрес устройства][младший байт данных, старший байт данных].

Пример: запрос [0x40][0x88]; ответ [0x40][VoltageLowByte, VoltageHighByte]

По протоколу обмена это все, «Alert» в моем варианте не задействуется, хотя аппаратно такая возможность остается. Дополнительные пояснения можно найти в моих комментариях в исходном коде.

В особенностях схемы стоит отметить возможность измерять параметры USB устройств, источник питания подключается к разъему USB1, а приемник к USB2, при этом должен быть установлен джампер P5 (в остальных случаях измерения джампер должен быть снят).

Для защиты от обратной полярности на входе VBUS установлен MOSFET Q1. Эта схема имеет ряд недостатков из-за ограничения среднестатистических P-канальных транзисторов по напряжению Gate-Source порядка -20В. Это проблема может быть преодолена установкой стабилитрона на напряжение менее 20В и резистора в цепь затвора. Тем не менее, при напряжениях менее 1В показания вольтметра с защитой могут быть искажены из-за возрастающего сопротивления канала с учетом того, что входное сопротивление АЦП по линии VBUS составляет 830кОм.

Один из вариантов решения проблемы - это отказ от этой защиты при стационарной установке в качестве монитора параметров однополярного БП.  

Схемотехника модуля INA233 выполнена в соответствии с рекомендациями производителя. Подключение к шунту выполнено по «Кельвин» соединению см. рис. с.)Kelvinp-fet protect

По итогам тестирования разработанный вольтамперметр показал весьма приличную точность во всем диапазоне измерений. В качестве образца при этих испытаниях выступал мультиметр UNI-T UT61E. Он, конечно, не может являться эталонным измерителем т.к. не поверяется, но тем не менее крупными мазками показать результат работы может. Для любительских приложений этого достаточно с головой.

foto1

MaketBoard

INA233_1INA233_2

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 Плата Arduino
Arduino Nano 3.0
1 Поиск в Utsource В блокнот
P1 LCD ДисплейOLED 2.42" 128x64 SSD13091 Поиск в Utsource В блокнот
P2 Плата расширения ArduinoINA233 Модуль1 Поиск в Utsource В блокнот
KEY1 Кнопка12/12/101 Поиск в Utsource В блокнот
P3, P4 Разъем2P 5мм под винт2 Поиск в Utsource В блокнот
Q1 MOSFET-транзистор
BSS84
1 Поиск в Utsource В блокнот
USB1 РазъемUSB Micro Female1 Поиск в Utsource В блокнот
USB2 РазъемUSB Type A Female1 Поиск в Utsource В блокнот
DC1 РазъемDS-2101 Поиск в Utsource В блокнот
D1 ДиодM7 SMD1 Поиск в Utsource В блокнот
PWR ПереключательDS1040-01RN1 Поиск в Utsource В блокнот
DA1 Линейный регулятор
LM78M05
1 Поиск в Utsource В блокнот
C1, C2 Конденсатор150мкФ/16В2 Поиск в Utsource В блокнот
R1 Резистор
1 кОм
1 Поиск в Utsource В блокнот
LED1 Светодиод2.5В. зеленый1 Поиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (20) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Karl-Ieronim #
Хороший проект.
Но INA233 довольно редкий модуль.
Так что...
Ответить
+1

[Автор]
TDA #
Есть у людей такая особенность, желание обладать тем чего нет у других. Так вот, модуль INA233 для ардуино не просто редкий модуль, а на данный момент существующий всего в нескольких экземплярах, подробнее https://vk.com/tdm_lab
Но по секрету скажу, что м/c INA226 весьма схожа с INA233 и, применительно к этому проекту, для ее корректной работы в этом устройстве необходимо лишь небольшое изменение в протоколе обмена данными.
Ответить
0
Karl-Ieronim #
С удовольствием бы повторил Вашу разработку, но с 226 модулем. Но вот код исправить самостоятельно не смогу
Ответить
+1

[Автор]
TDA #
Напишите в теме для обсуждения статьи и, думаю, мы сможем вместе сделать новую версию.
Одно замечание, что у китайских модулей INA226 отсутствует аналоговый фильтр и точность измерений от этого будет немного страдать.
Ответить
+1
maverick5334 #
Все классно, все красиво, но...
Цена дисплея не малая и, как уже написали, INA233 не так то просто и найти.
Ответить
0

[Автор]
TDA #
Кто ищет тот всегда найдет!
Действительно, примененный дисплей высококонтрасный и весьма крупный и поэтому дорогой. Он может быть легко заменен на практически любой OLED дисплей 128x64 точки, например с контроллером SSD1306. Библиотека работы с дисплеями, примененная в проекте, поддерживает великое множество вариантов.
Ответить
+1
maverick5334 #
Что-то мне подсказывает, что на Вас навалятся с просьбами о модификации схемы в сторону удешевление-доступность.
Отредактирован 13.03.2020 11:09
Ответить
+1

[Автор]
TDA #
Так схему не надо модифицировать, если не хочешь поддержать российского производителя, то берешь модуль INA226 на алиэкспресс (с моим они pin-to-pin) совместимы, ставишь в программе I2C адрес модуля который купил, по изменению протокола читаешь в статье выше или спрашиваешь у меня в теме обсуждения статьи на форуме и вуаля!
Ответить
-2
Виктор Медведев #
В каком месте у тебя российский производитель? Тебе ясно говорит не один уже человек, что проэкт хороший, но для большинства людей дорогой\трудно реализуем.
Ответить
+2

[Автор]
TDA #
Виктор Медведев, тебе ясно дали понять, что российский производитель это я. Если для тебя проект не реализуем то пожалуйста проходи мимо. Совсем уже обленились, все им на блюдечке и бесплатно принеси.
Ответить
0
Андрей #
Три месяца тому купил модуль Finchi - аналогичного функционала и точности - только до 24В, 3А. 4$. Смысла ваять что-то свое нет никакого.
Ответить
0

[Автор]
TDA #
Ну раз смысла нет, ладно.
Ответить
0
pcb432 #
поддержать российского производителя
Извините, ещё раз пересмотрел статью, но не разглядел что в этой конструкции отечественное?
А так вещь интересная очень.
на Вас навалятся с просьбами о модификации схемы в сторону удешевление-доступность.
А ЧЁ тянуть то.
Ардуино нафиг, На Atmega328 код переделать. INA233 заменить на более доставаемый.
Дисплей, как вариант исполнения, на самый ходовой 0,96' олед SPi. Желающих повторить такой много будет.
Ответить
+2

[Автор]
TDA #
Хм... а на последней фотографии на модуле какая надпись? Отечественное здесь это мой труд.
1. Atmega328 как бы уже.
2. INA233=INA226
3. Диплей на SSD1306 или почти любом другом.
4. Поменять 5 строчек в коде в зависимости от выбора в пунктах 2 и 3
Ответить
0
Karl-Ieronim #
Не все умеют менять пять строчек...
Может сделаете?
А помехи по питанию можно побороть - это, в данных условиях, проще.
Ответить
0

[Автор]
TDA #
Так я же говорю напишите в тема для обсуждения статьи, конкретно здесь не место для написания изменений в коде.
Напишите какой модуль хотите использовать, дайте на него ссылку, желательно какой экран, то же дайте на него ссылку.
Помехи по питанию тут ни при чем, я покажу вам на схемах о чем я говорю, но вы должны выполнить, написанное выше.
Ответить
0
pcb432 #
Отечественное здесь это мой труд.
Намёк понят. Вопрос закрыт.
Ответить
0
Борис #
Не совсем понятно, зачем этот измеритель. Он чем то лучше хорошего тестера? У него нет функций, которые бы существенно отличали его от типовых тестеров. По цене вопрос индивидуальный. Есть, например, дисплеи фирмы Demmel, хорошие, мощный редактор, но дорогие... В составе есть много опций...
Ответить
0

[Автор]
TDA #
То же самое могу сказать об этом комментарии. Не понятно зачем он. Причем тут тестер? Это прототип встраиваемого монитора выходных параметров ЛБП, как ясно из названия.
Почитайте раздел applications INA233
Что вы понимаете под странным наименованием "хороший тестер"?
По второй части, есть Demmel, есть Nextion есть еще куча вариантов HMI устройств, но зачем это тут объявлять?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

UNI-T UT-61A
UNI-T UT-61A
Макетная плата для пайки (10 шт) ELM327 OBD II — адаптер с поддержкой CAN
вверх