两节串联电池主动均衡设计:基于MP2642与TM4C129的实战方案 储能和备用电源系统里两个串联电池单元看起来简单真正做起来才会发现均衡这一关有多关键。我最近在一个后备电源样机上做整机调试核心就是借助 MP2642GR-Z 做双向无损均衡用 TM4C129EKCPDT 做主控把两节串联电芯的压差始终控制在十几毫伏以内。这篇文章把方案拆解、参数计算、固件策略和现场踩过的坑一起整理出来给做储能和备用电源的朋友做个参考。1. 场景与方案拆解两个串联电芯为什么这么难均衡1.1 为什么只有两节电芯也会越用越不平衡只要电芯是串联在一起用就逃不过一致性发散的问题。出厂时电压、内阻、容量看起来都差不多但经过几百次充放电循环容量衰减速率不同、内阻增长不同、自放电率也不一样。两节电芯流过同样的电流容量小的那节每次都会先充满、先放空时间长了它的衰减会被加速和另一节的差距就会越拉越大。备用电源场景更隐蔽。大多数时间里系统都挂在浮充电压下电流很小但不同电芯的微细差异会一直累积。高自放电的电芯需要更多浮充电流去补偿长期下来其内部状态会偏离得更快。等到市电中断、系统真正需要带载时某节电芯可能已经提前触底整个后备电源直接停机。均衡的本质不是把两节电芯的电压调到数字上完全相等而是让它们的 SOC 尽量对齐。因为磷酸铁锂这类化学体系平台区很平端电压差几毫伏可能对应不小的 SOC 差。用电压作为均衡判断依据时要意识到这一点否则会出现“压差看起来很小但实际容量已经差很多”的情况。1.2 MP2642GR-Z 和 TM4C129EKCPDT 在系统里各干什么这套方案里MP2642GR-Z 是执行均衡动作的功率级TM4C129EKCPDT 是负责采样、算法和控制的决策层。简单说一个相当于水泵一个相当于水利调度中心。MP2642GR-Z 按功能分类属于有源均衡控制器通过外部飞跨电容在两个电池单元之间转移电荷。系统连接关系很直接电池组正极、中点、负极三个电位点接到均衡模块的功率端飞跨电容放在开关节点之间。芯片内部有驱动逻辑和功率管外部只需要少量电容和电阻就能把高压电芯的能量搬到低压电芯。TM4C129EKCPDT 的作用是让整个均衡过程可控。它内部有 12 位 ADC、足够多的 GPIO、UART 和以太网接口还有浮点运算单元。采样两节电芯电压后由固件判断是否开启均衡、向哪个方向转移、转移多久。这个芯片选型还有一个原因就是以后想接后台监控时以太网端口可以直接用不需要额外挂协议转换芯片。我在这套系统里用 TM4C129EKCPDT 的 PWM 通道做均衡模块的时钟控制用普通 GPIO 做方向信号和使能信号状态上报走 UART。整体接口非常干净调试时用示波器点几个关键信号就能看清工作过程。1.3 为什么不用更简单的被动均衡或者专用 AFE很多工程师看到两串联第一个念头就是“电阻均衡不就行了”。确实被动均衡电路最便宜在电压高的电芯上并联电阻放电把多余能量变成热耗散掉直到电压和低压电芯接近。问题是备用电源经常长时间浮充被动均衡会让电池内部和箱体环境持续升温。两串联的系统虽然电芯少但很多时候外壳是塑料密封的热量不容易散出去局部温度一高电芯寿命直接受影响。被动均衡还有另一个浪费的问题高压电芯放掉的那些能量本来是可以转给低压电芯继续用的。主动均衡把电荷从高 SOC 单元转移到低 SOC 单元整个过程只消耗传输路径上的少量损耗能量利用率明显高。对于备用电源这种长期在线运行的产品能效差异会被时间放大不能只看 BOM 成本。专用 AFE 芯片我也评估过。很多面向多串电池包的模拟前端集成了均衡 MOS但两串联可选的型号不多而且均衡电流往往只有几十毫安对几十安时以上的备用电池来说效果很不明显。用 MCU 加 MP2642GR-Z 这个组合均衡电流可以根据自己的飞跨电容和开关频率去设计控制逻辑也是想怎么写就怎么写调试空间大得多。2. 硬件设计与均衡原理电荷是怎么从高压电芯搬到低压电芯的2.1 开关电容均衡器的工作机制MP2642GR-Z 这种开关电容均衡方案核心是“先取电荷再放电荷”。假设 Cell1 电压高、Cell2 电压低电路进入第一阶段时开关把飞跨电容接到 Cell1 两端Cfly 被充电电压接近 Cell1。第二阶段再把这些开关断开另一组开关把 Cfly 接到 Cell2 两端Cfly 里的电荷就注入 Cell2。两个阶段轮流进行好比拿一个小桶不停把高水位水池里的水舀到低水位水池。平均均衡电流可以近似用下面这个公式估算I_avg ≈ Cfly × fsw × ΔV其中 Cfly 是飞跨电容容量fsw 是开关频率ΔV 是两节电芯之间的压差。这个公式是简化估算实际还要减去开关管导通压降和电容 ESR 的损耗但用来做前期设计已经足够。举个实际例子飞跨电容取 10μF开关频率 100kHz压差 100mV 时理论平均电流只有 0.1A。如果目标均衡电流是 0.5A要么把电容加到 22μF要么把频率提高到 200kHz 以上或者两者同时调整。我最后选了 22μF 电容和 200kHz 左右的开关频率实测在 150mV 压差下能跑出接近 0.6A 的转移电流。这里有一个容易被忽略的特点压差越小均衡电流也越小。当两节电芯只差 10mV 时即便开关频率和电容都很大搬运的电荷量也非常有限。所以想把压差强行压到接近零不是靠加大均衡电流能解决的需要让均衡器以微小电流持续工作更长时间。明白了这一点就不会在现场误判“均衡器坏了”。2.2 采样链路与数字控制闭环MCU 怎么“看见”两节电压TM4C129EKCPDT 的 ADC 输入范围是 03.3V而单节磷酸铁锂最高电压能到 3.65V 左右三元锂更是能到 4.2V 以上。直接接 ADC 引脚肯定不行必须用分压电阻把电压降到合适范围。第一串电芯的电压可以从电池正极和总负之间分压得到第二串电芯的电压则需要测中点和总负、总正和中点两组信号再做差分或者用两个 ADC 通道分别采样后相减。我用的方法是每节电芯各接一组高阻分压网络总阻值大概 100kΩ中点先经过 RC 低通再进 ADC。分压电阻总阻值不能太低否则会形成额外的持续自放电电流也不能太高太高会让采样输入阻抗变大ADC 采样时电压建立时间不够。100kΩ 左右是平衡点既不会显著消耗电池又能保证稳定采样。硬件上还要加钳位二极管防止电池电压异常时把 ADC 引脚打坏。软件上则用 TM4C129EKCPDT 的 12 位 ADC 连续采样做滑动平均。12 位 ADC 在 3.3V 参考下理论 LSB 约 0.8mV但实际工程上能把噪声压到 12mV 已经很不错。要判断 5mV 级别的压差必须配合软件滤波和校准否则阈值设置得再精细也是白搭。2.3 关键参数怎么选电容、频率、阈值和电流这一部分我整理成了表格可以直接作为设计起点参数推荐值备注飞跨电容22μF / 50V C0G容量稳定受偏压影响小开关频率100~200kHz由芯片外围配置决定均衡开启阈值15~20mV连续 5 次采样确认均衡关闭阈值8~10mV与开启阈值形成迟滞采样滤波截止频率5~10Hz硬件 RC 加软件滑动平均分压电阻100kΩ 总量0.1% 精度温漂尽量低飞跨电容是这套电路里最重要的元件。C0G 介质在高频下损耗小容量随直流偏压变化也小。如果因为体积只能选 X7R建议选额定电压远高于实际工作电压的规格比如 50V 或 100V并且实际装机后测一下偏压下的容量。我在第一批样机上就吃过亏X7R 电容标称 22μF实际在 3.2V 偏压下只剩不到 15μF均衡电流直接掉了三成。均衡电流的目标值不是越大越好。对容量 100Ah 左右的备用电池0.5A 到 1A 已经足够。再大的电流会让飞跨电容和开关管发热上升PCB 布局压力也会增大。两串联系统的优势是功率回路短电流路径好布置可以适当把均衡电流做高一点但没必要追求极端。3. 固件策略与实操调参均衡不是一开就完事3.1 状态机设计从待机到均衡不打架均衡模块不能简单做成“电压差大了就开小了就关”那会带来很多现场问题。我在固件里设计了一个完整状态机核心思想是只有系统处于合适工况时才允许均衡一旦触发保护立刻退出。typedef enum { IDLE, STABLE_CHECK, SAMPLE_AVG, BALANCE_RUN, FAULT_STOP } bms_stage_t;上电后先进入 IDLE延迟一段时间等电压稳定。然后进入 STABLE_CHECK系统需要处于充电或静置状态放电状态不允许均衡。之后进入 SAMPLE_AVG在这里完成滤波和压差计算。如果压差持续超过开启阈值就进入 BALANCE_RUN开启均衡模块。均衡运行期间每个采样周期都检查关闭条件、超时条件和保护条件任一条件成立就退出。为什么只有在充电或者静置时均衡因为放电时电芯本身在持续输出能量此时把高 SOC 电芯的能量转给低 SOC 电芯低 SOC 电芯依然在放电起不到保护作用反而增加了系统功耗。备用电源绝大多数时间挂在浮充状态浮充阶段就是最好的均衡窗口。代码设计上要注意方向控制信号和使能信号在 MCU 复位期间必须保持安全状态。MP2642GR-Z 的使能引脚如果默认电平不确定上电瞬间均衡可能偷偷跑一下。我在硬件上给使能引脚加了外部下拉电阻并且让 TM4C129EKCPDT 复位输出信号去控制一个电平转换开关从根上杜绝误开启。3.2 阈值和滤波怎么设才不误触发电池电压在浮充状态下不是一条平直线充电器输出纹波、负载切换、接触电阻变化都会让电压抖动。如果直接用瞬时值比较均衡器会频繁开关甚至出现“开了几分钟就关关了又开”的震荡。我的做法是采样周期 100ms 一次软件里做 8 点滑动平均。开启均衡前连续 5 个平均结果都超过开启阈值才动作。关闭也类似连续 5 个平均结果低于关闭阈值才停止。这样虽然会引入一两秒的判断延迟但对备用电源这种慢动态系统完全没问题换来的是稳定可靠。阈值回差一定要留足。开启阈值 15mV 的话关闭阈值我放在 8mV 左右。如果回差只有 2mV均衡过程中两节电压的动态波动很容易把压差顶回阈值附近结果就是反复切换。均衡模块每次启停开关管都要承受一次冲击次数多了故障率自然上去。3.3 保护联动均衡模块绝不能绕过安全逻辑均衡使能必须与电池保护逻辑形成互锁。温度超出工作范围、总电压异常、单体电压超过规格、系统正在大电流放电时均衡都必须被禁止。尤其是温度保护主动均衡虽然没有被动均衡那种电阻发热但开关管和飞跨电容在高频工作下依然会有损耗局部温度一样会升高。我在固件里让温度保护优先级最高任何状态下一旦检测到过温MCU 立刻切断均衡使能。超时保护也重要。均衡开启后如果运行了 2 小时压差仍然没有进入目标区间就不应该继续盲目运行下去了。这种情况大概率是电芯本身已经老化或者采样链路出了问题。固件会让系统进入故障状态上报告警等现场人员处理。一直硬扛着均衡不但在消耗电能还可能掩盖真实故障。另外均衡期间的压差判断和保护判断要分开处理。保护逻辑需要尽量用原始、未过度平均的采样值防止调节信号把瞬时过压信息平均掉。我在 TM4C129EKCPDT 上用两个不同通道和不同滤波窗口分别处理保护与均衡判定避免了这类问题。4. 调试实录与避坑清单常见问题怎么查4.1 均衡电流上不去先查电容和开关节点波形第一个常见问题是均衡功能看起来启动了但压差几乎不动。这时候不要急着看电池电压变化先拿示波器量飞跨电容两端的开关节点波形。正常情况下应该能看到一组方波幅度接近电池单元电压。如果波形根本没有说明芯片没起振检查使能引脚和方向控制脚的电平。如果波形有但幅度明显偏低说明开关管压降太大或者飞跨电容容量不够。再用电流探头去测 Cfly 支路的电流与理论计算值对比就能判断到底是电容问题还是频率配置问题。我遇到最典型的情况就是飞跨电容用错了介质。图纸上写的是 22μF/50V实际贴的是 X7R而且厂家没有标注直流偏压特性。在 3V 左右的偏压下实际容量可能不到一半均衡电流自然上不去。换成 C0G 电容之后电流立刻恢复到预期值。注意不要只盯着电池电压变化来判断均衡有没有工作。两串联电芯容量通常很大0.5A 电流带来的电压变化率只有每分钟零点几毫伏观察时间太短根本看不出效果。4.2 采样电压漂移不是 ADC 坏了是分压热噪声第二个常见问题是电压读数漂移。系统刚开始上电时读数很准运行半小时后某一节电压读数慢慢偏了几个毫伏而且会随机波动。排查时首先怀疑 ADC 参考但 TM4C129EKCPDT 的内部参考通常比较稳真正原因往往是分压电阻的温度系数。普通厚膜电阻温漂大PCB 上功率器件发热后热量传导到采样电阻阻值变化导致分压比变化。解决办法是换用 0.1% 精度、25ppm 温漂的薄膜电阻并把采样线远离功率开关管和均衡模块。采样线还要单独走线最好从电池端子直接引出形成开尔文连接避免采样点取在功率回路上那样会把负载电流产生的压降误差采进去。软件校准也不能省。我会在样机调试时用高精度电压源给系统加已知电压记录 ADC 原始码和标称电压的关系做一个两点校准把分压电阻和 ADC 参考的固定误差消掉。校准之后整套系统的采样精度能稳定做到正负 2mV 以内足够支持 15mV 的均衡阈值。4.3 均衡反复开启关闭迟滞不够或者方向判断不稳第三个问题是均衡器反复开、关、开、关。从日志看均衡启动后压差确实在下降但降到关闭阈值附近时由于采样波动压差一会儿低于阈值一会儿高于阈值导致开关在短时间内反复切换。处理办法有三个。第一拉开迟滞开启阈值和关闭阈值差距至少要有 5mV 以上我实际用到 7mV。第二设置最短运行时间均衡启动后至少运行 3 到 5 分钟这段时间不读取关闭条件避免短促启停。第三方向切换前加延时如果压差符号发生反转要等滤波值连续确认后再切换不能让电荷泵在两个电芯之间来回倒腾。调试中还发现两串联系统压差已经很小的时候反复开关往往不是系统问题而是电芯本身差异到了极限。我一直保留的一条经验是两节电芯压差能稳定控制在 10mV 左右已经很理想如果非要压到 5mV 以下大概率是电芯需要更换了靠调大均衡电流硬撑没有意义。4.4 备用电源长期浮充场景下的几个维护建议备用电源和电动汽车不一样大部分时间是空闲状态所以均衡策略要“克制”。我建议只在浮充中后期让均衡工作压差回到关闭阈值就停等待下一次累积。没有必要一天二十四小时反复启动均衡器那样只会让功率器件白白承受开关应力。整套系统也要关注静态功耗。TM4C129EKCPDT 进入低功耗模式后MP2642GR-Z 的使能引脚默认截止整机待机电流要控制在非常低的水平。备用电源一旦断电自身还靠电池活着待机功耗太高会直接缩短后备时间。最后一点是记录压差曲线。TM4C129EKCPDT 有 RTC 和非易失存储我每天固定时间记录一次静置压差存到本地。长期趋势能很清楚地看出哪节电芯在加速老化很多问题在变成现场故障之前就能发现。这套均衡方案做完之后我给自己定的一条规矩是阈值宁宽勿窄时间宁短勿长让数据说话。两节电芯之间的均衡真正考验的不是芯片性能而是对系统边界条件的判断。