РадиоКот :: Измеритель тока, напряжения и мощности - INA226.
Например TDA7294

РадиоКот >Статьи >

Теги статьи: INA226Добавить тег

Измеритель тока, напряжения и мощности - INA226.

Автор: rai2011
Опубликовано 13.09.2018
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2018!"

 

     Здравствуйте уважаемые коты. Хочу рассказать о проведённых экспериментах с микросхемой INA226 производства фирмы Texas Instruments.
Микросхема предназначена для измерения тока, напряжения и мощности в нагрузке постоянного тока. Общается INA226 с внешним миром по интерфейсу I2C.
Возможности микросхемы:
- измерение постоянного напряжения до 36 вольт;
- измерение тока, протекающего через нагрузку;
- вычисление мощности;
- отслеживание превышения или снижения заданного параметра (измеряемого напряжения, напряжения шунта, мощности) с выдачей сигнала на вывод Alert;
- 16 программируемых адресов для шины I2C;
- напряжение питания 2,7 – 5 V.

     Для проведения «научных» экспериментов на просторах AliExpress был куплен модуль INA226:

 

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

 

Расположение выводов микросхемы показана на рисунке ниже, назначение выводов приведено в таблице 1

 

     Входные сигналы микросхемы имеют следующие параметры:
- напряжение на резисторе шунта не должно превышать 80mV;
- измеряемое напряжение на выводе VBUS не должно превышать 36V.
     Теперь можно приступать к работе и собирать тестовую схему. Схема устройства представлена на рисунке. Для фильтрации шумов и помех при измерении напряжения шунта микросхему необходимо подключать согласно рекомендациям в даташите «Figure 21. Input Filtering». На моём модуле блокировочного конденсатора и резисторов нет. Для экспериментов была собрана сдедующая схема:

     Микросхема INA226 поставляется девственно чистой, т.е. кроме регистра конфигурации и регистров ID остальные регистры содержат нули. Набор регистров и их функции приведены в таблице 4.

(1) Type: R = только чтение, R/W = чтение/запись

     Согласно даташиту, перед началом работы нам необходимо запрограммировать калибровочный регистр (Calibration Register) и регистр конфигурации (Configuration Register). Калибровочный регистр программируется согласно разделу даташита «7.5 Programming». По формуле 2 даташита рассчитываем разрешение регистра тока A/bit.

где:
- Maximum Expected Current – максимально измеряемый ток
- Current_LSB – разрешение регистра тока 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 даташита, рассчитываем значение калибровочного регистра.

где:
- Current_LSB – разрешение регистра тока A/bit;
- RSHUNT – сопротивление резистора шунта (Ом);
- CAL – значение калибровочного регистра.

CAL = 0,00512/(0,000250*0,01) = 1024

     Значение калибровочного регистра будет 1024 в десятичном коде или 400H в шестнадцатеричном коде. Записываем данное значение в регистр калибровки.
      Далее идёт регистр конфигурации. Назначение битов приведено ниже.

     Параметры регистра конфигурации определяют режимы работы устройства. Этот регистр контролирует установки времени преобразования для измерений напряжения шунта и шины, также использование режима усреднения.
     Регистр конфигурации можно прочитать в любое независимо от установок прибора или идущего преобразования. Запись в регистр конфигурации останавливает любое преобразование до завершения записи, приводя к новому преобразованию, начинающемуся на основе нового содержания регистра конфигурации (00h). Эта остановка предотвращает любую неопределенность в условиях, используемых для следующего завершенного преобразования.

(1)Затененная строка - значения по умолчанию.

(1)Затененная строка - значения по умолчанию.

(1)Затененная строка - значения по умолчанию.

(1)Затененная строка - значения по умолчанию.

Я оставил данный регистр без изменения. Каждый может настроить его на свой вкус.


     Далее приступаем к измерениям тока, напряжения и мощности. Для проведения измерений нам необходимо знать разрешение каждого регистра, т.е. регистров напряжения шунта (Shunt Voltage Register), тока (Current Register), напряжения (Bus Voltage Register) и мощности (Power Register).
Разрешение регистра тока мы вычисли, оно составляет - 500 μА/bit, разрешение регистров напряжения шунта (Shunt Voltage Register) и напряжения (Bus Voltage Register) жёстко запрограммированы и составляют соответственно 2,5 μV/ bit и 1,25 mV/ bit.
Разрешение регистра мощности имеет жёстко запрограммированную зависимость от разрешения регистра тока равную 25, т.е. разрешение регистра мощности в 25 раз больше разрешения регистра тока. В нашем случае это составит 0,0005*25 = 0,0125 W/bit или 12,5 mW/bit.
Сравнивать будем с током и напряжением, измеренными тестером DT9208.
     Для наглядности сведём все данные в таблицу:

 

     В таблицах 10 и 11 в качестве нагрузки служил светодиод, включенный через сопротивление при напряжении питания 3,3 вольта. В таблицах 12 и 13 в качестве нагрузки использована лампа накаливания на 24 вольта 60 ватт, при напряжении питания 12,2 вольта.
     Как вы уже, наверное, заметили, в таблицах 10 и 12 значение тока не совпадает с током, измеренным тестером. Это может быть вызвано, например, погрешностью сопротивления шунта. Для повышения точности измерений необходимо произвести корректировку калибровочного регистра как указано в разделе «7.5.2.1 Calibration Register and Scaling» даташита. По формуле 5 этого раздела вычисляем новое значение калибровочного регистра.

где:
- Cal – текущее значение калибровочного регистра в десятичной форме;
- MeasShuntCurrent – значение тока, измеренное образцовым ампермет-ром, делённое на разрешение регистра тока;
- INA226_Current – текущее значение регистра тока INA226 в десятич-ном виде;
- trunc - означает, что от результата берётся только целая часть.
Таким образом, получаем:

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 (т.е. предел измеряемого тока определяется ёмкостью регистра тока и его разрешением). Если применить делитель напряжения можно так же расширить диапазон измеряемого напряжения.

     Исходник программы, прошивка и описание регистров находятся в архиве. Надеюсь, моя статья кому-нибудь пригодится. Прошу не рассматривать статью как рекламу товара.

Все вопросы в форум.

 


Файлы:
Архив



Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

32 18 11
1 0 0