☰
两节串联电池如何主动均衡?开关电容有源均衡方案从拓扑到源码全解析
2026/10/16 5:52:44 网站建设 项目流程

在储能和备用电源的工程项目里,电池均衡是个绕不开的话题。手头这个备用电源模块,监控板要求对两节串联电池做均衡维护。电池串数虽然只有2S,但恰恰是这种“看起来不复杂”的小系统,最容易让人在架构上翻车。一开始按惯性思维,随手抓了一颗升降压芯片加一颗MCU就想搭个主动均衡,结果仔细一推敲,发现共地处理和能量流向里有好几个隐蔽的坑。最后定型的方案是:MP2642GR-Z 负责能量供给,STM32L442KC 负责采样、开关时序和均衡策略,中间用一个开关电容网络完成能量搬运。这套结构放在储能和备用电源场景里都很实用,本文把这套设计从拓扑选择、参数计算到软件状态机完整拆开讲一遍。

文章适合正在做电池管理系统、备用电源BMS、便携储能均衡模块的硬件和嵌入式工程师。你会看到为什么“一颗Buck-Boost直接给任意一节串联电池充电”这个直觉方案走不通,也会拿到一套能直接落地的开关电容有源均衡方案。

1. 两节串联电池的均衡难题:为什么不能直接“搬”

先看问题从哪来。两节电池串联成组,就算出厂时是同批次、同容量,使用一段时间后也会慢慢跑偏:单体自放电率不一样、内阻不一样、电芯温度梯度不一样、连接铜排接触电阻不一样,都会让两节电池的电压和容量逐渐拉开差距。

后果在充放电两端都很明显。串联充电时,容量偏低的那节会先到达充电截止电压,如果系统没有单体级管理,继续充下去就有过充风险;串联放电时,容量偏低的那节又会先放空,轻则触发欠压保护导致整组无法继续供电,重则造成电芯不可逆损伤。在备用电源这种长期处于浮充或浅充浅放状态的系统里,自放电差异会静默积累,等到市电掉电、需要电池真正顶上去的时候,才发现其中一节已经“掉队”了,整组可用容量大打折扣。

1.1 常见均衡方案的取舍

均衡方案大致分两类:被动均衡和主动均衡。

被动均衡的原理很简单,把电压高的那节电池通过一个功率电阻持续放电,把多余能量变成热量消耗掉,直到它和低电压那节对齐。优点是非常便宜、控制简单,器件只需要一个电阻加一个开关,很多低成本BMS的均衡都是这么做的。缺点也很明显:能量被白白浪费掉,电阻发热明显,均衡电流通常只能做到几十到一两百毫安,压差收敛速度很慢。在散热条件差的密封储能产品里,被动均衡的温升问题会被放大。

主动均衡则通过功率变换电路把能量从高电压电池“搬运”到低电压电池,而不是烧掉。效率高、发热小、均衡电流可以做得更大。代价是拓扑复杂、成本高、控制逻辑多。常见的主动均衡拓扑有双向反激、双向Buck-Boost、开关电容等。

还有一种思路叫开关电容均衡,也叫飞渡电容均衡,核心是一个悬浮的电容:先把电容从外部电源或高电压电池充电,再通过开关矩阵把电容并联到低电压电池两端放电,循环往复。电容本身没有固定的地参考,天然适合处理串联电池组里的悬浮节点,这是我在这个项目里最终选择它的根本原因。

1.2 容易被忽略的共地问题与悬浮节点

这里必须展开讲一个容易劝退新手的点:2S电池组里中间节点M并不是系统地。两节电池串联,M是第一节的正极,也是第二节的负极。如果你以BAT-作为整个系统参考地,那上面那节电池的负极也就是M点,电位大约是3V级别,是一个悬浮的中间电位。

问题马上就来了。常规集成Buck-Boost转换器,无论内部拓扑多复杂,输入侧地PGND和输出侧地通常是同一个参考地。想让能量进入上面那节电池,输出负端必须接到M点,但芯片内部所有MOS驱动、反馈比较器、限流比较器都参考同一个PGND,PGND一般只能固定接BAT-。强行用MOS开关把PGND在BAT-和M之间来回切换,会让芯片的控制环路和驱动逻辑基准电位不断变化,极不稳定,工程上非常难收敛。

所以“一颗集成升降压芯片,输入接整组电池,输出通过开关选通接到任意一节电池”这个看似顺理成章的方案,实际上会卡在输出地无法悬浮这个问题上。用隔离变压器做能量搬运可以绕开,但成本、体积和驱动复杂度都上去了。开关电容方案则绕开了这个矛盾:电容是一个两端浮动的储能元件,充电时接电源,放电时通过开关矩阵接电池,它不要求变换器输出地和电池地保持同一个电位。

2. 方案定型:开关电容有源均衡,MP2642 与 STM32 各司其职

系统里两颗芯片分工很清晰:MP2642GR-Z 干功率和能量调度,STM32L442KC 干采样、决策和开关时序。下面拆开说。

2.1 MP2642GR-Z 在均衡系统里到底扮演什么角色

MP2642GR-Z 是一颗同步升降压转换器,输入侧接整个电池组(BAT+和BAT-之间的电压),输出侧稳定到一个中间母线电压Vbus。在这个2S磷酸铁锂系统里,电池组电压范围大概是5.0V到7.3V,我把Vbus设定在5.0V。

很多人的第一反应是:电池组电压都高于5V,为什么还要升降压?直接Buck降压不就行了。这里有个细节值得注意:2S磷酸铁锂放电末期,整组电压可能只有5.0V左右,和Vbus非常接近。普通Buck转换器在输入输出电压接近时,占空比接近极限,环路增益下降,容易进入不稳定区域。Buck-Boost拓扑在输入高于输出时工作于Buck模式,输入低于输出时工作于Boost模式,输入输出接近时无缝切换,这就让均衡母线在整个电池组生命周期内都能维持稳定输出。选用它不是为了“炫技”,是要覆盖电池组电压波动带来的临界工况。

MP2642的输出给谁?给开关电容网络中的飞渡电容作为预充电源。它在这里带来了三个额外好处:第一,稳定了电容充电电压,让每次搬运的电量可预期;第二,芯片本身的限流功能可以限制电容充电浪涌,避免开机瞬间电流冲击损坏开关器件;第三,待机时可以通过EN引脚把整颗芯片关断,配合控制器的低功耗模式把均衡模块的静态电流压到极低水平。

2.2 STM32L442KC 为什么“刚刚好”

均衡控制看起来简单,实际对MCU的外设要求并不低。STM32L442KC 在这个项目里承担四件事:单体电压采样、母线电压和飞渡电容电压采样、MOS开关阵列的时序控制、以及与上位机或主BMS通信。

先看采样侧,它内置12位ADC,采样率足够,配合过采样可以做到毫伏级电压分辨。12位DAC可以直接用来设定比较阈值或做反馈微调,省掉一颗外部DAC芯片。再看控制侧,多个通用定时器可以产生独立的PWM或固定时序脉冲,控制开关管的动作顺序非常方便。通信侧有UART、I2C、SPI,和上位机对接很灵活。

低功耗也是一个关键点。备用电源这类设备长期挂在待机状态,均衡模块不能成为耗电大户。STM32L442KC 支持多种低功耗模式,待机电流能到微安级别,均衡完成后可以让MCU进入Stop模式,用定时器或外部信号周期性唤醒做电压巡检。一颗Cortex-M4F内核,主频跑80MHz,处理均衡状态机和滤波算法绰绰有余,算力还有不少富余。选它不是因为性能强,而是外设组合和功耗特性刚好卡在这类小系统的需求上。

2.3 系统拓扑与能量流动路径

完整能量路径可以拆成三段看。第一段,电池组通过MP2642降压到稳定的Vbus母线;第二段,飞渡电容Cfly通过开关网络连接到Vbus和BAT-之间被充电,电容两端的电压被充到接近Vbus;第三段,断开充电开关网络,把Cfly通过另一组开关并联到目标电池的两端,电容放电,电荷注入电池。

开关网络的具体连接方式决定了系统的自由度。Cfly的正极节点需要能连接到Vbus、BAT+或者M;Cfly的负极节点需要能连接到BAT-或者M。这样组合下来:

  • 充电时:Cfly+接Vbus,Cfly-接BAT-;
  • 给下面那节电池Cell1均衡时:Cfly+接M,Cfly-接BAT-;
  • 给上面那节电池Cell2均衡时:Cfly+接BAT+,Cfly-接M。

因为Cfly是完全悬浮的,它能轻松跨接在任何单节电池两端,不存在Buck-Boost输出地无法悬浮的问题。所有开关动作由STM32的GPIO控制,配合栅极驱动芯片,完成“先断开、再闭合”的安全切换,避免电容在被充电状态下直接并到电池上形成大电流冲击。

3. 硬件设计要点与关键参数计算

硬件设计不复杂,但每个参数的取舍都有讲究。下面按均衡周期估算、功率级、开关网络、采样保护四个子项展开。

3.1 均衡速度与飞渡电容参数估算

飞渡电容均衡的核心指标是每次搬运多少电荷,以及多久能完成一次充放电转移。先把公式写出来。

设Cfly电容容量,充电到电压Vc,放电结束电压Vd,则每次放电转移的电荷量:

ΔQ = Cfly × (Vc - Vd)

对应的能量变化:

ΔE = 0.5 × Cfly × (Vc² - Vd²)

举例:Cfly取220μF,Vbus设定5.0V,目标电池当前电压3.2V,放电到3.25V时认为电荷已经基本灌入电池。

ΔQ = 220μF × (5.0 - 3.25) = 220 × 1.75 = 385μC,也就是0.385mAs。

如果均衡目标是补入10mAh容量,折算成电荷是36库仑,即36000mAs,需要约93500次搬运。假设一次充放电周期时间为2ms,也就是500Hz的开关频率,总均衡时间约187秒,3分钟左右。这个速度用于消除几十毫伏的压差完全够用,而且在备用电源这种应用里,均衡本来就是一个缓慢的涓流式维护过程,不需要追求秒级收敛。

Cfly充电时间也要估一下。充电电流受MP2642限流点限制,如果限流1A,充电到5V的理论时间t = C × V / I = 220μF × 5V / 1A = 1.1ms。放电阶段时间会更短一些,因为放电结束电压不高。所以整个均衡周期做到几毫秒是合理可行的。

Cfly的选择需要注意ESR。普通铝电解电容ESR偏大,大电流脉冲充放时发热明显,寿命也会受影响。建议用低ESR的MLCC叠片组或者高分子固态电容。耐压要高于Vbus,至少选择16V等级器件留出裕量。220μF如果是MLCC,可能要多个并联,布局时需要兼顾容量密度和PCB面积。实际项目里我用了三颗100μF/16V的X7R陶瓷电容并联,等效约220μF到250μF,效果很不错。

3.2 MP2642 功率级外围电路设计

MP2642的外围器件选型,主要围绕电感、输入输出电容和反馈分压网络展开。以输出5V、电流能力1A作为设计目标。

电感选择直接关系到电流连续模式范围和纹波水平。考虑Buck-Boost在输入输出接近时的工作状态,电感感值按下面方法估算。典型输入电压6.4V,输出电压5V,开关频率取400kHz,输出电流1A,纹波电流系数取0.3,即目标纹波电流0.3A。工作占空比大约D ≈ Vout / Vin ≈ 0.78(这个值是粗略估算,实际效率修正后会偏低一点),电感量估算:

L ≥ (Vin - Vout) × D / (fsw × ΔI)

L ≥ (6.4 - 5) × 0.78 / (400kHz × 0.3A) ≈ 9.1μH

考虑铁锂放电末期和Boost模式瞬态,实际取值取大一档,用22μH额定饱和电流2A以上的功率电感。感值大一点纹波电流更小,代价是动态响应稍微偏慢,但在给电容充电这种负载场景下影响很小。电感选型时不要只盯感值,DCR和饱和电流同样重要。DC电阻太高,满载温升会直接体现出来,均衡模块长期工作后芯片附近温度很容易超标。

输入输出电容:输入侧放2颗22μF陶瓷电容,输出侧放3颗22μF陶瓷电容,都是针对循环电流有效值选的。陶瓷电容在DC偏压下容量会明显缩减,25V耐压的电容在5V输出下容量衰减还可以接受,如果选小了,实际有效容值可能连标称的一半都不到,这是很容易踩的坑。

反馈分压网络决定输出电压。MP2642的反馈基准电压常见在0.6V附近,具体值以规格书为准。目标输出5V,反馈分压比大约为输出/基准 ≈ 8.33。用上电阻82kΩ、下电阻10kΩ,分压点电压约0.6V,输出正好是5V附近。为了兼顾待机功耗,分压电阻阻值不要用小阻值,整体分压网络电流控制在几十微安以内。

软启动和限流按芯片资料配置,限制充电浪涌电流。飞渡电容刚开始充电时等效短路,如果没有软启动,瞬时电流可能冲到几安培,轻则触发打嗝保护,重则损坏MOS管。MP2642的EN引脚同时用于待机关断和上电时序控制。

3.3 开关网络与飞渡电容选型

开关网络是整个均衡器最容易出错的部分。先强调一个核心原则:任何时候只能存在一条能量通路,充电状态和放电状态的开关绝对不能重叠导通,否则电容会被短接或者电池组会被局部短路。

以两个选通节点为例:Cfly+通过一个三选一开关选通Vbus、BAT+、M;Cfly-通过一个二选一开关选通BAT-、M。每个开关路径用两颗背靠背N-MOS组成,原因是MOS管寄生体二极管会在某些状态下形成意外续流通路,背靠背连接可以切断体二极管路径,实现真正的双向阻断。栅极驱动用专门的栅极驱动芯片,耐压要考虑最高电池组电压,驱动芯片的地统一参考BAT-。

开关管的导通电阻会影响均衡效率。以1A均衡电流计算,如果单颗MOS导通电阻50mΩ,两条通路一共四颗MOS,总导通电阻约200mΩ,压降0.2V,损耗0.2W。对一个小均衡模块来说,这个热损耗不算小,长期工作需要考虑散热。所以MOS管导通电阻尽量选低,RDS(on)在30mΩ以下比较合适。

Cfly的PCB布局也影响性能。充放电回路里的寄生电感会造成电压尖峰,这是开关电容均衡最常见的EMI来源。飞渡电容应紧靠MOS开关网络放置,回路面积越小越好。我给Cfly和开关网络设计了一个独立的功率环,采样点和控制信号全部远离这个环,调试时用示波器抓Cfly两端波形,开关尖峰控制得很好。

3.4 电压采样与安全保护

电压采样精度决定了均衡策略是否可靠。Cell1(下面那节电池)的一端是GND,可以直接用高阻值分压电阻分压后进ADC。Cell2(上面那节电池)是悬浮的,不能直接用分压电阻接地去测,因为这样测的是BAT+对地电压,不是Cell2两端电压。正确做法是用差分放大器把BAT+和M的差值提取出来,再经过低通滤波进ADC。

差分放大器的精度取决于外部电阻匹配度。四个电阻如果有0.1%的失配,共模抑制比就会很差,悬浮电压测量误差可能到几十毫伏,这对均衡判断来说是致命的。我选用了集成差分放大器或者带激光微调电阻网络的分立方案,避免用普通0402电阻拼凑。共模输入范围必须覆盖BAT+对地的最高电压,比如两节锂电串联最高8.7V,放大器的共模范围至少要有12V以上余量。

安全保护设计需要覆盖几个方向。一是均衡超时保护,如果连续均衡超过设定时间(比如30分钟)压差没有收敛,判定为电池异常,强制停止均衡并上报故障;二是电压窗口限制,只有单体电压处于安全区间内才允许均衡,过度充电或者欠压状态下禁止搬移能量;三是温度保护,在飞渡电容附近和开关MOS管附近放置NTC热敏电阻,温度超过80℃时停止均衡。

MCU侧的ADC参考电压也要处理。STM32L442KC内部有VREFINT通道,可以通过它校准ADC满量程,消除基准电压漂移。对均衡这种对绝对电压精度要求高的场景,我习惯在硬件上放一个高精度参考电压,定期用ADC采一下这个参考值做软件校零,效果比单纯依赖内部校准更稳。

4. 均衡策略与软件状态机

硬件是骨架,软件是灵魂。均衡策略写不好,硬件做得再漂亮也会出现误动作或者振荡。

4.1 均衡判据与滞回控制

最简单的策略是“谁电压低就给谁充电”,但直接这么做会带来一个问题:均衡动作本身会改变两节电池的电压,如果判决阈值没有回差,开关网络会在两节电池之间来回切换,形成振荡。

设计一个带滞回的判决逻辑:

  • 当压差大于20mV且持续10秒以上,判定需要均衡;
  • 当压差小于5mV,判定均衡完成,退出;
  • 均衡方向选择电压较低的那一节作为目标电池。

20mV启动、5mV停止的滞回区间可以避免振荡。持续10秒的判断是为了过滤负载波动和采样噪声。备用电源场景下负载变化比较频繁,立刻响应会让均衡系统跟着负载乱跑,加上持续时间判断之后稳定很多。

采样滤波也值得写一笔。电池电压在开关网络动作时会产生毛刺,采样点要避开开关切换瞬间。我在软件里做了两层防护:第一,ADC结果用中值加均值滤波,剔除离群值;第二,开关动作后延时10ms再启动采样,等电压稳定。这样采到的电压才是真实的电池稳态电压。

4.2 状态机与开关时序

软件状态机划分为IDLE、CHARGE、TRANSFER、DONE、FAULT五个状态。

  • IDLE:巡检电压,做均衡判据;
  • CHARGE:Cfly连接到Vbus充电;
  • TRANSFER:断开充电通路,将Cfly连接到目标电池放电;
  • DONE:压差收敛或达到时间上限,进入待机;
  • FAULT:触发保护条件,停止均衡。

每个状态的迁移条件要写清楚。CHARGE状态不能等到电容电压完全等于Vbus再切走,那样充电电流会自然衰减到零,浪费大量时间。我设定充电结束条件为Cfly电压达到Vbus的97%,即认为充电完成,立刻转入TRANSFER。放电结束条件为Cfly电压降到目标电池电压加上50mV,多余电荷留在电容里不影响下一次充电。

下面是状态机的核心逻辑伪代码:

typedef enum { IDLE, CHARGE, TRANSFER, DONE, FAULT } BalState; void bal_update(void) { switch (state) { case IDLE: adc_sample_all(); vdiff = cell1_v - cell2_v; if (fault_check()) { state = FAULT; } else if (fabs(vdiff) > BAL_START_THRESHOLD && duration > 10s) { target_cell = vdiff < 0 ? CELL1 : CELL2; state = CHARGE; } else if (fabs(vdiff) < BAL_STOP_THRESHOLD) { state = DONE; } break; case CHARGE: switch_connect_bus_to_cfly(); if (cfly_v >= 0.97 * VBUS_TARGET) { switch_disconnect_all(); state = TRANSFER; } break; case TRANSFER: switch_connect_cfly_to_cell(target_cell); if (cfly_v <= target_cell_v + 0.05) { switch_disconnect_all(); state = IDLE; } break; case DONE: disable_charger(); enter_stop_mode(); break; case FAULT: disable_charger(); switch_disconnect_all(); report_fault(); break; } }

上面的伪代码省略了死区控制细节,实际工程里每一条开关路径的驱动都要加入“先关断旧路径,等待2μs,再开通新路径”的时序,避免电容在充电状态下瞬间落到电池两端。死区时间太短会烧开关管,太长会降低效率,2μs在400kHz驱动频率下是合理折中。

4.3 STM32 低功耗与可靠性设计

备用电源设备长期处于待机状态,均衡模块的待机功耗必须严格控制。均衡完成进入DONE状态后,MCU关闭MP2642的EN引脚,把开关网络的栅极驱动芯片也关掉,然后进入Stop模式。Stop模式下内核时钟停止,SRAM数据保留,功耗大概在微安级别。再配合一个低速定时器或者RTC定时唤醒,每隔几秒做一次电压巡检,发现压差超过阈值就重新启动均衡。

可靠性方面有三个细节值得重点提。第一,启用独立看门狗,每个主循环喂狗一次,防止异常状态卡死在开关切换循环里。第二,ADC采集前做SOP校准和偏移校准,每次上电先测一遍,采集结果存到全局变量里。第三,把均衡动作次数和故障码写入内部Flash,方便现场排查。STM32L442KC的Flash容量足够,用起来很从容。

5. 实测数据、调试记录与避坑手册

最后分享一组实测数据和调试中踩过的坑,这些内容在规格书里找不到,但对复现方案很有参考价值。

5.1 实测效果记录与解读

测试对象是两节磷酸铁锂串联,初始电压差48mV,低压侧3.18V,高压侧3.23V。均衡目标是把压差收到5mV以内。均衡电流设定在0.8A级别,Cfly容量3×100μF并联,Vbus目标5.0V。

时间Cell1电压Cell2电压压差电容温度
启动3.18V3.23V48mV28℃
5分钟3.195V3.225V30mV34℃
10分钟3.205V3.218V13mV36℃
18分钟3.211V3.214V3mV37℃

从数据看,压差收敛速度基本符合前面估算的3分钟左右100mV级别,实际用了18分钟是因为电容充放电周期有死区时间损耗,且电池电压上升导致放电截止电压随之抬高,每次转移电荷量略有下降。温度控制得不错,开关管和电容温度最高只到37℃,整机外壳基本感觉不到明显发热。

值得说明的是,这个收敛速度完全够用。备用电源的均衡本来就不是高频动作场景,它只需要在系统待机时把串联电池组的电压差慢慢磨平,避免长期积累成过充风险。

5.2 常见问题排查速查表

把调试过程中遇到的高频问题整理成表格,方便照着排查。

现象可能原因排查与解决办法
Captacitor充电电流过大触发保护软启动时间不够,MP2642限流点设置太高减小飞渡电容容量,或者降低MP2642限流设定,必要时在电容回路串一个小阻值限流电阻
Cfly电压上升缓慢,均衡效率低开关管导通电阻过大,充电回路压降大检查MOS管选型,测量开关路径的导通压降,RDS(on)应小于30mΩ
Cell2电压采样跳变,均衡误动作悬浮电压采样回路共模抑制差,或者采样时机和开关切换重叠检查差分放大器电阻匹配精度,确保开关动作后延时10ms再采样
均衡启动后系统待机功耗偏高MP2642始终使能,或者MCU没有进入低功耗模式检查EN引脚控制逻辑,确保均衡完成后关断功率级和驱动芯片
压差收敛到5mV后反复重启均衡滞回阈值太窄,采样噪声导致误判把启动阈值提高到15~20mV,停止阈值设置在5mV以内,并加入持续时间判断
开关切换瞬间出现尖峰电压飞渡电容回路寄生电感偏大,死区处理不到位优化PCB布局缩小功率回路面积,检查开关驱动死区时间,必要时增加RC吸收

5.3 工程化落地的几点个人经验

复盘这个项目,有几点体会很深。

第一,拓扑选择比外围参数调优重要得多。最开始执着于用一颗Buck-Boost直接搬能量,结果在悬浮地问题上绕了很长时间,换成开关电容架构后很多问题迎刃而解。做电池均衡,先想清楚地参考,再选芯片,顺序不能反。

第二,飞渡电容的充放电波形是判断系统健康程度最好的指标。调试时先用示波器抓Cfly两端波形,观察充电平台和放电平台是否平稳,如果出现明显台阶或毛刺,说明开关时序有问题。这个波形图比什么诊断软件都直观。

第三,采样数据要舍得花时间滤波。电池均衡对电压采样精度的要求远高于普通电压监测,几十毫伏的误差会把整个策略带偏。建议ADC采样开启过采样,软件再做中值和均值两级滤波,采样周期和开关周期错开,避免充电开关动作干扰采样。

第四,所有“先断开、再闭合”的时序都必须写到状态机里,并且要强制加死区延时。很多人觉得开关切换就几行代码的事,但嵌入式系统里GPIO配置和电平翻转需要时间,功率MOS管的栅极电容充电也需要时间,这个延时不能省。

如果后面要扩展到4S、6S串联电池组,这套方案可以直接复用:MP2642继续做母线电源,开关网络扩展成多选一,STM32换一个管脚更多的型号就能覆盖更多均衡通道。开关电容均衡的优势就是没有磁性元件,功率级和控制逻辑分离,扩展起来非常顺。我个人在实际调试中的体会是,均衡系统不要想着“一步到位做到完美”,先把拓扑跑通,再把压差阈值、死区时间、滤波深度这些参数一项一项调,系统自然就稳定下来了。最后再分享一个小技巧:给下一版产品做升级时,保留MCU的ISP下载接口和调试串口,均衡参数全部做成可在线配置,现场调试会节省大量时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询