CV-Meter — F042 MiniStick

Продолжение темы про CV-Meter, результаты старых наработок в плане железа и софта, а также снятие логов потребления Wi-Fi модулей на SoC RTL8710AF (модуль RTL-00) и RTL8720DN (модуль BW-16).

Концепт и выбор комплектующих

Основная идея F042 MiniStick состояла в том, чтобы на простой и достаточно легко доставаемой комплектации можно было собрать небольшой свисток, который имел бы следующие характеристики:

  • 1 канал;
  • встроенный регулируемый источник напряжения, питающийся от USB;
  • выходное напряжение должно быть плавно регулируемым или по крайней мере содержать стандартные фиксированные значения (+3,3 В, +2,5 В, +1,8 В, +1,5 В);
  • выходной ток до 1…2 А;
  • возможность измерять отдаваемый ток целевой плате, как в мА, так и в мкА;
  • автоматически или в ручном режиме переключать пределы измерения тока;
  • управляемый IO с согласованием уровней, который можно использовать как сигнал сброса целевой платы или как входной триггер старта логгирования.

На основе данных характеристик были выбраны следующие основные компоненты для платы свистка:

  • STM32F042F6P6 — основа платы, дешевый и простой МК с USB, I2C, даже не требующий внешнего кварцевого резонатора;
  • INA226AIDGS — популярный и легко доставаемый измеритель тока\напряжения на внешнем шунте;
  • EN5311QI — простой DC-DC со встроенной индуктивностью и возможностью выставлять выходное напряжение 3-мя логическими входами, ток до 1 А (ну и это был самый дешевый модуль на момент подбора компонентов в LCSC);
  • DMP26M7UFG-7 — P-MOSFET низковольтный, с малым сопротивлением открытого канала и просто доступный на момент выбора, ничем особенным не выделяется, можно заменить на любой аналогичный (используется для выбора измерительного шунта, сами шунты также были подобраны в LCSC исключительно по низкой цене и малого ppm);
  • SN74AVC1T45DBV — согласователь уровней двунаправленный (направление выбирается входом DIR);
  • MIC5205-3.3YM5 — что было из LDO в наличии, его распиновка позволяет установить много аналогичных LDO.

Схемотехника

В целом, схема максимально простая и минималистичная (кликабельно):

Особенности:

  • Micro-USB (уже, считай, спорно, сейчас бы поставил Type C) с защитой линий данных и минимальной фильтрацией по питанию;
  • DC-DC и LDO с минимально-необходимой обвязкой, VS* входы DC-DC заведены напрямую в МК, а ENABLE сидит на линии Reset (тоже спорное решение, лучше завести на PB8/Boot0 пин, подтянув к земле, я сразу об этом не подумал, т.к. изначально было криво нарисовано УГО МК);
  • INA226 с дополнительной фильтрацией по питанию, фильтром по входу без изысков в обвязке, подключение же шунта более интересно и реализовано с применением 3-х каналов с разными значениями сопротивлений шунтов (0,1 Ом, 1 Ом, 10 Ом), что даёт возможность программно выбирать чувствительность измерителя тока;
  • Двунаправленный согласователь линии с минимальной обвязкой и возможностью подавать внешнее питание или выбирать внутреннее +3,3 В для выходного уровня (не сделано подключение напрямую к выходу измеряемого питания, чтобы не прибавлять потребление самого согласователя к измеряемой нагрузке, пользователь при необходимости может соединить таким образом самостоятельно внешним проводом).

Прототип в сборе

Про разводку вообще нечего сказать, просто рядовая плата. Поэтому покажу сразу фотографии прототипа, который ещё не проверялся:

Итоговый вид, после отладки прошивки и фиксов железной части:

Выше приведена уже подправленная схема же содержит уже эти фиксы, как и печатная плата:

Софт для ПК

Визуально он не поменялся особо:

Добавились только:

  • кнопки включения режима относительных измерений (relative measurement mode) для тока и напряжения;
  • чекбоксы отображения каналов тока и напряжения;
  • отдельное окно настроек выдаваемого напряжения и ограничения тока на каждом канале (если выбранное устройство поддерживает это) с динамическим интерфейсом;
  • небольшие изменения в окне анализатора спектра (появился выбор типа окна, измеряемого канала и отключение нулевой гармоники);
  • возможность переключать отображение времени в мс \ мкс, а также тока в мА \ мкА.
  • небольшие фиксы интерфейса (особенно запоминающийся баг был с синхронизацией двух сеток графиков по временной оси, график тока был чуть более растянут).

Внешний вид анализатора спектра тока:

Внешний вид окна настроек каналов при работе с имитатором CV-Meter:

И его вид при подключении к F042 MiniStick, на котором есть только один выходной канал с фиксированными выходными напряжениями и нет ограничителя тока:

Если внешне изменений мало, то внутренне произошли довольно большие правки, благодаря которым появилось то же окно настроек выходных каналов с динамическим интерфейсом:

  • во время старта ПО теперь проверяет локальную папку Devices, в которой хранятся профили устройств с их PID\VID и возможностями (количество каналов, пределы частоты дискретизации и т. п.), что избавляет от необходимости каждый новый девайс хардкодить в ПО и даёт возможность легко добавлять новые, просто соблюдая протокол работы с ПО;
  • переписаны части вывода значений тока и напряжения, теперь есть возможность отображать замеры более одного канала одновременно;
  • проведена небольшая работа по исправлению кривого анализатора спектра (в первом релизе он для галочки был добавлен, но функционально он был неудобен и неюзабелен, хотя и сейчас ещё куча вопросов есть к текущей реализации);
  • проведены попытки реализации простого протокола, который описывается пользователем и работает поверх обычного COM-порта (написан симулятор UBIA, к которому подключается ПО и из особенностей протокола которого, собственно, и зародилась эта идея), но стабильно рабочей версии пока не получилось + нужно написать простой визард для наглядного составления пользовательского протокола (т. е. чего и в каком формате ПО должно разбирать из COM-порта, а также отправлять туда в виде команд).

Содержание папки Devices:

И пример описания устройства, файл USB_PID2000.xml:

Ну и немного о применении данного стика с Wi-Fi модулями, которые подключаются максимально незатейливо (на примере BW-16), но с одной хитростью:

Линия TX от модуля подключена через полевой транзистор 2n7002 по следующей схеме:

Логика проста как 5 копеек: на время состояния модуля в сбросе (RESET линия в 0) линия LOG_TX от модуля тоже будет находиться в 0, из-за чего USB-UART свисток будет бесконечно пытаться «принять» данные, которых нет; чтобы этого не происходило, достаточно поставить такой вот простой ключ с завязкой на RESET линии (никаких подтяжек не требуется, всё уже есть в модуле и USB-UART свистке).

Примечание: И да, это, думаю, понятно для большинства, но таки оставлю напоминание о том, что такого рода подключения UART для отладки работы модуля стоит полностью отключать, даже GND, если вы планируете анализировать потребление модуля в Sleep режимах и потреблениях на уровне мкА, модуль благополучно может питаться в таких режимах по LOG_RX линии, и логирование потребления уже будет значительно искажено.

Снятие логов потребления модуля RTL-00

Используется стоковая AT-прошивка. Версия прошивки:

# ATSV
[ATSV] OK:v2.2.1,v3.5(2017/02/14-11:54:25)

Старт модуля:

А если посмотреть на старт и первые секунд 14, то можно увидеть, что после 9й секунды потребление модуля значительно снижается (с 55 мА до 18 мА), видимо, АТ-прошивка оставила попытки подключится к сохранённой в ней Wi-Fi сети:

Да, что забавно, модуль вполне нормально стартует на напряжении питания +2.5 В:

Но основное отличие от реальных схем получается в том, что сигнал сброса приходит с чётким фронтом и уже после установившегося напряжения питания, а не плавно-плавно появляется вместе с ним при применении стандартной RC цепи (10 кОм подтяжка к питанию и 0,1 мкФ к общему).

Сканирование на доступные Wi-Fi сети (ATWS):

Подключение к 2,4 ГГц сети (ATPN):

Подключение к UDP серверу на ПК (ATPS):

Да, на скриншотах выше по потреблению хорошо видны сигнальные пакеты (beacon frames) каждые ~100 мс.

Ну и напоследок TCP-сервер в модуле, приём данных от клиента (ATPC):

Все команды описаны в документации на модуль, которую можно глянуть тут — Ameba_Docs/Modules/RTL00_PADI (RTL8710AF).

Снятие логов потребления модуля BW-16

Посмотрим теперь на модуль BW-16 с возможностью подключаться как в 2,4 ГГц, так и в 5 ГГц Wi-Fi диапазонах. Версия прошивки:

# ATSV
[ATSV] OK:v2.4.1,amebaD v6.0a(Aug 14 2019)

Старт модуля:

В целом, такое же потребление, как и у RTL-00, но благодаря BOR (Brown-Out Reset) на борту модуль уже не стартует от питания +2,5 В.

Сканирование доступных сетей (обоих диапазонов, ATWS):

Тут уже можно видеть импульсы иногда с почти в два раза большим током потребления (в сравнении со средним и аналогичным у RTL-00).

Подключение к 2,4 ГГц сети (ATPN) сопровождается импульсами потребления чуть более 270 мА:

Попытка подключения к несуществующей 5 ГГц сети:

Подключение же к 5 ГГц сети (ATPN) сопровождается импульсами потребления за 350 мА (!) при среднем потреблении 55 мА:

Среднее потребление с подключением к 5 ГГц сети и без активного обмена:

TCP-сервер в модуле, приём данных от клиента (ATPC):

Ссылки

  • Ameba_Docs — официальная документация, утилиты от производителя;
  • CV-Meter-Software — репозиторий с ПО для ПК;
  • CV-Meter-Firmware — репозиторий прошивок;
  • CV-Meter-Hardware — репозиторий железа;
  • UBIA — универсальный адаптер I2C/SMBus + ADC/DAC + UART в USB/BLE от pvvx.

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s