Изначально я хотел написать небольшую статью про разработку PowerBank, но когда начал — понял, что одной частью не обойтись. Поэтому я разбил ее на 4 части и сейчас предлагаю вашему вниманию первую из них: макет (схемотехника).
Очевидно, что разработка любого электронного устройства начинается с технического задания (ТЗ), поэтому я обозначил для себя ряд параметров, которые мой PowerBank должен обеспечить:
- входное напряжение 19В (для возможности зарядки от стандартного ЗУ ноутбука)
- выходное напряжение 19В (как и у стандартного ЗУ)
- максимальный выходной ток 3,5А (как и у стандартного ЗУ)
- емкость ячеек не менее 60Вт*ч (+1 внутренняя АКБ)
Помимо основных требований я добавил еще несколько:
- КПД преобразователя и ЗУ не ниже 94% — чтобы обойтись без радиаторов.
- Частота преобразователя не ниже 300кГц — чтобы уменьшить размер самого преобразователя.
- USB порт для просмотра основных сведений о PowerBank таких как уровень заряда, здоровье, количество пройденных циклов, температура, ток и напряжение ячеек АКБ и т.д.
- Софт на ПК(Windows) для просмотра основных сведений о PowerBank.
- Возможность менять выходное напряжение, либо присутствие дополнительного выхода 5В для зарядки USB устройств.
- Светодиодная индикация уровня заряда и состояния PowerBank.
- Кнопка(Кнопки) для включения PowerBank и просмотра уровня заряда.
Для начала разработки я сделал структурную схему будущего устройства:
Комментируя схему, могу сказать, что управляющий МК я мог бы взять с USB, но побоялся трудностей разработки ПО для USB (в последствие понял, что зря) поэтому поставил преобразователь USART — USB.
Поскольку устройство изначально разрабатывалось для себя, то было решено делать макет преимущественно из тех деталей, которые были у меня в наличии и с которыми я уже работал (чтобы избежать подводных камней). При этом оптимизация по цене на этом этапе не проводилась. Поэтому я выбрал следующие комплектующие для PowerBank:
- МК — STM32F051K4U6 с прицелом заменить на STM32F042K4U6.
- Преобразователь USART<->USB — CP2102. Стоит не дорого, работает нормально, места занимает мало, обкатанное решение.
- Импульсный преобразователь напряжения — LTC3780IG. Далеко не самый дешевый/оптимальный вариант, но повышающе-понижающий, может 400кГц, имеет внешние ключи, обкатанное решение. В перспективе замена на LM5175 от TI или применения синхронного повышающего преобразователя.
- Линейный стабилизатор — LP2951ACD-3.3. Он был в наличии, не лучший вариант. Ток собственного потребления до 120мкА с прицелом заменить на MCP1703T-3302E/CB с током собственного потребления до 5мкА.
- Светодиоды зеленые и красные размером 0805.
- Кнопки обычные тактовые SMD.
Отдельно коснемся выбора зарядного устройства (ЗУ) и системы контроля и управления Li-ion аккумуляторами (Li-ion Battery Management System или BMS). Несколько лет назад я занимался ремонтом ноутбуков и в батареях частенько видел BMS от Texas Instruments. Поэтому в первую очередь я стал искать решение для своего устройства именно от этого производителя. Стоит отметить, что в общем-то альтернативы и нет поскольку производит подобные микросхемы лишь несколько контор (TI, Maxim, немного LT, ST-забросили, Intersil-экзотика для нас, может есть еще, но я не знаю). Так вот бродя по просторам сайта ti.com я наткнулся на очень интересную микросхему BQ40Z60RHBR это ЗУ и BMS в одной микросхеме. Она мне очень понравилась потому как заменяла собой 2 микросхемы. Такое решение явно дешевле, чем если делать отдельно ЗУ и BMS и места меньше занимает. Основные ТТХ микросхемы BQ40Z60:
- Ток заряда: до 4А
- Количество ячеек: до 4х
- Частота преобразования: 1МГц
- Входное напряжение: до 25В
- Емкость ячеек: до 65А*ч
- Функция балансировки
- Конфигурируемые светодиоды для индикации (заряд, емкость)
Микросхема достаточно новая (выпуск конца 2014 года), поэтому информации по ней мало и я немного переживал из-за этого зная, что BMS от TI достаточно сложны в программировании, а это еще и комбо (ЗУ + BMS). Также немного переживал из-за возможных косяках в кристалле, но зная, что буду использовать лишь базовый функционал надеялся, что никаких проблем не будет. Впрочем забегая вперед скажу, что так и вышло.
Кстати я не зря до этого не говорил практически ничего про ячейки и конфигурацию АКБ, только сейчас настал момент перейти к выбору. Для оптимального выбора конфигурации АКБ есть несколько критериев:
- Для уменьшения потерь на проводах нужно минимизировать токи между узлами устройства. С учетом этого батарея из 4х последовательно соединенных ячеек (общепринятое обозначение 4s1p или 4-serial 1-parallel) выгоднее, чем 4 параллельные ячейки (1s4p) см. рисунок.
- Поскольку ток заряда ограничен, то для того, чтобы повысить мощность (и скорость) заряда АКБ мы должны увеличивать напряжение. Этот критерий тоже за конфигурацию 4s1p.
- КПД преобразователя падает при росте разницы между входным и выходным напряжением. Вот график из документации на преобразователь MP2307DN.
С учетом того, что выходное напряжение устройства 19В опять же наиболее выгодной является конфигурация 4s1p.
Теперь рассчитаем некоторые параметры АКБ при условии емкости 60Вт*ч, конфигурации 4s1p (напряжение 14,8В):
Полученная цифра показалась мне слишком маленькой (ну или аппетит пришел во время еды) и я решил перейти к конфигурации 4s2p на ячейках LP 5558115 3500mAh, которые были в наличие. Итого мы имеем:
Емкость АКБ: 7А*ч (103Вт*ч)
Напряжение: 14,8В
Такой результат меня вполне устроил — это было больше, чем две внутренние батареи моего ноутбука (ASUS S451L, 46Вт*ч). Началась разработка макета…
На этапе макета я хотел заложить несколько дополнительных возможностей:
- подключил светодиоды BQ40Z60. У них есть функционал индикации уровня заряда с настраиваемыми порогами, а также процесса зарядки.
- добавил возможность регулировать частоту/режим работы (разрывных или неразрывных токов) преобразователя (с помощью ШИМ МК + RC-фильтр).
Схему обвязки BQ40Z60 срисовал с отладочной платы BQ40Z60EVM-578, обвязка LTC3780IG из ее документации, все остальное делал сам. В итоге получилась следующая схема.
Схема разбита на 3 блока:
- Блок преобразователя напряжения
- Блок ЗУ+BMS
- Блок управления на МК
Комментарии к схеме: блок преобразователя и ЗУ+BMS сделаны по схемам из документации [1],[2], блок управления делался из расчета реализовать спящий режим для минимального тока потребления в выключенном режиме. Забегая вперед скажу, что в паре моментов я таки накосячил, но с помощью ножа и паяльника смог заставить макет работать как надо. Полученная плата показана ниже:
Плата содержит 4 слоя по 18мкм, общая толщина 1мм, заказывал на seeedstudio.com.
Теперь пришло время коснуться главного показателя качества железа — это КПД всей системы в целом. Точнее у нас 2 КПД: при зарядке АКБ и при разряде. Строго говоря КПД при заряде стоит оптимизировать только для уменьшения нагрева устройства(рассчитывая, что энергии для заряда у нас много), в то время как потеря КПД при разряде фактически уменьшает реальную емкость PowerBank. Составим перечень элементов непосредственно влияющих на КПД при заряде:
ACFET — транзистор предотвращающий появление напряжения на разъеме внешнего питания при работе PowerBank от АКБ.
HighSideFET — верхний транзистор понижающего преобразователя ЗУ.
LowSideFET — нижний транзистор понижающего преобразователя ЗУ.
BuckInductor — дроссель понижающего преобразователя ЗУ.
CHGRCS — резистор датчика тока ЗУ.
CHGFET — зарядный транзистор АКБ.
DSGFET — разрядный транзистор АКБ.
CellCS — резистор датчика тока АКБ.
Транзисторы ACFET, CHGFET и DSGFET при работе имеют только статические потери поскольку они постоянно открыты и представляют собой резисторы с сопротивлением равным сопротивлению открытого канала транзистора Rds_on, поэтому эти транзисторы должны иметь как можно меньший Rds_on. Корпуса транзисторов я выбрал pqfn3.3x3.3 как подходящие по мощности и имеющие меньший размер по сравнению с моими любимыми pqfn5x6. С наименьшим сопротивлением канала из легкодоступных были IRFHM830D (Rds_on = 5мОм + диод Шоттки).
Транзисторы HighSideFET и LowSideFET работают в импульсном режиме, их выбор сложен и будет рассмотрен позже.
Попробуем оценить потери при входном напряжении 19В, токе заряда АКБ 4А, конфигурации 4s1p:
CellCS — ток через него равен току заряда, сопротивление 5мОм, потери:
CHGRCS — ток через него равен току заряда, сопротивление 10мОм, потери:
CHGFET и DSGFET — ток через них равен току заряда, сопротивление 5мОм, суммарные потери:
ACFET — ток через него равен входному току(возьмем максимально возможный ток входа 3,5А это максимум того, что может выдать штатное ЗУ ноутбука), сопротивление 5мОм, потери:
Сюда же можно прибавить потери на сопротивлении проводов ячейки-плата, а также дорожек самой платы. Я вычислил их путем измерения падения напряжения при токе в цепи АКБ равном 4А, оно составило 36мВ, что соответствует мощности:
BuckInductor — потери в дросселе можно разделить на 2 составляющие:
- потери на активном сопротивлении обмотки (DCR — dc winding resistance). Для выбранного дросселя IHLP2525CZER2R2M01 типовое значение DCR = 18мОм, что при среднем токе 4А даст потери:
- потери в сердечнике достаточно тяжело посчитать имея только данные из документации, поэтому верим заверениям Vishay что их материалы супер крутые, к тому же пульсации тока у нас в районе 20%, поэтому принимаем потери в сердечнике нулевыми.
Итого суммарные потери при заряде на статических компонентах составляют:
Для того, чтобы получить суммарные потери при заряде необходимо оценить потери на транзисторах HighSideFET и LowSideFET. В этом мне помогал апнот AN-6005 от fairchildsemi. Если кратко, то на вкладке ControllerDriver добавляем в базу наш контроллер и вписываем требуемые параметры в таблицу:
Данные берем из документации на BQ40Z60. Далее заполняем таблицу с параметрами транзисторов HighSideFET и LowSideFET на вкладке MOSFETDatabase:
Данные также берем из документации на транзисторы. Я экспериментировал со многими транзисторами(видно по базе) потому как частота преобразования в 1МГц это довольно высоко. Из всех транзисторов, которые я мог быстро достать самыми лучшими оказались CSD17308 от TI. Впрочем это как раз рекомендованные транзисторы с кита BQ40Z60EVM. Самыми лучшими по расчетам оказались eGaN транзисторы от EPC (Efficient Power Conversion), но цена 500р, месяц ожидания и специфический корпус сыграли против него. Еще пара комментариев вкладки MOSFETDatabase:
Правый столбец — Fig.Merit (Figure of merit — показатель качества) это произведение Rds_on на заряд затвора Qgsw. В общем чем ниже Fig.Merit, тем лучше транзистор, но нужно понимать, что это довольно эмпирический показатель.
На вкладке EfficiencySummary выбираем контроллер, используемые транзисторы и их количество, задаем параметры источника и нажимаем кнопку Run.
Для тока заряда 4А и входного напряжения 19В потери составят 1,17Вт. Общие потери:
После сборки макета я измерил схемы заряда при параметрах таких же как при оценочных расчетах:
КПД схемы 97,1%, при этом мощность потерь составила 1,908Вт при расчетных 2,07Вт. Что ж очень близко получилось прикинуть потери. Термограмма работающего устройства показана на рисунке.
Окружающая температура 23 градуса, плата без корпуса. 58 градусов в самой горячей точке (перегрев получается 58-23=35 градусов) при фольге в 18мкм это очень хороший показатель. Дроссель при этом нагрелся до 40 — скорее всего его подогревают транзисторы. Сам контроллер разогрелся до 52 градусов.
Теперь перейдем к оценке КПД системы при разряде. C начала оценим потери в самом преобразователе. Для этого составим перечень элементов непосредственно влияющих на КПД:
A — верхний транзистор понижающего плеча преобразователя LTC3780.
B — нижний транзистор понижающего плеча.
C — нижний транзистор повышающего плеча.
D — верхний транзистор повышающего плеча.
L — дроссель.
RS — резистор датчика тока.
И конечно потребление самого контроллера LTC3780. Подробно не буду останавливаться на работе микросхемы, скажу только, что она фактически представляет собой понижающий преобразователь стоящий после повышающего с общим дросселем. В зависимости от входного и выходного напряжений работает либо одна часть, либо вторая, либо обе(при примерном равенстве входного и выходного напряжений).
Для расчета КПД преобразователя будем использовать следующие параметры:
Условимся, что ноутбук потребляет всегда по максимуму. В реальности это близко к истине, поскольку при подключении внешнего источника он помимо энергии на работу потребляет еще и энергию на заряд внутренней АКБ, да и вообще при наличии внешнего питания в потреблении себе не отказывает. Напряжения соответствуют номинальному напряжению ячеек — 3,7В и пониженному — 3,3В. Важно отметить, что преобразователь в текущем устройстве всегда работает в повышающем режиме (входное напряжение никогда не превосходит выходного), однако это не значит, что транзисторы A и B не переключаются. Для зарядки конденсатора вольтдобавки(bootstrap) необходимо кратковременно выключать транзистор A и включать B(тоже самое будет происходить при работе в понижающем режиме для транзисторов С и D). У LTC3780 это происходит с частотой 40кГц.
Для оценки потерь воспользуемся xls файлом для LTC3780 из пакета LTpowerCAD2. Принцип работы похож на предыдущую работу с xls для BQ40Z60. Вводим все значения выходных напряжения и тока, входного напряжения, желаемую частоту преобразования, параметры ключевых транзисторов(я решил использовать CSD17308 как и в ЗУ). Дроссель был выбран IHLP5050EZER3R3M01 у которого типовое DCR = 7,7мОм. Для 3,5А индуктивность маловата, так случилось потому, что при закупке комплектующих я рассчитывал на выходной ток 4,5А. Для текущей конфигурации идеальным вариантом будет IHLP5050EZER4R7M01 с типовым DCR = 12,8мОм. Датчик тока — резистор типоразмера 2512 сопротивлением 5мОм.
После введения всех данных в полях MOSFETs Power Loss Break Down и Estimated Efficiency будут круговые диаграммы распределения потерь по компонентам и оценка КПД для указанного входного/выходного напряжений и тока нагрузки.
Оценка КПД очень оптимистичная — 98,79% при входном напряжении 14,8В и 98,51% при 13,2В (цифры без учета потерь в сердечнике дросселя). Основные элементы на которых происходят потери это дроссель/датчик тока(23%), транзистор A(25%) и D(38% от общих потерь).
Пришло время измерить реальный КПД.
Измеренный КПД — 96,93% при входном напряжении 14,8В и 96,35% при 13,2В. Проведем анализ полученных данных. Для этого переведем проценты КПД в мощность потерь:
В данном случае расхождения более существенны по сравнению с оценкой потерь в преобразователе ЗУ и составляют до 1,48Вт. Но если учитывать потери в сердечнике дросселя (которыми при не оптимально выбранной индуктивности нельзя пренебречь) картина не будет уже столь удручающей.
Оценим средний(при напряжении 13,2В) КПД PowerBank при разряде. Он складывается из КПД самого преобразователя, а также:
CellCS — ток через него равен входному току преобразователя, сопротивление 5мОм, потери:
CHGFET и DSGFET — ток через них равен входному току преобразователя, сопротивление 5мОм, суммарные потери:
Тогда КПД PowerBank при разряде:
Термограмма преобразователя при входном напряжении 14,4В и выходном токе 3,5А показана ниже:
Самой горячей точкой оказался транзистор С, но его нагрев (при окружающей 21 градус) составил всего 41,1 градус после 30 минут работы. Понятно, что в корпусе эти цифры будут выше, но запас по перегреву огромный.
И в заключение первой части статьи хочется сказать, что работа была проделана очень большая, а во второй части статьи нас ждет разбор аппаратных и программных грабель при запуске макета, конфигурирование BQ40Z60 и ПО для STM32F0. Надеюсь было интересно.
P.S.: Архив с проектом платы и исходники будут выложены в следующих частях статьи.
P.P.S. заметил, что забыл почти самое важное для этой части статьи — фото макета. Исправляю
На плате можно видеть следы исправлений, а также следы ношения в открытом виде в рюкзаке(сгоревшие дорожки в районе подключения АКБ). Макет конечно не самый элегантный, но даже в таком виде его можно использовать.
Комментарии (29)
Firz
03.11.2015 13:31«USB порт для просмотра основных сведений о PowerBank таких как уровень заряда, здоровье, количество пройденных циклов, температура, ток и напряжение ячеек АКБ и т.д.
Софт на ПК(Windows) для просмотра основных сведений о PowerBank.»
Раз есть такой функционал, я бы сразу добавил устройству какой-нибудь OLED или E-Ink дисплей(или и тот и тот, например маленький E-Ink для отображения текущего уровня заряда и OLED для отображения всего остального). (Что-то вроде http://www.atomikrc.com/products/dji-phantom-2-vision-3s-5500mah-11-1v-rc-lipo-battery-w-lcd-display-by-venom — очень хорошая иллюстрация того, что я описывал(нашел в момент написания комментария, сам приятно удивился))
p.s. Сам уже не первый год хочу сделать под себя PowerBank для ноутбука, «такой как надо, а не как всякая фигня на рынке» (с)vladimir_open-dev
03.11.2015 13:36Этот вопрос пока для меня открыт… с одной стороны пользователю при нормальном использовании кроме степени заряженности знать ничего не нужно, а если хочется, то можно подцепить к ПК и посмотреть здоровье, и тд. Но сейчас я могу без боли добавить и дисплей (если найду за нормальную стоимость).
Firz
03.11.2015 18:12+2Если под «если найду за нормальную стоимость» не имеете в виду оптом для массового производства, то одноцветный белый OLED диагональю 0.96" и разрешением 128х64 можно с Ali с доставкой за 6$ заказать. По мне, учитывая доставку и поштучную продажу, не такая высокая цена за разовую потребность.
ToSHiC
03.11.2015 14:011. Если бы использовали USB контроллера, то можно было бы реализовать стандартный HID класс для ИБП, который уже могут понимать встроенные в ОС утилиты. Ну и своя, конечно же, тоже могла бы с ним работать.
2. Почему вы рассчитывали напряжение банки 3.7В, если оно при полностью заряженной банке аж 4.2В, при разряде быстренько падает до 3.9 и потом медленно скатывается до 3.7, ближе к концу ёмкости?vladimir_open-dev
03.11.2015 14:121. На МК с USB я перейду позже, я писал в статье почему так не сделал сразу.
2. Для низких токов (<C/2) может это и справедливо, но в других случаях разрядная кривая li-ion выглядит так:
ToSHiC
03.11.2015 14:17+1У вас ток разряда 0.5С, правильно? Получается, чёрная кривая, и больше 4 вольт только первые 5%. Так понятнее, спасибо.
Firz
03.11.2015 16:223.7 Вольт это рабочее напряжение LiPo аккумулятора, т.е. это как раз то напряжение, умножив которое на заряд(А*ч) Вы и получите емкость аккумулятора(Вт*ч).
Грубо говоря, это «усредненное» напряжение работы аккумулятора, т.е., в плане расчета емкости, стандартный LiPo аккумулятор с напряжением 4.2 В(полностью заряжен) — 3 В(полностью разряжен) можно рассматривать как аккумулятор с постоянным напряжением в 3.7 В.
К примеру, для обычных свинцовых аккумуляторов из 6 ячеек напряжение колеблется между 10.8 В(полностью разряжен) и 12.7-12.9(полностью заряжен), а рабочее(«усредненное») напряжение считается 12 Вольт.
immaculate
03.11.2015 14:21Не в качестве критики вашего устройства, а информации ради. Одна из причин, по которой купил ноутбук Lenovo T440s — две батареи. Одна встроенная, другая сменная. Можно купить дополнительную батарею и менять на лету благодаря встроенной. Докупил самую емкую из возможных батарей для него, и теперь могу работать весь день. Точное время не замерял, но оно превышает время, которое я могу провести в день за ноутбуком (около 9-10 часов, возможно даже 11-12).
kumbr_87
03.11.2015 15:33А на какой конфигурации батареи остановились? В статье фигурирует 4s1p и 4s2p, если 4s2p то почему не 8s1p ведь тогда токи будут еще меньше тем более что вам в любом случае необходимо делать преобразование напряжения стандартной ноутбучной зарядки.
Сам вижу в качестве ответа на мой вопрос — необходимость переделки зарядки с понижения на повышение напряжения, и в то же время переделка разряда с повышения на понижение, т. е. весь повербанк будет устроен по другому ну и конечно при бОльшем количестве банок просадка по мере использования была бы с 33.6 до 28 что довольно много и рассчитать аппаратную часть чтобы при этом сохранялся достойный КПД было бы сложнее.
В любом случае интересно ваше мнение.vladimir_open-dev
03.11.2015 15:57Ваше мнение практически совпадает с моим, только добавлю, что при увеличении количества последовательно соединенных ячеек начинает острее вставать проблема балансировки + время жизни батареи уменьшается(из-за разбаланса), к тому же номенклатура микросхем BMS для >4s ячеек существенно уже. Да и logic-level транзисторы на 60В уже труднодоставабельные.
P.S. Изначально я хотел 4s1p поэтому 8s1p даже на начальном этапе не рассматривал — 4s2p была скорее бонусом, чем целью.
MrFrizzy
03.11.2015 18:10+1Коллега притащил из командировки такой девайс.
У вас разработка интересная, но можете почерпнуть идей у коллег из Китая
mikkal
03.11.2015 18:17Так-с, теперь печатку в студию, беру утюг и пару вечеров меня не отвлекать!
isden
03.11.2015 18:27+2> Плата содержит 4 слоя
Осилите утюгом? :)Halt
03.11.2015 18:39Плата 5-го класса точности, не говоря уже о переходных отверстиях. Утюгом точно не выйдет. Если отверстия были бы 0.8 и 50 мкм резист, то я бы на коленке металлизировал, но оно того не стоит :)
mikkal
03.11.2015 19:06В этом случае ЛУТовая технология явно требует обновления. А что, если 2 двухсторонних платы сделать, а опосля склеить?
«Чуть-чуть» упростить разводку платы, и, с утюгом, в бой!
vladimir_open-dev
03.11.2015 18:38+2Все будет… и печатка и софт, но чуть позже. И как правильно заметил isden 4 слоя утюгом не сделать.
hostadmin
Странно, что вы не поставили в ТЗ возможность зарядки и от 12V. Было бы гораздо удобнее (в машине, например зарядить).
vladimir_open-dev
Хорошее замечание, но есть немного очевидных и не очень моментов, которые сильно изменили бы само устройство:
1) пришлось бы ставить защиту входных цепей питания по ГОСТ 28751-90. Электрооборудование автомобилей. Электромагнитная совместимость. Кондуктивные помехи по цепям питания. Требования и методы испытаний. Это добавило бы довольно большой блок -> увеличило бы размер/стоимость, либо можно этот блок разместить в корпусе разъема прикуривателя.
2) пришлось бы перейти к конфигурации батареи 2s4p что увеличило бы время зарядки и уменьшило КПД.
3) требовалось бы иметь проводок-переходник для прикуривателя.
wrewolf
Для автовладельцем нужен модуль 12VDC >> 19VDC
vladimir_open-dev
Кстати, хороший вариант. Во всяком случае за свою инженерную карьеру я понял, что делать устройство совместимое со всем на свете это утопичный путь.
wrewolf
Поддерживаю, А сам адаптер можно использовать и как БП для ноута без банки, так и для заряда самой банки. Тут и функциональность более широкая