Измеритель тока, напряжения и мощности - INA226.
Автор: rai2011
Здравствуйте уважаемые коты. Хочу рассказать о проведённых экспериментах с микросхемой INA226 производства фирмы Texas Instruments. Для проведения «научных» экспериментов на просторах AliExpress был куплен модуль INA226:
В качестве микроконтроллера для общения с модулем использовалась самодельная отладочная плата на STM32F103C8T6. Для просмотра результатов использовался логический анализатор, купленный на том же AliExpress. На фото ниже представлена вся конструкция в сборе.
Расположение выводов микросхемы показана на рисунке ниже, назначение выводов приведено в таблице 1
Входные сигналы микросхемы имеют следующие параметры:
Микросхема INA226 поставляется девственно чистой, т.е. кроме регистра конфигурации и регистров ID остальные регистры содержат нули. Набор регистров и их функции приведены в таблице 4.
(1) Type: R = только чтение, R/W = чтение/запись Согласно даташиту, перед началом работы нам необходимо запрограммировать калибровочный регистр (Calibration Register) и регистр конфигурации (Configuration Register). Калибровочный регистр программируется согласно разделу даташита «7.5 Programming». По формуле 2 даташита рассчитываем разрешение регистра тока A/bit.
где: На модуле стоит резистор шунта 0,01 Ом. Отсюда следует, что при максимальном напряжении на шунте 80mV, измеряемый то будет 8А. I = 0,08 / 0,01 = 8А Вычисляем разрешение регистра тока: Current_LSB = 8/215 = 0,000244140625 A/bit. Для проведения дальнейших расчётов такое число не очень удобно, поэтому мы округлим его до 0,000500 A/bit или 500 μА/ bit. Согласно формулы 1 даташита, рассчитываем значение калибровочного регистра.
где: CAL = 0,00512/(0,000250*0,01) = 1024 Значение калибровочного регистра будет 1024 в десятичном коде или 400H в шестнадцатеричном коде. Записываем данное значение в регистр калибровки.
Параметры регистра конфигурации определяют режимы работы устройства. Этот регистр контролирует установки времени преобразования для измерений напряжения шунта и шины, также использование режима усреднения.
(1)Затененная строка - значения по умолчанию.
(1)Затененная строка - значения по умолчанию.
(1)Затененная строка - значения по умолчанию.
(1)Затененная строка - значения по умолчанию. Я оставил данный регистр без изменения. Каждый может настроить его на свой вкус.
В таблицах 10 и 11 в качестве нагрузки служил светодиод, включенный через сопротивление при напряжении питания 3,3 вольта. В таблицах 12 и 13 в качестве нагрузки использована лампа накаливания на 24 вольта 60 ватт, при напряжении питания 12,2 вольта.
где: Corrected_Full_Scale_Cal = (1024*14)/17 = 843,294 Отбрасываем от результата дробную часть, и получаем 843 или 34Вh в шестнадцатеричном коде. Записываем в микросхему новое значение калибровочного регистра и получаем более точные значения тока и мощности. Смотрите таблицы 11 и 13. Несколько слов о работе по шине I2C. Рассматривать работу шины я не вижу смысла, в интернете полно таких описаний, поэтому перейдём к делу. Как было сказано выше, микросхема INA226 имеет возможность выставить один из 16 адресов, т. е. одним микроконтроллером можно опрашивать 16 микросхем. Адреса определяются соединением адресных входов с соответствующими выводами микросхемы, как указано в разделе даташита.
Конструкция моего модуля предусматривает соединение адресных входов с плюсом питания, поэтому адрес модуля 8Ah. Так как шина I2C работает только с однобайтовыми данными, то для чтения/записи двухбайтовых регистров необходимо следовать следующим рекомендациям. Для чтения данных из микросхемы необходимо отправить адрес регистра, который необходимо прочитать, затем по очереди считать два байта данных. Первым идёт старший байт регистра, вторым младший. Для записи данных в регистр микросхемы необходимо отправить адрес регистра, в который мы хотим записать данные, затем по очереди отправить два байта данных. Первым отправляется старший байт. Судя по всему в микросхеме нет автоматического инкремента адреса для чтения регистров, поэтому при чтении регистров необходимо указывать адрес. Теперь немного о программе. Программа микроконтроллера построена следующим образом: - инициализация I2C; - функция старта для записи в регистр; - функция старта для чтения регистра; - инициализация INA226; - в главном цикле происходит чтение регистров тока, напряжения, мощ-ности и регистра шунта. Содержание регистров отслеживается с помощью логического анализатора. Здесь не рассматривается работа микросхемы с функцией Alert, регистры Mask/Enable Register и Alert Limit Register. Я думаю, не составит труда разобрать это самостоятельно. Небольшой вывод. Микросхема INA226 обеспечивает хорошую точность измерения. Позволяет работать в нескольких режимах, в зависимости от необходимости. Широкий диапазон напряжений питания (подходит под все существующие микроконтроллеры). Микросхема хорошо подходит для работы со стандартными шунтами на 75 mV (т.е. предел измеряемого тока определяется ёмкостью регистра тока и его разрешением). Если применить делитель напряжения можно так же расширить диапазон измеряемого напряжения. Исходник программы, прошивка и описание регистров находятся в архиве. Надеюсь, моя статья кому-нибудь пригодится. Прошу не рассматривать статью как рекламу товара. Все вопросы в форум.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
|
||||