
去年年底我手上的一台 2S 磷酸铁锂备电样机出了个挺尴尬的问题。两节串联的电芯出厂压差只有二十几毫伏跑了不到两百次循环压差涨到两百多毫伏整包容量直接少了三分之一。原来板上的被动均衡电阻均衡电流只有几十毫安塞在密闭壳子里发热也没人敢往大做。为了在储能和备用电源这类长期在线场景里稳住这串压差我把均衡部分重做了一遍用一颗 MP2642GR-Z 电源转换芯片做能量搬移用一颗 MK20DN128VFM5 微控制器做采样与控制。这篇把方案架构、调试过程和踩过的坑完整记录下来给同样在做 2S 电池均衡的同行一个参考。1. 为什么两节电芯的压差会成为系统的短板1.1 压差的来源容量分散、内阻差异和自放电率两节串联电芯不是天生一样。即使是同批次、同工艺出厂容量也有正负 1% 到 2% 的分散内阻出厂时差异不大但循环几十次之后因为电芯在壳体内的位置不同、散热条件不同内阻增长速率也会拉开差距。更隐蔽的是自放电率同一批锂电的自放电差异可以相差 1% 到 2%长期浮充的备用电源恰恰最怕这个自放电偏大的那节会被反复顶到过充区加速衰减然后衰减又进一步拉大压差形成一个正反馈。在磷酸铁锂这种电压平台非常平的体系里SOC 的细微偏差在开路电压上往往不怎么明显可一旦跑到接近充满或者放空的拐点压差就会被放大。2S 系统的痛点就在这里只有两节电芯任何一节短板都会直接砍掉整包可用容量还没办法像大电池组那样靠电芯串并联去平均。在我的样机上200mV 的压差意味着放电阶段有一节已经到截止电压另一节还剩不少能量整包容量损失一眼就能测出来。1.2 被动均衡为什么在这个项目里被否了被动均衡的原理很简单给电压高的那节电芯并一个放电电阻把多余的能量以热的形式烧掉。均衡电流等于压差除以电阻实际上为了保护电芯和避免发热失控通常做成恒流放电电流限制在 50 到 100mA 这个级别。问题就在于这个电流对备电系统的工况来说太小了。举个例子两节 5Ah 电芯压差 200mV 对应 SOC 差大约 2%也就是 100mAh 的容量差。用 100mA 电流去均衡理论上要 1 小时才能补回来而且这个过程里能量全部变成电阻上的热。储能和备用电源的壳体大多是密闭的几十毫安的热量在板子上待一会儿就是几十毫瓦看着不多但如果是长期浮充加上频繁浅循环均衡电阻几乎没有休息时间板温会被抬上去。更麻烦的是被动均衡只能把高电压那节放低不能把低电压那节补回来能量方向是单向的本质上有浪费。1.3 主动均衡的拓扑选型把能量搬过去而不是烧掉主动均衡的思路完全不同电压高的那节电芯向电压低的那节转移能量系统总能量基本守恒损耗只来自功率级的转换效率。对于两节电芯最常用的拓扑是双向 buck-boost 结构中间一个电感上下两个开关管通过控制开关管的通断时序能量既可以由电池 1 流向电池 2也可以反向。这个拓扑想在样机上落地需要三个部分一个可控的功率变换核心负责电感和开关管的驱动MP2642GR-Z 承担这个角色一个逻辑控制核心负责判断谁高谁低、什么时候切换、切多久MK20DN128VFM5 承担这个角色还有一组方向切换的 MOS 网络。三者配合均衡电流可以做到 300mA 甚至更高而发热远小于被动方案。2. MP2642GR-Z 在均衡电路里到底干了什么活2.1 功率核心一个受控的能量搬运单元MP2642GR-Z 是一颗电源转换芯片在均衡电路里我把它当作一个受控的 DC-DC 功率级来用。具体到开关频率上限、最大输出电流、同步整流配置这些指标设计时要以官方数据手册为准我这里只说它在均衡拓扑里承担的角色它以固定的开关频率工作通过 PWM 占空比控制电流的流向和大小将高电压侧电池的能量泵到低电压侧。打个比方它像一个小型抽水机泵水的方向和流量由外面的 MCU 决定。芯片本身并不关心自己是在放电还是在充电它只负责按照开关管的时序把能量从输入端搬到输出端。因此整个均衡电路的设计核心不在于芯片本身而在于外围拓扑和方向控制。2.2 外围参数电感、取样电阻与环路补偿围绕 MP2642GR-Z 搭建的功率级有几个参数是必须仔细定的。电感是决定均衡电流纹波和峰值的关键感值选小了纹波太大电流峰值容易超过设计值选大了响应慢峰值电流不够均衡效率也会下来。在我这套 300mA 均衡电流级别的板子上10uH 到 22uH 之间比较合适还得注意电感的饱和电流至少留 1.5 倍以上的裕量否则电流一冲就饱和整个功率级会剧烈发热。取样电阻放在哪、怎么走线是很多第一次做的人容易忽略的地方。不要用电流路径上的铜箔电阻来估算电流而是用一颗低阻值的合金取样电阻比如 25mΩ 或是 50mΩ把差分信号引到控制端的电流检测放大器。反馈采样线要从电芯端子位置直接引不要从功率回路的地线上接出来否则地线上的压降会直接污染采样信号让环路补偿失效。2.3 方向切换的细节为什么不能简单硬切两节电芯之间搬能量方向控制是最容易翻车的环节。常见做法是四颗 MOS 管组成两个方向开关一组负责电池 1 到电池 2另一组负责反向。这里面有几个细节很关键。MOS 管的体二极管在关断状态下仍然可以导通电流如果切换时没有死区时间就可能出现一个瞬间的直通或者反向路径轻则均衡电流失控重则炸管。第二个问题是驱动时序必须先完全关断当前方向的开关管再打开另一个方向这个过程要插入微秒级的死区。第三个问题是导通电阻300mA 电流流过几十毫欧的 MOS发热不大但如果未来要放大均衡电流到 1A 级别就必须换成低 Rdson 的管子否则热损耗会吃掉主动均衡的效率优势。3. MK20DN128VFM5 主控的采样、判定与保护逻辑3.1 选型理由外设匹配度比算力更重要均衡控制对主控芯片的资源要求并不高难在 ADC 精度、PWM 输出和可靠性的配合。MK20DN128VFM5 是一颗 ARM Cortex-M4 内核的微控制器带浮点运算和 DSP 指令这让我在写均衡算法时不需要刻意刁钻地省运算量。它的 16 位 ADC 对识别毫伏级压差非常有用多路定时器可以输出带死区插入的互补 PWM正好用来驱动上一节说的方向切换开关。128KB Flash 看起来不少实际用的时候你会发现均衡固件、故障记录、通信协议栈全都放进去之后剩余空间也就一半左右。我选这颗料还有一个原因它在电源控制类项目里用得很多寄存器配置资料常见出问题时不缺参考案例对项目周期比较友好。3.2 两节电芯电压的采样方式共模问题是隐藏的坑2S 串联结构的采样有一点特殊。电芯 1 的负极是系统地电芯 1 的正极和电芯 2 的负极是同一个中间点电芯 2 的正极是最高电位。测电芯 1 的电压很简单直接分压到 ADC 就行测电芯 2 的电压如果也直接用分压电阻接进去那么 ADC 输入引脚看到的是叠加了十几伏共模电压的信号有效识别精度会被吃掉一大截。正确的做法是给电芯 2 做差分采样。可以用仪表放大器也可以用运放搭减法器把中间点电位减掉之后再送 ADC。分压电阻的精度也要注意1% 的电阻在毫伏级均衡判断面前误差太大一片电阻温度系数不同也会引入漂移所以要么选 0.1% 精密电阻要么在产线做一次软件校准把每颗板子的分压比例误差记录下来。ADC 采集之后还要做滤波我实际用的是多次采样取中位均值能有效去掉功率级开关产生的尖峰干扰。3.3 故障保护与低功耗备电系统不能因为均衡把自己搞挂备用电源系统对故障处理的要求和高消费电子不太一样均衡电路失效可以但不能影响主放电路径不能把整包电源拖死。所以我在 MK20DN128VFM5 固件里做了几层保护过压、欠压、过温、均衡超时。任一条件触发先关断均衡功率级再进入故障状态等待系统重新上电或者恢复命令。低功耗也要算。备电系统的待机电流预算通常很紧均衡主控不能一上来就全速跑。我的做法是让 MCU 在均衡间隙进入低功耗睡眠定时醒来做一次电压采样平时只保留一个唤醒定时器和看门狗。这样均衡静态功耗控制在几十微瓦级别对整机待机影响几乎可以忽略。4. 均衡控制状态机的设计与实测调试4.1 状态机IDLE、MEASURE、BALANCE、PAUSE、FAULT均衡控制的主逻辑不复杂但状态迁移设计要仔细。我最终用的是五状态机状态进入条件动作退出条件IDLE上电复位或故障恢复所有 MOS 关断等待采样定时采样周期到进入 MEASUREMEASURE采样周期到采集两节电芯电压滤波运算压差大于 30mV 进入 BALANCE否则回到 IDLEBALANCE压差大于 30mV按方向打开对应功率级闭环控制均衡电流压差小于 10mV进入 PAUSEPAUSE均衡结束关断功率级等待电压回稳静置一定时间后回到 MEASUREFAULT过压、欠压、过温或超时关断全部驱动置故障标志收到恢复命令或断电复位这里的滞回区间很关键。如果我设成到了 30mV 启动、到了 29mV 就停那么在均衡过程的最后一个阶段电路会因为噪声和测量波动在状态之间来回跳功率级频繁启停反而把电芯电压搅出毛刺。30mV 启动、10mV 停止留出足够的窗口结合 PAUSE 静置能保证均衡过程收敛得干净。4.2 调试顺序先从模仿电池开始这个系统直接上真电池调试出了问题很难分清是采样问题还是功率级问题。我建议按下面的顺序来第一步用两台可调直流稳压电源模拟两节电芯先不带均衡功率级只验证 ADC 采样。把两台电源输出分别设成 3.5V 和 3.4V看 MCU 读回来的电压准不准分压误差能不能通过对图纸校准修正到 2mV 以内。第二步固定 PWM 占空比开环输出让均衡电流在一个安全值附近用电流探头看电感电流波形对不对方向切换时有没有直通。第三步切入闭环恒流均衡在模拟电池上观察两节电压是否缓慢趋近。模拟电池的内阻很小电压收敛过程会比真电池快但足以验证闭环的方向和稳定性。第四步换真电芯。先小电流 100mA 跑一圈确认压差趋势正确再把电流提到目标值。真电池的极化效应和电压回弹现象会让系统行为变得复杂要留足观察时间再下结论。4.3 我踩过的三个坑第一个坑是假收敛。均衡电流在电芯内阻上会产生电压降比如 300mA 电流流过 20mΩ 内阻就有 6mV 的压差贡献。采样时如果不避开均衡时段MCU 会看到压差被电流拉平以为均衡已经完成实际 SOC 还没拉齐。我后来把采样放在 PAUSE 状态里等电流关断几十毫秒后再读数这个问题才解决。第二个坑是方向切换烧管。最初我在切换时太着急没有等 MOS 完全关断就打开了另一路结果体二极管在换流瞬间被反向电压打通波形成了难看的振铃管子的温度直线上升。后来把驱动的死区时间从 0.5us 加大到 2us并且用示波器确认先关后开才把波形理干净。第三个坑是电感啸叫。功率级环路在某些工作点会进入间歇振荡占空比周期性跳变电感发出人耳可闻的吱吱声。处理办法是把开关频率设在人耳敏感区之外同时给环路比例积分参数加了输出限幅让占空比不会大幅跳变。5. 实测数据与整机联调结果5.1 一组实际记录的收敛数据这套系统调通后我特意记录了真电池的收敛过程。起始条件是两节电芯分别开路电压 3.52V 和 3.41V压差 110mV均衡电流设定在 300mA。每五分钟记录一次电压环境和电芯温度约 25 度时间分钟电芯1电压V电芯2电压V压差mV均衡电流mA03.5203.41011030053.5083.42385300103.4973.43562300153.4883.44642300203.4803.45525300253.4743.46212300303.4693.46540从数据可以看到前面 15 分钟压差下降最快后面逐渐变缓到 30 分钟压差已经回到 4mV均衡停止。整个过程功率级表面温度只是温热这是主动均衡对比被动方案最直观的优势。5.2 长时间运行验证与故障注入测试装回样机后我做了 72 小时浮充循环测试压差始终稳定在 10mV 以内。放电循环后压差会有短暂反弹但一旦进入空闲状态均衡器就会自动把压差拉回来系统的容量一致性明显改善。故障注入测试也很重要。我故意断开了一路采样线系统在下一轮采样时检测到电压跳变立刻进入 FAULT 状态均衡功率级关闭主放电路径不受影响。这个测试告诉我采样线束的接插件可靠性是整机最薄弱的环节后来我把采样线束换成了带锁扣的连接器并加了线序防呆。5.3 复盘如果再让我做一次如果这个项目重新来一遍我会把四管方向切换网络换成真正的双向功率级也就是两边都用同步整流的高边和低边 MOS。这样做的效率更高而且省去方向切换的死区时序设计软件也会更简单。均衡电流的取舍我也重新想清楚了。300mA 对付 5Ah 级别的 2S 电芯足够但如果你要做大容量储能单元比如 50Ah 级别期望十几分钟拉平压差那均衡电流得上到 1A 以上这时候功率级的电感、MOS 和散热都要重新做预算不是一个量级的方案。最后分享一个经验量产前一定要在产线上做一次电压校准把每颗板子的分压电阻误差标定好。我在样机阶段因为采样误差吃过亏以为算法有问题查了半天才发现是两颗 1% 电阻的温漂叠加。校准虽然会增加几十秒工位时间但换来的返修率下降是实实在在的。