Скопилось какое-то количество 2S аккумуляторов разной емкости, которые требуется подзаряжать в «походных условиях» от 12 вольтовых батарей или USB. Решил сделать зарядник на микроконтроллере, заодно добавив функцию подзарядки телефона от этих же аккумуляторов (с помощью простейшего step-down преобразователя на MP1584EN). Схему пришлось переделывать в процессе, поэтому вид не особо презентабельный получился.
Функционально зарядник представляет из себя простейший комбинированный buck-boost конвертер (500 килогерц), с контролем тока зарядки. Всем управляет STM32F030F4P6, замеряя напряжения на батарее, балансном выходе (точка соединения двух ячеек аккумулятора), на входе и зарядный ток, а также генерируя PWM-импульсы для управления ключами. Индикация — простейшая, с помощью двухцветного светодиода.
Схема:
Код для firmware (проект Eclipse+GNU ARM plugin) доступен по ссылке: https://github.com/vasimv/Recharger
В связи с простотой, отсутствует функция балансирования ячеек батареи (только контроль перезаряда), так что периодически придется балансировать батарею на нормальном зарядном устройстве. Также нельзя подключать ко входу одновременно батарею 12 вольт и USB-питание, так как эти входы банально замкнуты (наверное, можно было бы и пару диодов воткнуть в цепь USB-разъема и входа 12 вольт, но сразу как-то не подумал).
Когда подключен источник 12 вольт — работает buck-конвертер на Q1-L1-D5, а когда подано напряжение на USB-разъем — Q1 просто постоянно открыт, а повышением напряжения занимается boost-схема на Q3-L1-D4. Ток измеряется шунтом на R23-R24 (два резистора параллельно нужны, так как один резистор размера 0805 может перегреться).
Выходной преобразователь (для питания USB-устройств) — готовый китайский модуль на MP1584EN, только пришлось подпаяться ко второму пину этого чипа, чтобы иметь возможность выключать его для избегания переразряда.
Первоначально использовал довольно маломощные транзисторы FDV303N/FDV304P в качестве ключевых, но быстро обнаружил, что их сопротивление в открытом состоянии — слишком велико и они периодически даже самостоятельно отпаивались от платы из-за перегрева. Пришлось приобрести и поставить более мощные (IRLML2246 и IRLML6346).
Автор: vasimv