ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

两节串联锂电池被动均衡方案:MP2642GR-Z与STM32F401RB实战

两节串联锂电池被动均衡方案:MP2642GR-Z与STM32F401RB实战

1. 为什么串联电池组的均衡不是"可选功能"而是"生存刚需"

两节串联的锂电池放在储能柜或者备用电源机箱里,很多人第一反应是"才两节,能有多大差异"。我最早接触这类项目时也这么想,直到实测数据摆在面前:同一批次、同一出厂日期的两节电芯,经过三十次充放电循环后,端电压差可以拉到80mV以上,容量差能到5%。这个数字放在单节电池上无所谓,但串联结构里,充电时电流是同一个,容量小的那节会先到上限电压,而容量大的那节还没充满;放电时反过来,容量小的先到下限,容量大的还有余量。结果就是——整组电池的可用容量被最弱的那节锁死,而且弱的那节长期处于过充过放边缘,衰减速度进一步加快,形成恶性循环。

这就是为什么储能和备用电源系统里,均衡电路不是锦上添花,而是决定整组寿命的核心环节。储能场景的特点是长期浮充、浅充浅放、环境温度相对稳定;备用电源场景则是长期待机、偶尔大电流放电、对可靠性要求极高。两种场景对均衡的需求侧重点不同:储能更看重均衡的持续性和低功耗,备用电源更看重均衡的响应速度和可靠性。

我这次选用的方案是MP2642GR-Z这颗均衡专用芯片搭配STM32F401RB做主控。选这个组合的原因很直接:MP2642GR-Z 是一颗专门为串联电池均衡设计的IC,内置MOSFET驱动和均衡逻辑,外围元件少;STM32F401RB 是Cortex-M4内核,84MHz主频,带FPU和硬件除法,处理ADC采样和均衡策略绰绰有余,而且它的ADC精度和DMA能力在这个价位段里很能打。两节串联的场景下,这套组合的BOM成本和PCB面积都控制得很好。

注意:均衡方案分被动和主动两大类。被动均衡是把高电压那节的多余能量通过电阻放掉,简单可靠但发热;主动均衡是把能量从高电压那节搬到低电压那节,效率高但电路复杂。MP2642GR-Z 属于被动均衡方案,适合两节串联这种小规模场景,成本和复杂度都更优。

2. MP2642GR-Z 的引脚逻辑与外围电路设计取舍

2.1 这颗芯片到底怎么工作

MP2642GR-Z 的核心逻辑不复杂:它持续监测两节电池的端电压,当检测到两节之间的压差超过内部设定的阈值时,就打开对应那节的均衡MOSFET,让高电压那节通过外部均衡电阻放电,直到压差回到阈值以内。芯片内部集成了比较器和驱动电路,外部只需要配均衡电阻和少量滤波电容。

它的关键引脚包括:电池正负极输入、两节电池的中间节点采样、均衡电阻连接端、以及状态指示输出。中间节点采样是核心,因为两节串联时,上节的负极就是下节的中间点,芯片必须准确读取这个点的电压才能判断两节各自的端电压。

实际接线时有个容易踩的坑:中间节点的采样线必须从电池端子的根部单独走线,不能和均衡电流路径共用一段走线。原因很简单——均衡电流流过走线时会产生压降,如果采样线和电流路径共用,采样到的电压就包含了走线压降,导致均衡判断出现偏差。我第一版PCB就犯了这个错误,均衡电阻的走线和采样走线共用了一段2mm的铜箔,结果均衡阈值实际偏移了将近30mV,两节电池怎么都均衡不到理想状态。后来把采样线改成从电池焊盘直接引出、单独走一条细线到芯片,问题立刻消失。

2.2 均衡电阻的选型计算

均衡电阻的阻值决定了均衡电流的大小,而均衡电流又决定了均衡速度和发热量。这个计算必须做,不能拍脑袋。

假设我们希望在压差达到50mV时开始均衡,均衡电流目标为100mA。两节电池的电压范围是6.0V到8.4V(单节3.0V到4.2V),那么均衡电阻的估算方式是:

  • 均衡时,高电压那节的端电压约为4.2V(充电末期)或3.7V(放电中期)
  • 均衡电阻上的压降约等于该节电池电压减去MOSFET导通压降(MP2642GR-Z内部MOSFET导通电阻约几十毫欧,100mA下压降可忽略)
  • 所以 R = V / I = 4.2V / 0.1A = 42Ω

取标准值43Ω或39Ω都可以。但这里有个功率问题:P = I² × R = 0.1² × 43 = 0.43W。这意味着均衡电阻必须选至少1W的封装,0805或1206的电阻根本扛不住。我实际用的是2512封装的1W金属膜电阻,实测表面温度在持续均衡时能到70°C左右,如果机箱内通风不好,建议用2W的或者加散热铜箔。

提示:均衡电流不是越大越好。100mA的均衡电流对于两节2000mAh的电芯来说,均衡1%的容量差大约需要2000mAh × 1% / 100mA = 0.2小时,也就是12分钟。这个速度在储能场景下完全够用,因为储能系统有充足的时间做均衡。如果追求更快的均衡速度,可以加大电流,但发热和电阻封装都要跟着升级。

2.3 滤波与保护细节

MP2642GR-Z 的采样输入端需要加RC滤波,滤掉开关噪声和电池端的瞬态波动。我用的参数是1kΩ串联电阻加100nF对地电容,截止频率约1.6kHz,对均衡这种慢速过程来说足够。但要注意,滤波电容必须用X7R或C0G材质,不能用Y5V,因为Y5V的容值随电压和温度变化太大,会导致滤波效果不稳定。

另外,电池输入端建议加一个TVS管做瞬态抑制,尤其是备用电源场景,电池可能在瞬间大电流放电,线路上会有电压尖峰。TVS的击穿电压选在电池最高电压的1.2倍左右,比如8.4V × 1.2 ≈ 10V,选SMBJ10A这类即可。

3. STM32F401RB 的ADC采样与均衡策略实现

3.1 为什么不用芯片自带的均衡逻辑而要用MCU

MP2642GR-Z 本身有内置的均衡阈值判断,理论上可以独立工作,不需要MCU干预。但在实际系统里,我坚持用STM32F401RB来管理均衡,原因有三个:

第一,芯片内置的阈值是固定的,通常是50mV或100mV,无法根据工况动态调整。储能场景下,浮充阶段希望阈值小一点(比如30mV),让电池尽量保持一致;放电阶段可以放宽到80mV,减少不必要的均衡损耗。这种动态策略只有MCU能做。

第二,系统需要记录均衡事件。哪节电池经常被均衡、均衡持续了多久、均衡时的温度是多少,这些数据对于判断电池健康状态非常重要。MP2642GR-Z 只有一个状态指示引脚,信息量太少。

第三,安全逻辑。如果均衡电阻开路或者MOSFET短路,芯片本身没有保护机制。MCU可以通过ADC监测均衡电阻两端的电压,判断均衡回路是否正常,异常时切断均衡并报警。

3.2 ADC采样的精度保障

STM32F401RB 的ADC是12位的,参考电压如果用VDDA(通常3.3V),那么最小分辨率为3.3V / 4096 ≈ 0.8mV。两节电池的总电压最高8.4V,需要分压后才能进入ADC。分压电阻的精度直接影响采样精度,我用的是0.1%精度的薄膜电阻,分压比设为1:3,这样8.4V分压后是2.8V,在ADC量程内。

但这里有个细节:分压电阻的阻值不能太大,否则ADC采样时的输入阻抗会影响精度。STM32F401RB的ADC输入阻抗在采样时间较长时可以达到几十kΩ,但为了保险,分压电阻的下臂建议不超过10kΩ。我用的是上臂30kΩ、下臂10kΩ,分压比1:4,8.4V分压后2.1V,留了足够的余量。

采样时机也很关键。均衡MOSFET开关时会产生电流突变,如果在这个时刻采样,读数会跳。我的做法是在均衡MOSFET关闭期间采样,或者连续采样多次取中值。具体实现是在定时器中断里触发ADC,每次采16个点,去掉最大最小各4个,剩下8个取平均。这样处理后的读数波动在±2mV以内,足够判断30mV的压差。

3.3 均衡策略的状态机设计

均衡逻辑我用一个简单的状态机来管理,状态定义如下:

状态条件动作
IDLE压差 < 30mV关闭均衡,每10秒采样一次
BALANCE_LOW30mV ≤ 压差 < 80mV开启高电压节均衡,每2秒采样一次
BALANCE_HIGH压差 ≥ 80mV开启均衡并记录警告,每1秒采样一次
FAULT均衡回路异常或温度过高关闭均衡,置故障标志

状态切换的滞回设计很重要。如果没有滞回,压差在30mV附近波动时,均衡会频繁开关,既增加损耗又缩短MOSFET寿命。我的做法是:进入BALANCE_LOW的阈值是30mV,退出阈值是20mV;进入BALANCE_HIGH的阈值是80mV,退出阈值是60mV。这样就有10mV和20mV的滞回带,避免了抖动。

代码层面,ADC采样用DMA搬运,定时器触发,完全不占CPU。主循环里只做状态判断和均衡控制,CPU负载不到5%。STM32F401RB的84MHz主频在这个任务上绰绰有余,甚至可以用更低的时钟频率来省电。

// 均衡状态机核心逻辑(伪代码) typedef enum { STATE_IDLE, STATE_BALANCE_LOW, STATE_BALANCE_HIGH, STATE_FAULT } BalanceState; BalanceState balance_fsm(float v_cell1, float v_cell2, float temp) { float diff = fabsf(v_cell1 - v_cell2); static BalanceState current = STATE_IDLE; if (temp > 60.0f) { current = STATE_FAULT; return current; } switch (current) { case STATE_IDLE: if (diff >= 0.030f) current = STATE_BALANCE_LOW; break; case STATE_BALANCE_LOW: if (diff < 0.020f) current = STATE_IDLE; else if (diff >= 0.080f) current = STATE_BALANCE_HIGH; break; case STATE_BALANCE_HIGH: if (diff < 0.060f) current = STATE_BALANCE_LOW; break; case STATE_FAULT: if (temp < 50.0f) current = STATE_IDLE; break; } return current; }

4. 实测中暴露的三个典型问题与排查过程

4.1 均衡后压差反而变大:采样时序的坑

第一版固件跑起来后,我发现一个诡异现象:均衡开启一段时间后,压差不但没缩小,反而从40mV变成了60mV。关掉均衡,压差又慢慢回到40mV。这说明均衡方向搞反了——芯片在均衡低电压那节,而不是高电压那节。

排查过程:先用万用表直接量两节电池的端电压,确认高电压节确实是哪一节。然后量MP2642GR-Z的中间节点采样引脚电压,发现芯片判断的高电压节和实际相反。问题出在采样线上——中间节点的采样线在PCB上走了一段靠近均衡电阻的路径,均衡电流产生的磁场在采样线上感应出了干扰电压,导致芯片读到的中间节点电压偏高,误判了上下两节的相对关系。

解决方法是把中间节点采样线改成双绞线形式,并且远离均衡电阻和电流路径。改板后问题消失。这个坑让我明白一个道理:均衡芯片的采样线不是普通信号线,它对噪声极其敏感,布局时必须当作模拟小信号来处理。

4.2 均衡电阻发热导致温度漂移

第二版板子连续跑了4小时均衡测试,发现均衡电流从初始的100mA慢慢降到了85mA。用热成像仪一看,均衡电阻表面温度到了95°C,电阻值因为温度系数发生了漂移。我用的电阻是普通厚膜电阻,温度系数100ppm/°C,95°C时阻值变化约0.8%,但电流下降15%说明还有别的原因。

进一步排查发现,MP2642GR-Z内部MOSFET的导通电阻随温度上升而增大,25°C时约50mΩ,95°C时约80mΩ。虽然80mΩ在100mA下只有8mV压降,但均衡回路的等效电阻增加了,电流自然下降。这个现象在被动均衡里是固有的,无法完全消除,但可以通过选低温漂电阻和加大电阻功率余量来缓解。我后来换成了50ppm/°C的精密电阻,功率余量从1W提到2W,电流下降控制在5%以内。

注意:被动均衡的发热是不可避免的,PCB布局时均衡电阻周围要留足够的铜箔散热,并且远离温度敏感元件(如MCU的晶振、ADC基准源)。如果机箱是密封的,建议把均衡电阻放在板边或者加散热片。

4.3 长期浮充下的均衡振荡

储能场景的特点是电池长期处于浮充状态,电压稳定在8.2V左右。在这个状态下,两节电池的压差很小,通常在10mV以内。但我的固件在压差20mV时就退出了均衡,导致压差在20mV到30mV之间反复穿越,均衡MOSFET每隔几分钟就开关一次。

这个问题在实验室短时间测试时发现不了,只有连续跑了一周才暴露出来。MOSFET频繁开关虽然不会立刻损坏,但长期来看会缩短寿命,而且每次开关都会在电源线上产生一个小尖峰,对系统其他电路有潜在干扰。

解决办法是引入"均衡窗口"概念:只有当压差连续超过阈值达到一定时间(比如5分钟)才启动均衡,启动后必须连续低于退出阈值达到一定时间(比如10分钟)才停止。这样就把短暂的电压波动过滤掉了,均衡动作变得非常稳定。实测下来,一周内均衡MOSFET只动作了3次,每次持续约15分钟,压差始终控制在15mV以内。

5. 从两节到多节:这套方案的扩展边界与局限

5.1 两节串联是这套方案的甜点区

MP2642GR-Z 加 STM32F401RB 的组合,在两节串联场景下几乎是最优解。芯片外围只需要两个均衡电阻、几个滤波电容和分压电阻,PCB面积可以控制在20mm × 15mm以内。STM32F401RB的ADC有多个通道,两节电池的采样只占两个通道,剩下的通道还可以用来监测温度和均衡回路状态。

成本方面,MP2642GR-Z 单价在几块钱人民币级别,STM32F401RB 也在十块钱以内,加上外围元件,整个均衡控制部分的BOM成本可以控制在20元以内。对于储能和备用电源这种对成本敏感的应用来说,这个方案很有竞争力。

5.2 扩展到三节以上需要换思路

如果要扩展到三节或更多节串联,MP2642GR-Z 就不够用了,因为它只支持两节。这时候有几个选择:一是用多颗MP2642GR-Z级联,每颗管两节,但中间节点的采样会变得复杂,而且芯片之间的均衡逻辑需要协调;二是换用支持多节的均衡芯片,比如支持4节或6节的型号;三是用MCU加外部MOSFET自己搭均衡电路,灵活性最高但开发工作量最大。

我的建议是:如果节数不超过4节,优先找专用芯片;如果超过4节,考虑用MCU加模拟开关的方案,通过模拟开关轮流采样每节电压,然后用外部MOSFET做均衡。STM32F401RB的ADC采样速度足够快,4节电池轮流采样一遍只需要几十微秒,完全不影响均衡策略的执行。

5.3 主动均衡值不值得上

被动均衡的缺点是能量全部以热量形式浪费掉了。对于储能系统来说,如果均衡频繁启动,浪费的能量累积起来也不少。主动均衡可以把能量从高电压节搬到低电压节,效率可以做到80%以上。

但主动均衡的电路复杂度是指数级上升的。以两节串联为例,主动均衡需要一个电感、两个MOSFET和一套复杂的开关时序控制,PCB面积至少翻倍,成本增加三到五倍。对于两节2000mAh的电芯,即使每天均衡1%的容量差,浪费的能量也只有2000mAh × 3.7V × 1% = 0.074Wh,一年不到27Wh。这个能量损失对应的电费几乎可以忽略。所以在这个场景下,被动均衡是更理性的选择。

提示:选择被动还是主动,关键看均衡频率和电池容量。小容量、低频率均衡的场景,被动方案完胜;大容量、高频率均衡的场景,主动方案才有意义。不要为了"先进"而盲目上主动均衡。

6. 给准备复现这套方案的同行几点实在建议

第一,PCB布局比原理图重要。均衡电路的原理图很简单,但布局不好就会出各种怪问题。采样线单独走、远离电流路径、加RC滤波,这三条是底线。均衡电阻的散热铜箔要足够大,至少2cm²。

第二,固件的滞回和窗口逻辑一定要做。没有滞回的均衡逻辑在实验室可能看不出问题,但到了现场,电压波动、温度变化、负载突变都会让均衡频繁误动作。滞回带建议设在10mV到20mV之间,窗口时间根据实际工况调整。

第三,温度监测不能省。均衡电阻和电池的温度都要监测,超过60°C就降额或者暂停均衡。锂电池在高温下本来就危险,均衡发热叠加环境温度,很容易突破安全边界。

第四,留出调试接口。我习惯在板子上留一个UART接口,把两节电池的电压、压差、均衡状态、温度这些数据实时打印出来。调试阶段用串口助手看数据,比用万用表一根根量快得多。量产时这个接口可以关掉,但调试阶段绝对不能省。

第五,做长期老化测试。均衡电路的问题往往在跑了几百小时后才暴露,比如电阻漂移、MOSFET老化、焊点疲劳。我一般会做至少500小时的连续老化测试,期间定期记录压差和均衡次数,观察趋势。如果压差随时间缓慢增大,说明均衡能力不足或者电池本身在加速衰减,需要进一步分析。

这套方案我已经在几个储能和备用电源项目上实际用过,最长的跑了两年多,两节电池的压差始终保持在20mV以内,整组容量衰减比没有均衡的对照组低了将近30%。均衡电路的成本在整机里占比很小,但它对电池寿命的影响是决定性的。如果你正在做类似的项目,希望这些经验能帮你少走几个弯路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进