Девайсы
Софт
Статьи
Контакты

 


Зарядное устройство на базе STM32

обновлено 27.06.2023 в связи с доработкой ПО и прошивки

Устройство предназначено для зарядки и тестирования аккумуляторов напряжением до 12В при токе до 2А.

    Функции устройства:
  • режимы с ручным регулированием тока зарядки и разрядки;
  • настраиваемые автоматические режимы CC/CV зарядки и разрядки;
  • настраиваемые отсечки по току, напряжению, температуре, заряду (А*ч), энергии (Вт*ч) и времени заряда/разряда;
  • связь с ПК по UART (мориторинг переменных, запись/просмотр логов, чтение/запись констант, управление).

Внешний вид зарядного устройства Интерфейс зарядного устройства

Рисунок 1 - внешний вид и описание интерфейса

Схема зарядного устройства

Рисунок 2 - Схема зарядного устройства

Описание схемы

Устройство питается от внешнего источника 12-15В постоянного тока. Управляет всем контроллер STM32F103C8T6, разведенный на плате "Blue pill". Цепь зарядки реализована buck-конвертером VT1-VD1-L1-C15..C18. Ключ VT1 управляется ШИМ на частоте 34кГц от контроллера по каналу PA8. Транзистор VT1 (IRF5305: Vds=-55В; Id=-31А; Rds_on=60мОм) работает без радиатора с ограничением допустимого длительного тока. Если без радиатора допустить выделение мощности в 1Вт, учитывая только потери проводимости на Rds_on (P = I2R), то допустимый среднеквадратичный ток для VT1 ограничится до 4,1А. При зарядке также нагреваются резисторы шунта R17-R18, допустимый ток для них составляет 2,8А, который ограничивается их допустимой мощностью рассеивания 2х2Вт.
Емкости фильтров на входе и выходе намеренно распределены на батареи из нескольких конденсаторов вместо одного большого по меньшей ESR первого варианта. Но, у электролитов всё ещё относительно большие ESR/ESL, поэтому параллельно им добавлены керамические SMD-конденсаторы.
Индуктивность дросселя L1 рассчитана по формуле:

Формула расчета индуктивности дросселя

где Vout - выходное напряжение, В;
Vin - входное напряжение, В;
k - коэффициент допустимых пульсаций тока в дросселе;
Iout - выходной ток, А;
f - частота работы ШИМ, Гц.

С учетом того, что выходное напряжение должно регулироваться в широких пределах, ниже задаются условия и приводится расчет индуктивности (в MathCad):
Vin = 15В; Iout = 3А; k = 0,1; f = 34000Гц; Vout - переменная, от 0 до 12В.

Расчет расчета индуктивности дросселя

Для всего диапазона регулирования выходного напряжения наибольшая величина требуемой индуктивности составляет 368 мкГн. Дроссель намотан на кольце 25x15x10 из порошкового железа проводом МГТФ-0,5 - 57 витков, его индуктивность составляет 380 мкГн. Если использовать другой материал, с другой магнитной проницаемостью, то для получения заданной величины индуктивности может потребоваться другое число витков. Кроме того должно выполняться условие исключения насыщения:

Условие подбора сердечника по индукции насыщения

где L - индуктивность дросселя, Гн;
imax - амплитуда тока через дроссель, А;
N - число витков, шт.;
A - площадь поперечного сечения магнитопровода, м2;
Bmax - допустимая магнитная индукция, Тл. Принимается равной (0,7..0,8)*Bs, где Bs - индукция насыщения материала.

Из формулы следует, что подходят сердечники с высокой индукцией насыщения и низким соотношением L / N2 (т.е. с низкой магнитной проницаемостью или с зазором). Для данного устройства в результате экспериментов с разными сердечниками (в том числе c ферритами N87 разных размеров) из имеющихся был выбран сердечник из порошкового железа от одного из дросселей компьютерного БП. Есть также специализированные материалы типа Kool Mμ®, XFlux®, Amoflux® и другие. При нормальной работе преобразователя, амплитуда колебаний тока в нагрузке будет минимальна. Если же имеет место насыщение дросселя, то в нем (и в нагрузке) будут иметь место нелинейно нарастающие пики тока в фазе открытия ключа. На рисунке 3 приведены осциллограммы тока нагрузки и напряжения на измерительном витке дросселя (один виток, продетый через сердечник) в режимах без насыщения и с насыщением в одном масштабе. На рисунке 4 сравниваются модели с сердечниками на порошковом железе и на феррите N87.

Осциллограмма тока нагрузки без насыщения дросселя   Осциллограмма тока нагрузки с насыщением дросселя

Рисунок 3 - Форма напряжения на измерительном витке дросселя L1 (CH1) и тока нагрузки (CH2) в нормальном режиме (слева) и с насыщением дросселя (справа)

Сравнение моделей buck-конвертера с дросселями на сердечниках из разного материала

Рисунок 4 - Сравнение моделей buck-конвертера с дросселями на сердечниках из разного материала

Разрядная цепь включает в себя нагрузочный резистор R15+R16 и ключ VT2, который управляется ШИМ-сигналом по каналу PA9. Максимальный ток транзистора VT2 (для IRF530 Id=16А), так же как и для VT1, ограничен мощностью рассеяния тепла без радиатора. Если допустить на транзисторе без радиатора потери проводимости в 1Вт, без учета динамических потерь, то допустимый среднеквадратичный ток для VT2 с Rds_on=0,16Ом составит 2,5А. Для нагрузочных и шунтовых резисторов ток ограничивается их максимальной мощностью рассеяния и в режиме разрядки составит 2,8А.

С учетом вышесказанного, в длительных режимах не рекомендуется превышать токи:
2,8А - при зарядке;
2,5А - при разрядке.

Интерфейс пользователя

При подаче питания отображается заставка, после пропадания которой контроллер проверяет, нажата ли кнопка Stop/Menu, и если нажата, то происходит вход в меню настроек. В меню можно менять константы, задающие допустимые пределы напряжений, токов, температуры и другое (см. таблицу 1). Если кнопка Stop/Menu не была нажата, то контроллер входит в меню выбора одного из четырех режимов. Перемещение по этому меню осуществляется кнопками +/-, а выбор - кнопкой Start. После выбора режима, отобразится набор параметров (напряжение, ток и другие). Для запуска процесса зарядки/разрядки далее нужно нажать кнопку Start. Остановка запущенного процесса зарядки/разрядки, а также возврат на предыдущий уровень меню осуществляется кнопкой Stop. Светодиодами Charge и Discharge отображается текущий выбранный режим (постоянное свечение - остановлен; мигание - запущен).

Интерфейс пользователя

Рисунок 5 - Структура интерфейса пользователя

Измерения тока и напряжения производятся АЦП сериями по 500 измерений (для усреднения), каждая из которых запускается с периодом 100мс, длительность серии 18мс, включая обработку и сравнение с уставками. Получаемые усредненные значения тока и напряжения отображаются на дисплее, а также используются для учета энергии (W) и заряда (Q) в процессах зарядки и разрядки. При запущенных режимах может отображаться как заряд в А*ч, так и энергия в Вт*ч, либо время от начала процесса. Переключение между ними осуществляется нажатием кнопки Start/Save.

Расчет количества электрической энергии

Расчет количества заряда

где W - количество электрической энергии, Вт*ч;
Q - количество заряда, А*ч;
um - мгновенное значение напряжения, В;
im - мгновенное значение тока, А;
T - время, в течение которого измерялась энергия, ч;
N - количество измерений;
Δt - период дискретизации (промежуток времени между измерениями), ч. (в данном случае Δt = 1/3600/10)

Зарядка в ручном режиме

Под ручным режимом подразумевается ручное регулирование тока кнопками Plus/Minus как в запущенном процессе, так и до его запуска. Остановка зарядки происходит по нажатию кнопки Stop, либо при срабатывании отсечек по напряжению, току, температуре, времени, емкости, заряду. В этом режиме отсечка по порогу напряжения VMAX не считается аварийной, поэтому при её срабатывании начинает мигать светодиод "Warning" с частотой 1 Гц, а на дисплее отображаются последние измеренные параметры, а также поочередно отображаются переданный заряд в А*ч, количество энергии в Вт*ч и время зарядки. Напротив значения напряжения появляется символ "*", который говорит о том, что остсечка произошла по напряжению (рис. 7).

Зарядка в режиме CC/CV

В этом режиме зарядка производится в два этапа: стабилизации тока (СС - constant current) и стабилизации напряжения (CV - constant voltage). ШИМ в этом режиме работает на частоте 36кГц с разрешением 1000, текущее значение отображается в правом верхнем углу и недоступно для ручного регулирования. Пока напряжение аккумулятора ниже V_STAB, поддерживается максимальный ток I_STAB (режим CC), который при запуске плавно нарастает в течение нескольких секунд. Когда напряжение аккумулятора достигло порога V_STAB, то начинает регулироваться ток таким образом, что напряжение не выходит за пределы V_STAB и остается постоянным (режим CV). Когда зарядный ток снижается и достигает нижнего порога I_END при напряжении V_STAB, аккумулятор считается заряженным, процесс безаварийно останавливается, на дисплее на месте кода ошибки отображается "END" и начинает мигать светодиод "Warning". При превышении заданных V_STAB и I_STAB всегда происходит уменьшение ширины импульса, поэтому алгоритм не допускает выхода за эти пределы. Если все-таки по каким-то причинам ток или напряжение доходят до пределов VMAX и I_MAX_CH, то сработают аварийные отсечки. В процессе зарядки ток и напряжение не постоянно равны заданным V_STAB и I_STAB, а балансируют вблизи них с небольшим отклонением (±0,02A; ±0,02В), поэтому уставки отсечек должны выбираться так, чтобы был некоторый запас по отношению к V_STAB и I_STAB.

Процесс зарядки литий-ионного аккумулятора в режиме CC/CV

Рисунок 6 - Процесс зарядки литий-ионного аккумулятора 2200 mAh (фактически 2700) в режиме CC/CV

Разрядка в ручном и стабилизированном (CC/CV) режимах

Режим ручной разрядки аналогичен ручной зарядке - ток регулируется вручную. В режиме CC/CV разрядки, ток задается алгоритмом на уровне CCCV_DIS_I_STAB до тех пор, пока напряжение аккумулятора не достигнет нижнего порога CCCV_DIS_V_STAB. Далее ток начинает снижаться, а напряжение останавливается на уровне CCCV_DIS_V_STAB. Далее разрядка продолжается до тех пор, пока ток не достигнет величины CCCV_DIS_I_END при напряжении CCCV_DIS_V_STAB.

Графики разрядки в режиме CC/CV

Рисунок 7 - Графики разрядки аккумулятора 2200 mAh (фактически 2700) в режиме CC/CV

Защита

Во всех режимах зарядки/разрядки отслеживаются параметры на выходе, напряжение, ток и температура (если подключен датчик). При зарядке и разрядке также контролируются количество переданной энергии и время процесса. Если какой либо параметр выходит за допустимые пределы, то срабатывает отсечка и снимаются сигналы управления ключами. При аварийной остановке, в правом углу дисплея отображается информация об отсечке, срабатывание которой зафиксировано:
OVP - защита по максимальному напряжению VMAX (Over Voltage Protect);
UVP - защита по минимальному напряжению VMIN (Under Voltage Protect);
OCP - защита по максимальному току I_MAX_CH или I_MAX_DISCH (Over Current Protect);
OTP - защита по максимальной температуре MAX_TEMP (Over Temperature Protect);
CQP - защита по максимальному заряду в режиме зарядки Q_CH (А*ч);
CWP - защита по максимальной энергии в режиме зарядки W_CH (Вт*ч);
CTP - защита по максимальному времени зарядки T_CH;
DQP - защита по максимальному заряду в режиме разрядки Q_DISCH (А*ч);
DWP - защита по максимальной энергии в режиме разрядки W_DISCH (Вт*ч);
DTP - защита по максимальному времени разрядки T_DISCH;
END - безаварийное окончание зарядки/разрядки.

Состояние VT fault

В случае, когда в ждущем режиме (вне режимов зарядки/разрядки), а также после срабатывания отсечек, когда ключи должны быть заперты, ток на выходе продолжает сохранять значение более 0,1А, то фиксируется состояние VT fault, которое сбрасывается перезапуском контроллера. Такая ситуация может быть при пробое ключей или неисправности схемы управления затворами. При срабатывании включается постоянный звуковой сигнал (если разрешен настройками) и переводится в состояние "0" сигнал на PB12. Этот пин позволяет задействовать дополнительные внешние схемы отключения аккумулятора от устройства в качестве запасной защиты при пробое ключей (рис. 8). В текущей разводке платы эта возможность не используется.

Схема дополнительной защиты

Рисунок 8 - Одна из схем возможного подключения PB12 для дополнительной защиты (номиналы зависят от параметров катушки реле и транзистора)

Отображение Диапазон изменения Описание
0 - VMAX Минимальное напряжение аккумулятора.
При снижении напряжения аккумулятора ниже данного значения в режиме разрядки, процесс разрядки штатно останавливается. В остальных режимах снижение напряжения ниже данной уставки приводит к аварийной остановке.
VMIN - 99,99 Максимальное напряжение аккумулятора.
При превышении напряжения аккумулятора выше данного значения в режиме зарядки, процесс зарядки штатно останавливается. В остальных режимах превышение напряжения выше данной уставки приводит к аварийной остановке.
0 - 999 Температура предупреждения.
При превышении измеренной температуры выше данной константы происходит засвечивание светодиода "Warning" и появление символа "!" напротив измеренного значения.
0 - 999 Максимальная допустимая температура аккумулятора.
При превышении измеренной температуры выше данной константы происходит аварийная остановка.
0 - 99,99 Ток режима зарядки (предупреждающий).
При превышении тока выше данной константы происходит засвечивание светодиода "Warning" и появление символа "!" напротив измеренного значения.
0 - 99,99 Максимальный ток режима зарядки.
При превышении тока выше данной константы происходит аварийная остановка.
0 - 99,99 Ток режима разрядки (предупреждающий).
При превышении тока выше данной константы происходит засвечивание светодиода "Warning" и появление символа "!" напротив измеренного значения.
0 - 99,99 Максимальный ток режима разрядки.
При превышении тока выше данной константы происходит аварийная остановка.
00,01 - 99,99 Сопротивление измерительного шунта.
Фактическое результирующее сопротивление R17-R18. Параметр используется при расчете измеряемого тока. Диапазон изменения: от 00,01 до 99,99. При сопротивлении шунта менее 0,5 Ом, дискретность измеренных значений тока начинает превышать 0,01 А.
0 - 1 Разрешение вывода звуковых сигналов.
0 - 1 Наличие датчика температуры.
Если параметр установлен в 0, то канал измерения температуры игнорируется и не отображается на дисплее.
0 - VMAX Напряжение стабилизации в режиме CC/CV.
Напряжение, до которого разрешено заряжать аккумулятор (рис. 6).
0 - IMAX Ток стабилизации в режиме CC/CV.
Заданный ток заряда аккумулятора на этапе стабилизации (рис. 6).
0 - I_STAB Ток окончания зарядки в режиме CC/CV.
Ток, при снижении до которого зарядка завершается, при условии, что достигнуто напряжение V_STAB (рис. 6).
0 - 99,999 Максимальный заряд (А*ч) в режиме зарядки
Величина отданного заряда, при достижении которой происходит отсечка CQP.
0 - 99,99 Максимальная энергия (Вт*ч) в режиме зарядки
Величина отданной энергии, при достижении которой происходит отсечка CWP.
00:00:00 - 99:59:59 Максимальное время зарядки (чч:мм:сс)
Время, по истечении которого в режиме зарядки происходит отсечка CTP.
0 - 99,999 Максимальный заряд (А*ч) в режиме разрядки
Величина принятого заряда, при достижении которой происходит отсечка DQP.
0 - 99,99 Максимальная энергия (Вт*ч) в режиме разрядки
Величина принятой энергии, при достижении которой происходит отсечка DWP.
00:00:00 - 99:59:59 Максимальное время разрядки (чч:мм:сс)
Время, по истечении которого в режиме разрядки происходит отсечка DTP.
0 - MAX_I (disch.) Ток стабилизации при CC/CV разрядке
VMIN - VMAX Напряжение стабилизации при CC/CV разрядке
0 - MAX_I (disch.) Ток окончания CC/CV разрядки

Таблица 1 - Описание меню настроек

Прошивка и настройка

После сборки необходимо проверить форму сигналов на ключах и откалибровать каналы АЦП подстроечными резисторами. На время подстройки каналов контроллер прошивается прошивкой tester_v1.60d_protect_off.hex, в которой отключены защиты. Если прошить контроллер сразу рабочей прошивкой, то с большой вероятностью будут срабатывать защиты, поскольку АЦП с ненастроенными каналами будут получать запредельные величины тока и напряжения. При настройке сначала следует откалибровать канал измерения напряжения резистором RP1, воспользовавшись внешним образцовым вольтметром и тестовым аккумулятором, подключенным к выходным клеммам устройства. Настройка канала измерения тока производится после настройки канала напряжения и заключается в установке "нуля" тока резистором RP2 при подключенном аккумуляторе, без запуска режимов зарядки/разрядки. Проверить сигналы на ключах можно в режимах ручного задания тока, без аккумулятора (на прошивке с отключенными защитами). После настройки каналов АЦП и проверки сигналов на ключах, следует прошить контроллер рабочей прошивкой tester_v1.60.hex и настроить уставки и параметры режимов зарядки/разрядки, вызвав меню настройки (SETUP MODE). После настройки каждого параметра, нажать кнопку Start, что приведет к сохранению параметров в энергонезависимую память. Для выхода из режима настройки следует перезапустить контроллер.

Осциллограмма ШИМ сигнала VT1 Осциллограмма ШИМ сигнала VT1

Рисунок 9 - Осциллограммы сигнала на затворе VT1 (CH2) и сигнала с контроллера (CH1) в режиме зарядки при задании ШИМ = 20%

Осциллограмма шим сигнала VT2 Осциллограмма шим сигнала VT2

Рисунок 10 - Осциллограммы сигнала на затворе VT2 (CH2) и сигнала с контроллера (CH1) в режиме разрядки при задании ШИМ = 20%

Связь с ПК

Связь по UART осуществляется через адаптер USB-UART. У контроллера для этого задействованы 3 пина - PB6(Rx), PB7(Tx) и GND. К PB6(Rx) должна подключаться Tx линия адаптера, а к PB7(Tx) - Rx линия адаптера. Провода Rx/Tx нужно прокладывать так, чтобы минимизировать влияние на них помех и делать не слишком длинными между контроллером и адаптером (5-10 см - нормально). Вышесказанное не критично для кабеля USB от адаптера до ПК.

Адаптер USB-UART

Рисунок 11 - Адаптер USB-UART (CP2102)

Для работы с устройством запускается программа ChargerMonitor, возможности которой перечислены ниже:

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

Программа связи с устройством по UART

Рисунок 12 - Программа связи с устройством по UART

Описание кнопок:

 подключение к выбранному COM-порту
 отключение ранее установленного соединения
 обновление списка COM-портов
 запуск периодического опроса переменных устройства
 остановка опроса устройства
 загрузка файла лога
 выйти из режима просмотра лога

После запуска программы необходимо подключиться к устройству, выбрав соответствующий COM-порт в выпадающем списке (левый верхний угол), которому соответвтвует UART-адаптер. Если устройство (адаптер) было подключено после запуска программы, то нужно обновить список портов. После успешного подключения, возможен запуск периодического опроса переменных или считывание/установка констант, а также вызов перезапуска контроллера (RST). Перед запуском опроса переменных пользователем может быть задан период опроса, а также выбрана опция записи лога (Write file). Если запись лога была активирована, то принимаемые от устройства данные (переменные) будут писаться во временный файл, диалог сохранения которого появится при остановке опроса. Кнопки управления устройством (Remote control) активируются во время считывания переменных. Для удобства восприятия графиков, цвета для каждой переменной могут выбираться по двойному клику левой кнопки мыши по соответствующей строке в таблице переменных. Настройки интерфейса сохраняются при закрытия программы.

Файлы к статье:
files.zip (252 кб) - схема, плата, прошивки, ПО.

Видео (старая версия ПО)





Комментарии

#6 сообщение от бабай 19.11.2024
если можешь скинуть исходник хочу переделать под другой дисплей
#5 сообщение от Александр 29.07.2023
Виталий, описание подправил. Конечно же, PB6 и PB7. Спасибо!
#4 сообщение от Виталий 29.07.2023
На схеме связь с ПК через PB6, PB7... а в описании речь идет о порте А???
#3 сообщение от Александр 17.02.2023
..а насчет резисторов шунта, ток ограничивается до 2,8А допустимой мощностью , выделяющейся на них теплом. Резистора в шунте 2 по 2Вт, значит допустимо 4Вт. Проверяем: 2,8x2,8x0,5=3,92Вт - не сгорят. Если непонятно, как считал, см. закон Джоуля-Ленца.
#2 сообщение от Александр 16.02.2023
Здравствуйте. Потому, что VT1 без радиатора и перегреется из-за потерь, если не ограничить средний ток. При полных 16А даже в статическом режиме на его сопротивлении открытого канала Rds_on будет выделяться 16x16x0,16=40,96Вт - нагреется как паяльник.
#1 сообщение от Ибрагим 16.02.2023
Здравствуйте, хотел уточнить, как у вас получилось ограничить силу тока при зарядке? Если мосфет в импульсном режиме может пропускать 16А, то откуда взялось 3А? Написано, что на резисторах выделяется мощность 1Вт, но разве мощность определяет силу тока?
 



Добавление комментария
Имя:
E-mail:
Сообщение: