[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Общий форум » Источники питания » Разбираемся с цифровым датчиком тока/напряжения INA226
Разбираемся с цифровым датчиком тока/напряжения INA226
JamyДата: Понедельник, 23.10.2017, 17:25 | Сообщение # 1
Мастер Йода
Группа: Администраторы
Сообщений: 731
Статус: Offline
Не спеша перевожу и рассказываю о том как программировать и использовать цифровой датчик тока/напряжения с шиной I2C - INA226

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

Напряжение питания 2,7в-5,5в
Измеряемое напряжение c отдельного входа Bus voltage 0 - 36в
Измеряемый ток практически не ограничен зависит от используемого шунта
Максимальное измеряемое напряжение шунта от –81.9175 до 81.92 mV
Скорость передачи по I2C 100 kHz до 2.94 MHz
Разрешение АЦП - 16 бит
Скорость преобразования от 140 мКс до 9,068 Мс


---------------------------------------------------------------------------------------------------------

Перед началом работы с датчиком его необходимо сконфигурировать при помощи программирования внутренних регистров , самый главный это регистр H00



15 бит - Reset контроллера , установка этого бита в '1' генерирует системный сброс, который является таким же, как сброс при включении питания ,сбрасывает все регистры по умолчанию ,этот бит самоочищается.

Биты 9 ,10 ,11 - усреднение значений , определяет количество собранных и усредненных образцов ,таблица 6



Биты 6 ,7 ,8 - Время преобразования напряжения , устанавливают время преобразования для измерения напряжения шины VBUSCT. В таблице 7 показаны варианты битов. По умолчанию время преобразования 1,1 Мс.



Биты 3 ,4 ,5 - Время преобразования напряжения шунта. Устанавливает время преобразования для измерения напряжения шунта. В таблице 8 показаны варианты бит VSHCT и соответствующие
времени преобразования для каждой установки бит. По умолчанию время преобразования 1,1 Мс.



Биты 0 ,1 ,2 - рабочий режим ,выбирает режим непрерывной работы, одиночной и отключения питания.
По умолчанию задана непрерывная работа измерения шунта и напряжения с входа Bus voltage.



Регистр напряжения шунта (01h) (только для чтения)

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

Всего 16 битный регистр может иметь 65535 значений , положительное значение с учетом шума по даташиту может принимать значение до (80 mV ÷ 2.5 µV) = 32000 , максимальное 32767 (7FFFh)

15 бит , это бит знака , так как датчик может измерять ток текущий в обоих направлениях.

Из даташита -
Преобразовать это число в двоичное = 0111 1101 0000 0000
Проинвертировать = 1000 0010 1111 1111
И прибавить единицу +1 = 1000 0011 0000 0000 = 8300h

Если усреднение включено, в этом регистре отображается усредненное значение.
Полномасштабный диапазон = 81,92 мВ (7FFFh); LSB: 2,5 мкВ.

Регистр напряжения шины (02h) (только для чтения)

Обратите внимание регистр не 16 бит ,а 15 бит - 32767 (7FFFh) ,D0-D14.
D15 всегда равен нулю, поскольку напряжение шины может быть только положительным.

В регистре напряжения шины хранится последнее значение напряжения шины VBUS.
Если усреднение включено, в этом регистре отображается усредненное значение.
Полномасштабный диапазон = 40,96 В (7FFFh); шаг измерения напряжения LSB = 1,25 мВ.

Регистр вычисления текущей мощности I*U (03h) (только для чтения)

Если усреднение включено, в этом регистре отображается усредненное значение текущей мощности.

Регистр мощности регистрирует мощность в Ваттах путем умножения десятичных значений текущего значения тока регистра шунта на десятичное значение регистра напряжения шины.

Регистр тока (04h) (только для чтения)

Если усреднение включено, в этом регистре отображается усредненное значение.
Величина текущего регистра рассчитывается путем умножения десятичного значения регистра напряжения шунта
с десятичным значением регистра калибровки ,с учетом 15 бита знака.

Регистр калибровки (05h) (чтение / запись)

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

Регистр Масок (06h) (Чтение / Запись).

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



Бит 15 (SOL) - превышение напряжения шунта , установка этого бита в 1 настраивает оповешение которое сработает если превышено напряжение шунта, запрограммированное в регистре ограничений на оповещение.

Бит 14 (SUL) - оповещение при напряжении шунта ниже заданного значения в регистре сравнения на оповещение.

Бит 13 (BOL) - оповещение при превышении измеряемого напряжения заданного в регистре сравнения.

Бит 12 (BUL) - оповещение при понижении напряжения ниже заданного значения в регистре сравнения.

Бит 11 (POL) - оповещение при превышение мощности U*I выще заданного значения в регистре сравнения.

Бит 10 (CNVR) - при установке этого бита в 1 на выходе Alert будет выдаваться флаг о том что устроуство готово к следующему циклу преобразования , согласно влагу преобразования ,3 Бит регистра флагов.

Бит 4 (AFF) флаг вывода Alert ,служит для понимания того какое событие выведено на выход Alert , предупреждение или конверсия (более подробно опишу когда разберусь сам)

Бит 3 (CVRF) Флаг готовности преобразования , хотя значения преобразований могут быть прочитаны в любое время , этот флаг используется для чтения однократных или инициированных преобразований ,этот флаг выставляется после любого преобразования или усреднения значений , сбрасывается автоматически после событий -
1.) Запись в регистр конфигурации (за исключением выбора Power Down)
2.) Чтение маски / разрешающего регистра

Бит 2 (OVF) - флаг переполнения математики ,этот бит устанавливается в 1, если арифметическая операция привела к ошибке переполнения ,он показывает, что данные о токе и мощности могут быть неверными.

Бит 1 (APOL) - Бит полярности оповещения на выходе Alert -
1 = Inverted (active-high open collector)
0 = Normal (active-low open collector) (default)

Бит 0 (LEN)
Когда бит Alert Latch Enable установлен в режим Transparent, бит оповещения и бит флага сбрасываются в состояние ожидания, когда ошибка устранена. Когда бит Alert Latch Enable установлен в режим Latch, бит предупреждения и предупреждающий флаг
остается активным после сбоя, пока не будет прочитан Mask / Enable Register.

1 = Latch enabled
0 = Transparent (default)

Регистр сравнения для выдачи предупреждений (07h) (Read/Write)

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

Регистрация идентификатора производителя (FEh) (только для чтения)

Регистр идентификатора производства чипа (FFh)

В регистре идентификаторов хранится уникальный идентификационный номер и идентификатор ревизии для матрицы

DID: Device ID Bits
Bits 4-15 Stores the device identification bits

RID: Die Revision ID Bits
Bit 0-3 Stores the device revision identification bits

Типовая схема включения с подключением V Bus к источнику напряжения на котором измеряется текущий ток.



Продолжение следует

.
Прикрепления: 4233701.png(21.3 Kb) · 0178405.png(23.5 Kb) · 9074937.png(26.7 Kb) · 2148061.png(26.4 Kb) · 4202470.png(30.0 Kb) · 2539979.png(18.1 Kb) · 0008429.png(54.4 Kb)
 
JamyДата: Среда, 25.10.2017, 19:35 | Сообщение # 2
Мастер Йода
Группа: Администраторы
Сообщений: 731
Статус: Offline
Программирование и чтение данных будут в этом втором сообщении, пока выяснил что оригинальный даташит от Texas Instruments имеет немного ошибок , никогда не мог подумать , их снесу отдельно и исправлю в своем переводе

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

Все начинается с конфигурирования регистра 00H
выше я расписал назначение его битов , пример задаем -

Режим работы ,непрерывное преобразование для тока и напряжения биты 2 ,1 , 0 устанавливаем в 1 1 1
Время преобразования напряжения шунта , возьмем 1.1мс , значит биты 5, 4, 3 будут иметь соответственно значение 1 0 0
Время преобразования напряжения VBUS , возьмем 1.1мс , значит биты 8, 7, 6 будут иметь соответственно значение 1 0 0
Усреднение значений , пока не используем , читать будем не усредненные выборки , биты 11 ,10 ,9 будут иметь соответственно значение 0 0 0
Бит 14 по даташиту всегда 1
Бит 15 , Reset - 0 ,то есть датчик программно не сбрасываем

Итог в регистр 00H мы записываем значение конфигурации в битовом представлении оно выглядит так - B0100000100100111 или 4127H шестнадцатеричное.

В коде это примерно так -

Конфигурируем шину I2C на скорость 400кГц

адрес записи INA226 по умолчанию 80H
записываем в регистр 00H значение 4127H

---------------------------------------------------------

Теперь переходим к регистру калибровки.
 
JamyДата: Пятница, 10.11.2017, 00:30 | Сообщение # 3
Мастер Йода
Группа: Администраторы
Сообщений: 731
Статус: Offline

Продолжение будет на новом форуме

Темы на этом форуме закрыты , регистрируйтесь на новом форуме , а если вы зарегистрированный тут пользователь , пишете в личку , дам пароль на новом форуме что бы остался ваш аккаунт.
 
Форум » Общий форум » Источники питания » Разбираемся с цифровым датчиком тока/напряжения INA226
  • Страница 1 из 1
  • 1
Поиск: