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 к источнику напряжения на котором измеряется текущий ток.
Продолжение следует
.
|
|
| |
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
| Продолжение будет на новом форуме
Темы на этом форуме закрыты , регистрируйтесь на новом форуме , а если вы зарегистрированный тут пользователь , пишете в личку , дам пароль на новом форуме что бы остался ваш аккаунт.
|
|
| |