Скопилось какое-то количество 2S аккумуляторов разной емкости, которые требуется подзаряжать в «походных условиях» от 12 вольтовых батарей или USB. Решил сделать зарядник на микроконтроллере, заодно добавив функцию подзарядки телефона от этих же аккумуляторов (с помощью простейшего step-down преобразователя на MP1584EN). Схему пришлось переделывать в процессе, поэтому вид не особо презентабельный получился.

image

Функционально зарядник представляет из себя простейший комбинированный buck-boost конвертер (500 килогерц), с контролем тока зарядки. Всем управляет STM32F030F4P6, замеряя напряжения на батарее, балансном выходе (точка соединения двух ячеек аккумулятора), на входе и зарядный ток, а также генерируя PWM-импульсы для управления ключами. Индикация — простейшая, с помощью двухцветного светодиода.

Схема:

image

> Код для firmware (проект Eclipse+GNU ARM plugin)

В связи с простотой, отсутствует функция балансирования ячеек батареи (только контроль перезаряда), так что периодически придется балансировать батарею на нормальном зарядном устройстве. Также нельзя подключать ко входу одновременно батарею 12 вольт и USB-питание, так как эти входы банально замкнуты (наверное, можно было бы и пару диодов воткнуть в цепь USB-разъема и входа 12 вольт, но сразу как-то не подумал).

Когда подключен источник 12 вольт — работает buck-конвертер на Q1-L1-D5, а когда подано напряжение на USB-разъем — Q1 просто постоянно открыт, а повышением напряжения занимается boost-схема на Q3-L1-D4. Ток измеряется шунтом на R23-R24 (два резистора параллельно нужны, так как один резистор размера 0805 может перегреться).

Выходной преобразователь (для питания USB-устройств) — готовый китайский модуль на MP1584EN, только пришлось подпаяться ко второму пину этого чипа, чтобы иметь возможность выключать его для избегания переразряда.

Первоначально использовал довольно маломощные транзисторы FDV303N/FDV304P в качестве ключевых, но быстро обнаружил, что их сопротивление в открытом состоянии — слишком велико и они периодически даже самостоятельно отпаивались от платы из-за перегрева. Пришлось приобрести и поставить более мощные (IRLML2246 и IRLML6346).

Update: Напечатал примитивный корпус, получилось 132x42x40 — делал приличный запас, чтобы влезали аккумуляторы с длинными концами (на фото, для примера — 2.2 А*ч 35C аккумулятор).




Поделиться с друзьями
-->

Комментарии (29)


  1. vladimir_open-dev
    01.12.2016 18:25

    Все хорошо, но вот батарея будучи подключенной к выключенному ЗУ разрядиться через делитель ОС. За софтварный преобразователь отдельное спасибо. Его КПД мерили?


    1. vasimv
      01.12.2016 18:51

      Можно увеличить резисторы делителя, но тогда придется подбирать точно, из-за импеданса входов ADC. КПД мерять пытался, нечаянно коротнул при этом, выжег один контроллер. Больше не пробовал, для заряда от USB/12V — КПД особо не важен. :)


      1. Alexeyslav
        02.12.2016 07:31

        Делитель можно подключать транзистором только на время измерения.


        1. vasimv
          02.12.2016 11:34

          Ну, из-за 300 микроампер не видел смысла особого возиться. Подозреваю, что микроконтроллер в standby и стабилизатор жрут больше.


  1. latonita
    01.12.2016 20:12

    А нет специализированных микросхем с референсным дизайном для зарядки и балансировки 2S?


    1. vasimv
      01.12.2016 20:51

      Беглый гуглинг показывает, что много. Но, сами понимаете, не так интересно.


      1. nafikovr
        02.12.2016 08:51
        +1

        а можно примеры?


        1. vasimv
          02.12.2016 11:17

          Ну, какой-нибудь LTC1980, наверное. У всех крупных производителей есть много разных чипов для зарядки, выбирайте по вкусу.


          1. nafikovr
            02.12.2016 11:20

            простите, а где у этой мелкосхемы балансировка?


            1. vasimv
              02.12.2016 13:16

              Гхм, лень было читать весь даташит. Может и нет таких… В принципе, у меня там один вывод свободный остался, можно его на светодиод зарутить, а таймерный выход — на транзистор с какой-нибудь нагрузкой, чтобы разряжать одну из ячеек, балансируя.


              1. nafikovr
                02.12.2016 13:19

                вот в том то и дело, что когда я искал (годы тому назад) на 3+ банки вариантов была куча, а на две не нашлось.


    1. Delsian
      02.12.2016 14:10

      Зарядка $2 https://www.aliexpress.com/item/2Cells-Single-Lithium-ion-Battery-Charger-Module-1-2A-PCB-18650-TP5100-for-Iphone/32687213700.html?spm=2114.13010608.0.0.sG164S
      Балансировка чуть дороже, навскидку сейчас нахожу только 3S за 5 баксов.


      1. Delsian
        02.12.2016 14:13

        Хотя нет, на 2 элемента тоже есть:
        https://www.aliexpress.com/item/2S-Balance-Charger-Protection-Board-Satellite-Finder-Power-Supply-18650-Lithium-Battery-8-4V-Short-Circuit/32746810221.html


  1. grey_rat
    02.12.2016 00:30

    Что-то слишком заумно и сложно. Почему так всех тянет использовать микроконтроллеры?
    А как же tl431, lm317? Трансформатор с двумя независимыми обмотками, и по две LM317 (стабилизаторы тока и напряжения) на ячейку аккумулятора.


    1. nafikovr
      02.12.2016 08:52

      Трансформатор с двумя независимыми обмотками от 12В постоянки или USB? разве что импульсный


      1. grey_rat
        02.12.2016 22:02

        Для этой схемы — нет. Но и там где можно от сети заряжать, многие не ищут простых решений, считают КПД зарядного при запитке от розетки и занимаются прочей фигнёй.
        Касаемо этой схемы, в инете есть куча реализованных идей, как сделать двуполярное питание из однополярного. Тем более, что для сборки 2S выкручиваться особо не нужно.
        Тут вообще есть простой вариант: разъединить сборку пополам, допаяв дополнительный проводок, и сделать раздельную зарядку двух аккумуляторов от одного источника. Потом перепаять разъём с трёх на четырёх выводный, а к нагрузке подключать через переходник 4/3. Правда, есть и минус такой схемы, в сильно токовых устройствах (например шуруповёрт) разъём этот может подгореть или расплавится со временем, когда хороший контакт пропадёт.
        image


        1. nafikovr
          02.12.2016 22:08

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


          1. grey_rat
            02.12.2016 22:32

            Смысл в том, что ваша схема повторяема в случае если:
            Человек умеет пользоваться программатором и/или программой на ПК.
            У этого человека есть само устройство для программирования данной микросхемы.
            Человек сможет правильно намотать катушку с нужными микрогенри, на правильном сердечнике.
            То есть, собрать эту схему под силу весьма ограниченному количеству человек.


            1. grey_rat
              02.12.2016 22:44

              Пардон, не ваша схема, обознался )


            1. vasimv
              02.12.2016 23:29

              Дроссели уже давно готовые продаются. Программируется STM32F030 — через обычный последовательный порт (там надо кнопку «Firmware» нажатой держать, когда питание подаем). Базовые навыки нужны, конечно.


    1. Alexeyslav
      02.12.2016 15:07

      И как LM317 заряжать две ячейки от 5 вольт? Одну и то с трудом, хотя нет — близко к невозможному(нужно минимум 6 вольт на входе).
      Схема может и дубовая, но LM317 не обеспечивает требуемую точность поддержания напряжения на ячейке.
      tl431 — может быть, и то только в комнатных условиях, иначе напряжение от температуры на 0.1В уплывёт. А защиты?(хотя ладно, в приведённой схеме нет защиты от перегрева ячеек)


      1. grey_rat
        02.12.2016 22:19

        Если от 5 вольт, то по рисунку выше, и к каждому аккумулятору своя платка зарядки типа такого http://silatoka.net/sxema-zaryadki-li-ion-usb

        но LM317 не обеспечивает требуемую точность поддержания напряжения на ячейке.
        нормально она поддерживает точность. Если её жарить огромными токами — то может быть значения и будут плавать, но всё равно подходя к 4,2 вольт она остынет, и всё с ней будет нормально.


  1. nafikovr
    02.12.2016 08:52

    Сделать бы картинку кликабельной что ли. Ну и вообще схему бы привести если не к ЕСКД, то хотья бы в более читабельный вид


    1. vasimv
      02.12.2016 10:48

      Правой кнопкой -> открыть в новой вкладке.


      1. nafikovr
        02.12.2016 11:20

        это не кликабельность


  1. mrigi
    02.12.2016 15:41

    Все таки жестянщикам есть над чем работать. Напоминает кусок говнокода программиста с goto, без процедур, комментариев и с безымянными переменными где все свалено в одну кучу. Такой код другим людям давать не рекомендуется. А вот в схемотехнике почему-то это в порядке вещей. Подозреваю средства разработки не позволяют.


    1. vasimv
      02.12.2016 16:54

      Эммм, Вы там мой код с кодом автосгенерированным stmcubemx не перепутали? Вроде и комментировал и переменные достаточно понятно называл. :)


      1. mrigi
        02.12.2016 19:22

        Я именно про схему, не про прошивку. Вообще не пойми что куда на вскидку неопытным глазом. Просто куча элементов.
        А насчет простоты — есть подозрение, что раз балансировки все равно нет, то достаточно заряжать просто в режиме CV через step-down. Ведь по идее у него свои ограничители на 2-3А внутри, а это в районе 1С большинства батарей. Имхо, CC тут не шибко и нужен.


        1. vasimv
          02.12.2016 20:07

          В смысле, взять готовый step-down регулятор и его на предельном режиме использовать? А к нему еще и готовый step-up (для USB), чтобы его тоже на максимальной нагрузке? Чего-то Вы очень странное придумали…

          Есть, в принципе, готовые китайские модули step-down с регулируемым ограничением тока. Но тут такая проблема — USB Вам даст неизвестно что, может и меньше 300 мА, с падением напряжения до 3 вольт (слабый девайс, плохой/длинный кабель), а может и ампер с падением всего до 4.5 вольт давать. То есть step-down регулятору нужно еще потом и объяснить — сколько он может нормально взять, без перегрузки повышающего модуля.

          Да, и перезаряд одной из ячеек все же нужно контролировать, даже если баланса нет.