- PVSM.RU - https://www.pvsm.ru -

Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая

В прошлой части статьи о разработке PowerBank для ноутбука [1] мы остановились на изготовленном макете, измеренном КПД и пониманием того, что делать дальше. А дальше нужно было оживлять железку. Поэтому представляю вашему вниманию часть вторую: ПО макета.
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 1

Перерыв между частями получился довольно большим — все силы были брошены на проект быстрозарядного внешнего аккумулятора проект которого сейчас собирает поддержку на boomstarter [2].

Продолжим.
Для того, чтобы понять какие микросхемы нам придется программировать посмотрим на структурную схему макета
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 2
Отсюда видно, что придется писать ПО для управляющего МК (STM32F042), а также конфигурировать систему контроля Li-ion аккумуляторов + зарядное устройство (BQ40Z60). Я начал со второго, потому как считал эту часть наиболее сложной.
Для программирования контроллера BQ40Z60 нам понадобится:
— Адаптер EV2400 и EV2300(готовый [3] или самодельный). У меня с прошлых проектов остался EV2300, поэтому я использовал его.
— Программа Battery Management Studio (bqStudio) [4].
Подключается адаптер по шине SMBus, для подключения я оставил точки подпайки на линиях SMBD и SMBC.(Не самое практичное решение — потом понял, что надо было ставить разъем).
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 3
После танцев с бубном BQ40Z60 определилась в Battery Management Studio. Причиной тому был спящий режим в который входит контроллер при отсутствии подтяжки на шине SMBus и отсутствии обращения к нему. Просыпается он при подключении ЗУ.
Далее займемся непосредственно настройкой чипа BQ40Z60. Сказать, что у него много регистров — ничего не сказать. Настроек миллион. Поскольку конфигурирование — долгий и сложный процесс(для описания нужна отдельная статья) я опишу его вкратце.

После запуска появляется главное окно Battery Management Studio
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 4
Вкладка Data memory содержит большое количество полей в которые мы должны внести параметры батарей и режимы работы контроллера.
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 5
На вкладке Chemistry можно попробовать отыскать готовые калибровки для используемых ячеек.
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 6

Для моих YOKU LP 5558115 3500mAh готовых калибровок не оказалось (кстати калибровки постоянно обновляются [5]). Нашел похожие YOKU LP 656193 4000mAh. Смекнув, что про имеющиеся пакеты я все равно ничего не знаю, выбрал этот профиль.

Затем во вкладке Data memory я настроил:
Calibration: калибровочные значения для вольтметров(ячейки, батареи и внешнего адаптера), сопротивление датчика тока, калибровочные значения для датчика температуры.
Settings: включение защит, терморезисторов, светодиодов, спящего режима, конфигурации батареи.
Protections: настройка порогов защит(напряжение, время, температура), настройка порогов напряжения внешнего адаптера.
Permanent Fail: настройка порогов срабатывания необратимых ошибок(таких при которых дальнейшая работа батареи невозможна).
Advanced Charge Algorithm: настройка зарядного устройства(токи, напряжения для разных диапазонов температуры, признак окончания заряда, балансировка).
Gas Gauging: настройка блока определения уровня заряда(паспортные емкость/напряжение ячеек, сопротивление проводов, статистика).
Power: настройка режимов работы контроллера.
PF Status: состояние статусных бит Permanent Fail защит.
System Data: поля для данных производителя.
SBS Configuration: настройка порогов срабатывания триггера Alarm, основные данные о батарее(серийный номер, дата производства, производитель, имя, химия).
LED Support: настройка режима свечения индикаторных светодиодов.
Black Box: черный ящик (история изменения статусных бит защит).
Lifetimes: статистика батареи.
Ra Table: таблица внутренних сопротивлений ячеек.

В процессе настройки я изменял далеко не все поля, но для старта этого хватило.

С этой частью схемы был только один аппаратный косяк связанный с выводом 21-AFEFUSE микросхемы. Произошло это вот как:
Схему я драл с отладочной платы [6] за исключением микросхемы вторичной защиты и пережигаемого предохранителя. У BQ40Z60 за пережигание предохранителя отвечает 21 вывод AFEFUSE (так я думал). Поэтому я посмотрел 5 страницу даташита BQ40Z60 [7] увидел в таблице
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 7
тип вывода Output и с чистой совестью оставил его болтаться в воздухе. Проблемы пришли после спайки платы: вроде все настройки перебрал (а на тот момент сомнений было очень много), но не работает — не включались зарядный и разрядный транзисторы. После 2х дней сомнений/раздумий/проб и ошибок я заметил, что бит FUSE_EN не установлен и решил «спросить у людей» [8] и когда я запостил вопрос ко мне пришло озарение
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 8
Глядя на схему отладочной платы я предположил, что вывод AFEFUSE может быть также входом, что подтвердилось разделом 9.3.2.4 стр.24, где написано, что если вывод не используется, его нужно соединить с землей. Я это сделал пинцетом и все заработало. Через 5 минут мне ответили на e2e.com — ответ четкий и правильный, я высказал свое «фи» по поводу ошибки в таблице выводов — обещали поправить в следующих версиях документации.
Чтобы поставить точку в настройке контроллера я прогнал 2 обучающих цикла полный заряд/разряд + релаксация (заняло в общем 30 часов).

Теперь перейдем к программированию STM32F042. На этапе макета от этого процессора требовалось совсем не много:
— Управлять преобразователем напряжения, обрабатывать кнопки.
— Уходить как можно глубже в сон, чтоб не разряжать батарею.
— Считывать основные параметры АКБ из контроллера(напряжение, ток, уровень заряда, температура, текущее состояние, количество циклов, время до полного заряда/разряда) и выводить их в ПК через USART (поскольку на плате уже стоял преобразователь CP2102). Хоть процессор и содержит USB на борту, в макете я его не использовал, да и делался макет под 051 МК, но я не смог его купить.

Управление преобразователем сводилось к выставлению двух выводов(включение и режим работы), подачи ШИМ (с последующей RC фильтрацией) на вывод задания частоты преобразования микросхемы LTC3780 (в итоге установил частоту на максимум — 400кГц), и вход мониторинга сигнала PowerGood. Но даже тут я умудрился наступить на грабли. Баг был плавающий и возникал когда Power Bank долго полежит выключенным, выражался в том, что он просто не включался. Проблема заключалась в том, что я сначала включал прерывание на сигнал PowerGood от LTC3780, а затем включал саму микросхему(EN). Получалось, что прерывание срабатывало еще до старта преобразователя и выключало его. Переставил события местами и добавил задержку — проблема исчезла. В остальном этот функционал дался легко.

Было решено сделать пользовательский интерфейс с 1 кнопкой и 5 (6) светодиодами (хотя на плате макета было 2 кнопки и 10 светодиодов). Работает он следующим образом:
Устройство выключено -> кратковременное нажатие (<500 мс) — анимация уровня заряда на 4 светодиодах.
Устройство выключено -> долговременное нажатие (>500 мс) — включение устройства (загорается 5ый светодиод).
Устройство выключено -> подключение ЗУ -> анимация уровня заряда на 4 светодиодах до окончания процесса заряда.
Устройство включено -> кратковременное нажатие — анимация уровня заряда на 4 светодиодах.
Устройство включено -> долговременное нажатие — выключение устройства.
Устройство выключено -> ток потребления меньше 50 мА более 3 мин. — выключение устройства.
Это позволило убрать из устройства 27 элементов.

Опыт реализации спящих режимов на STM32F0xx у меня уже был, поэтому на большие грабли я тут не рассчитывал. Для оптимизации потребления я первым делом заменил LDO 3,3В на mcp1703 с малым током собственного потребления (нужно было не драть с отладки, а сразу ставить его). Размер, цена, потребление, обвес — все меньше, чем у LP2951.
-Когда устройство выключено, МК находится в режиме STANDBY и реагирует только на нажатие кнопки или подключение ЗУ. Потребление в таком режиме составляет 108 мкА (100 из них потребляет BQ40Z60).
-При включенном устройстве процессор большинство времени (кроме моментов индикации и опроса BQ40Z60) находится в режиме STOP с потреблением 1,5 мА (1 мА это светодиод). В моменты опроса и индикации ток потребления колеблется от 4,5 до 9 мА.
-При подключенном USB МК в режиме RUN на 48 Мгц, потребление 15 мА. В будущем сделаю питание МК в этом режиме от USB.

Самой большой потенциальной проблемой был опрос BQ40Z60. С SMBus я не работал и до последнего надеялся, что SMBus это I2C 1в1(частично это так, ведь физический уровень у них одинаков), но оказалось, что канальный уровень сильно разнится и это порождало ряд трудностей. Здесь описывать отличия SMBus от I2C я не буду, а приведу ссылку на довольно грамотную статью [9]. На этапе макета я не стал ввязываться в борьбу с SMBus (к слову как программист я на много слабее, чем как схемотехник) и поскольку команды отправки и приёма байта в SMBus и I2C совпадали полностью, я использовал только их. В итоге из BQ40Z60 я считывал SOC, SOH, Current, CellVolt, TimeToFull, TimeToEmpty. В зависимости от значений регистров изменялся режим работы(выдавались предупреждения, любо происходило выключение).

Ну и на стороне ПК конечно была необходима программа, способная отображать считанные с АКБ данные в удобном виде. Поскольку графические интерфейсы я мог только в Borland C++ Builder и делал это очень давно, то я попросил программиста набросать для меня простенькую отладку. Для макета на скорую руку получилось следующее:
Разработка power bank для ноутбука. От макета к готовому изделию. Часть вторая - 9

Это все работы, которые были проведены на стадии макета. Далее в планах(а поскольку я описываю уже проведенные операции, то часть работ уже сделана) передача ТЗ конструктору для разработки/изготовления корпуса PowerBank, исправление ошибок/доработка схемы, переделка платы под корпус, доработка ПО. После этого устройство будет похожим на товар и, после доведения, станет товаром в прямом смысле этого слова. В следующих частях статьи мы рассмотрим этапы и основные сложности процесса перехода от макета к готовому изделию, работу по корпусированию, рассмотрим стоимости различных решений и операций, оптимизацию, а также увидим конечный результат.

Автор: vladimir_open-dev

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gadzhety/119491

Ссылки в тексте:

[1] разработке PowerBank для ноутбука: http://geektimes.ru/post/265164/

[2] boomstarter: https://boomstarter.ru/projects/474561/baton

[3] готовый: http://www.ti.com/tool/EV2300?keyMatch=EV2300&tisearch=Search-EN-Everything

[4] Battery Management Studio (bqStudio): http://www.ti.com/tool/bqstudio

[5] обновляются: http://www.ti.com/tool/gasgaugechem-sw

[6] отладочной платы: http://www.ti.com/tool/bq40z60evm-578

[7] даташита BQ40Z60: http://www.ti.com/lit/ds/symlink/bq40z60.pdf

[8] «спросить у людей»: http://e2e.ti.com/support/power_management/battery_management/f/180/p/435954/1561044

[9] статью: http://www.scanti.ru/bulleten.php?p=14&v=111

[10] Источник: https://geektimes.ru/post/266210/