1. 从两个串联电芯说起:为什么被动均衡在储能场景里依然能打
储能和备用电源系统里,电池组从来不是单打独斗。哪怕是最常见的两串架构——比如两节磷酸铁锂或三元锂电芯串联,给后级DCDC或负载供电——只要两节电芯出厂容量、内阻、自放电率存在细微差异,经过几十上百次充放电循环之后,电压差就会慢慢拉开。这个电压差看着不起眼,可能只有几十毫伏,但它带来的后果很直接:充电时电压高的那节先到截止电压,BMS为了保护它必须停止充电,于是电压低的那节永远吃不饱;放电时电压低的那节先到欠压点,系统又得提前切断输出,电压高的那节还剩一堆容量放不出来。整组电池的可用容量被最弱的那节电芯死死卡住,循环寿命也跟着打折。
解决这个问题的思路无非两条:被动均衡和主动均衡。主动均衡用变压器、电感或者电容把能量从高电压电芯搬到低电压电芯,效率高、发热小,但电路复杂、成本高、控制逻辑也麻烦。被动均衡则是给电压高的那节电芯并联一个耗散电阻,把多余的能量以热的形式放掉,电路简单、成本低、可靠性高。很多人一听“耗散”就觉得落后,但在两串电池的储能和备用电源场景里,被动均衡反而是最务实的选择——两节电芯的电压差通常不会太大,需要搬移的能量有限,用一颗集成均衡开关的AFE(模拟前端)芯片就能搞定,外围器件少,PCB面积小,整体BOM成本压得住。
这次要聊的方案,核心就是MP2642GR-Z这颗电池管理AFE配合STM32F723ZE主控,对两个串联电池单元做被动均衡。MP2642GR-Z内部集成了均衡MOSFET和驱动电路,外部只需要接均衡电阻,STM32F723ZE则负责采集电压、判断均衡条件、控制均衡开关的时序。整套方案适合两串锂电池或磷酸铁锂电池的储能模组、UPS备用电源、便携式储能电源等场景。下面我会从芯片选型逻辑、硬件设计细节、均衡策略实现、实测踩坑几个维度,把整个方案拆开讲清楚。
2. MP2642GR-Z 与 STM32F723ZE 的分工逻辑与选型考量
2.1 为什么选 MP2642GR-Z 做两串AFE
MP2642GR-Z是一颗专门针对两串电池组设计的电池管理AFE,内部集成了电压采集、均衡开关、过压欠压保护等功能。选它而不是用分立MOSFET搭均衡电路,主要看中三点。
第一是集成度。分立方案需要自己选均衡MOSFET、设计栅极驱动、考虑导通电阻和热耗散,PCB上至少多出六七个器件。MP2642GR-Z把均衡开关做在芯片内部,外部只挂两颗均衡电阻,电路简洁很多。对于两串这种小规模电池组,集成方案在成本和面积上的优势非常明显。
第二是电压采集精度。储能系统对电芯电压的监测精度要求不低,通常希望做到±10mV以内,否则均衡判断容易误触发或者该均衡时不动作。MP2642GR-Z的内部ADC和基准源经过出厂校准,配合STM32F723ZE的12位ADC做二次校验,整体精度可以满足大多数储能场景的需求。
第三是保护功能的完整性。除了均衡,MP2642GR-Z还提供过压、欠压、过流等保护信号的输出,STM32F723ZE可以直接读取这些状态引脚,不需要额外搭比较器电路。对于备用电源这种要求高可靠性的场景,硬件级的保护响应速度比纯软件轮询快得多。
2.2 STM32F723ZE 在这个方案里到底管什么
STM32F723ZE是一颗Cortex-M7内核的高性能MCU,主频216MHz,带FPU和大量外设。有人会问,两串电池均衡而已,用这么强的MCU是不是杀鸡用牛刀?从纯均衡功能看确实过剩,但放到储能和备用电源系统的整体架构里,STM32F723ZE要干的事情远不止均衡。
它需要周期性采集两节电芯的电压、电池组总电压、充放电电流和温度,跑均衡判断逻辑,控制MP2642GR-Z的均衡开关,同时还要处理与上位机的通信(比如CAN或UART)、管理充放电状态机、记录异常事件、驱动显示屏或指示灯。这些任务叠加起来,M7内核的算力和外设资源就显得很有必要了。另外F723ZE的ADC采样速率和DMA能力,可以让电压采集在不占用CPU的情况下后台运行,均衡逻辑的实时性更有保障。
2.3 两颗芯片之间的信号连接关系
MP2642GR-Z和STM32F723ZE之间的接口不复杂,但有几个细节容易忽略。电压采集方面,MP2642GR-Z把两节电芯的电压以模拟量形式输出,STM32F723ZE用ADC通道分别读取。均衡控制方面,STM32F723ZE通过GPIO输出高低电平,控制MP2642GR-Z内部对应电芯的均衡开关通断。状态监测方面,MP2642GR-Z的过压、欠压、过流报警引脚接到STM32F723ZE的外部中断口,一旦触发,MCU可以立即响应。
这里有个关键点:MP2642GR-Z的均衡开关控制引脚逻辑电平要和STM32F723ZE的GPIO电平匹配。F723ZE的IO是3.3V逻辑,MP2642GR-Z的控制引脚通常也是3.3V兼容,但如果你用的AFE版本是5V逻辑,中间就得加电平转换。我在实际项目里遇到过因为没注意这个细节,导致均衡开关一直处于半导通状态,均衡电阻发热严重但均衡效果很差的情况。
3. 硬件设计里那些 datasheet 不会明说的细节
3.1 均衡电阻的选型与热设计
均衡电阻的阻值决定了均衡电流的大小,而均衡电流又直接影响均衡速度和发热量。阻值越小,均衡电流越大,均衡越快,但电阻和芯片内部的均衡MOSFET发热也越厉害。MP2642GR-Z内部均衡开关的导通电阻和最大允许电流在数据手册里有明确标注,选电阻时必须留足余量。
举个实际的计算例子。假设两节电芯的电压差最大可能到200mV,我们希望均衡电流在50mA左右,那么均衡电阻大致是200mV除以50mA等于4Ω。但实际选型不能只看这个瞬间值,要考虑最坏情况:电芯电压差最大时,均衡电阻上的功耗是电压差的平方除以电阻,也就是0.2V乘以0.2V再除以4Ω,等于10mW。这个功耗对0805或1206封装的电阻来说完全没问题。但如果你的电芯电压差可能到500mV,同样4Ω电阻上的功耗就变成62.5mW,这时候就得考虑电阻的额定功率和温升了。
我一般建议均衡电阻的额定功率至少留两倍余量,封装选1206或更大,方便散热。电阻的精度倒不要求太高,1%足够了,因为均衡电流本身不需要非常精确。但电阻的温度系数要注意,如果用的是普通厚膜电阻,温度系数可能到100ppm/°C以上,均衡时电阻发热会导致阻值漂移,虽然对均衡效果影响不大,但在做精确电流监测时会有干扰。
3.2 电压采集通道的滤波与校准
STM32F723ZE的ADC精度是12位,参考电压如果是3.3V,理论分辨率是0.8mV左右。但实际电路中,电源噪声、地弹、走线阻抗都会影响采集精度。MP2642GR-Z输出的模拟电压信号在进入STM32F723ZE的ADC引脚之前,必须加RC低通滤波。我通常用1kΩ电阻串联加100nF电容到地,截止频率大概1.6kHz,既能滤掉高频噪声,又不会影响均衡判断的响应速度。
校准方面,MP2642GR-Z内部有出厂校准的电压基准,但经过PCB走线和外部滤波电路之后,到达STM32F723ZE ADC引脚的电压可能会有几毫伏的偏差。我的做法是在产线测试时,用高精度电源给电池组加已知电压,比如单节3.600V,然后读取STM32F723ZE的ADC值,计算增益和偏移误差,把校准系数存到MCU的Flash里。每次上电初始化时加载这些系数,对ADC读数做修正。这一步看起来麻烦,但做过一次之后,后续所有板子的一致性都会好很多。
3.3 PCB布局中均衡回路的走线要点
均衡回路虽然电流不大,但走线不合理照样出问题。均衡电阻和MP2642GR-Z之间的走线要尽量短而粗,减少寄生电感和电阻。均衡电流从电芯正极流出,经过均衡电阻、芯片内部开关,回到电芯负极,这个回路的面积要尽可能小,避免对旁边的电压采集走线产生磁场耦合。
电压采集走线要远离均衡回路和功率走线,最好走在不同的层,中间用地平面隔开。如果实在避不开,至少保持3倍线宽的间距。我见过一个案例,均衡走线和电压采集走线平行走了5厘米,结果均衡开启时ADC读数直接跳变十几毫伏,均衡逻辑被干扰得乱七八糟。后来把采集走线改到另一层,中间加地平面,问题立刻消失。
另外,MP2642GR-Z的接地引脚要单独走线到电池组的负极采样点,不要和功率地混在一起。储能系统里充放电电流可能到几安培甚至几十安培,功率地上的压降会直接叠加到电压采集结果上,造成严重的测量误差。这个坑我在早期项目里踩过,后来养成习惯,AFE的模拟地永远单独拉一根线到电池负极,和功率地只在一点连接。
4. 均衡策略的实现:从电压判断到状态机
4.1 均衡触发条件的设定逻辑
均衡什么时候开启、什么时候关闭,这个判断逻辑直接决定了均衡效果和系统安全性。最朴素的思路是:检测到两节电芯电压差超过某个阈值,就开启高电压那节的均衡开关,直到电压差降到阈值以下。但实际做起来要考虑的因素多得多。
首先是阈值的选择。阈值太小,比如10mV,电芯电压采集本身的噪声就可能超过这个值,导致均衡频繁启停,开关损耗和发热都上去了。阈值太大,比如100mV,均衡效果又不够好,电芯长期处于较大电压差状态,容量利用率还是上不去。我的经验是,对于磷酸铁锂电芯,均衡阈值设在30mV到50mV之间比较合适;三元锂电芯可以稍微小一点,20mV到40mV。这个值不是固定的,要根据你的电芯特性和系统对容量利用率的要求来调。
其次是均衡的使能条件。不是任何时候都适合开均衡。充电过程中,如果充电电流较大,电芯电压会被极化电压抬高,这时候采集到的电压不能真实反映电芯的SOC差异,均衡判断容易误判。我的做法是只在充电电流小于0.05C或者放电电流小于0.1C的时候才允许均衡,而且最好在充电末期或者静置阶段做均衡,这时候电芯电压比较稳定,判断更准确。
还有一个容易被忽略的点:温度。低温下电芯内阻增大,均衡电流会导致电压波动更明显,而且低温充电本身对电芯不友好。我通常设定电芯温度低于5°C或者高于45°C时禁止均衡,等温度回到正常区间再恢复。
4.2 基于STM32F723ZE的均衡状态机设计
均衡逻辑用状态机来实现最清晰。我一般把均衡控制分成几个状态:空闲、检测、均衡中、冷却、故障。
空闲状态下,STM32F723ZE周期性采集两节电芯电压,计算电压差,同时检查温度、电流、报警引脚等条件是否满足均衡使能。一旦所有条件满足且电压差超过阈值,进入检测状态。
检测状态其实是一个确认过程。因为电压采集可能有噪声,单次判断可能误触发。我会连续采集多次,比如10次,取平均值,如果平均值仍然超过阈值,才真正进入均衡中状态。这个确认过程大概耗时几十毫秒,对均衡效果没有影响,但能有效避免误触发。
均衡中状态下,STM32F723ZE打开高电压电芯对应的均衡开关,同时持续监测电压差。这里有个细节:均衡开启后,由于均衡电流在电芯内阻和走线电阻上产生压降,采集到的电压会瞬间变化。如果直接用这个变化后的电压来判断是否停止均衡,可能会提前关闭。我的做法是均衡开启后延迟一段时间,比如100ms,等电压稳定后再开始判断。当电压差降到阈值以下,或者均衡时间超过预设上限(比如30分钟),关闭均衡开关,进入冷却状态。
冷却状态是为了让均衡电阻和芯片降温,同时让电芯电压恢复稳定。冷却时间一般设30秒到1分钟,之后回到空闲状态,重新检测。
故障状态在任何时候检测到过温、过流、AFE报警等异常时进入,立即关闭所有均衡开关,记录故障码,等待故障清除后回到空闲。
4.3 均衡电流的自适应调整思路
固定均衡电阻的方案,均衡电流随电芯电压差变化,电压差大时电流大,电压差小时电流小。这其实是一个天然的自适应过程,不需要额外控制。但如果你想进一步优化,可以用PWM控制均衡开关的占空比,实现均衡电流的软启动和动态调节。
比如均衡刚开启时,先用50%占空比运行几秒钟,让均衡电阻和芯片的温度缓慢上升,避免热冲击。然后根据电压差的大小调整占空比,电压差大时用100%,电压差小时降到30%或50%,减少不必要的发热。STM32F723ZE的定时器资源很丰富,用TIM输出PWM控制均衡开关完全可行。
不过PWM控制也有代价:开关损耗会增加,而且PWM频率如果落在音频范围,均衡电阻可能会发出啸叫。我一般把PWM频率设在20kHz以上,超出人耳听觉范围,同时确保MP2642GR-Z的均衡开关响应速度跟得上。如果你的应用对成本极度敏感,固定电阻方案已经够用,不必上PWM。
5. 实测中暴露的问题与排查过程
5.1 均衡开启后电压采集跳变:根因定位
项目第一次联调时,发现一个奇怪现象:均衡开关一打开,被均衡的那节电芯电压读数立刻下降几十毫伏,关闭后又恢复。一开始怀疑是ADC采样时机问题,尝试在均衡开启后延迟采样,但跳变依然存在,只是幅度小了一点。
用示波器同时抓均衡电阻两端的电压和ADC输入引脚的电压,发现均衡开启瞬间,ADC输入引脚上有一个明显的负向尖峰,持续时间大概几十微秒。这个尖峰不是ADC采样时序造成的,而是均衡电流突变在走线寄生电感上产生的感应电动势,通过共地阻抗耦合到了采集通道。
根因找到后,解决方案分两步:一是在ADC输入引脚前增加一级RC滤波,把原来的1kΩ+100nF改成1kΩ+1μF,截止频率降到160Hz,尖峰被大幅衰减;二是在PCB上把均衡回路的接地点和采集通道的接地分开走线,最后在电池负极单点汇合。改完之后,均衡开启时的电压跳变从几十毫伏降到2mV以内,均衡判断不再受干扰。
这个问题的教训是:均衡回路和采集回路虽然电流量级不同,但共地阻抗耦合是真实存在的,布局时不能心存侥幸。
5.2 均衡电阻发热导致邻近日照灯闪烁
第二个坑更隐蔽。测试板上的均衡电阻旁边正好有一颗LED指示灯,用来显示均衡状态。结果发现均衡开启一段时间后,LED开始微弱闪烁,均衡关闭后恢复正常。一开始以为是LED驱动电路的问题,查了半天没找到原因。
后来用热成像仪看PCB温度分布,发现均衡电阻工作几分钟后表面温度到了80°C以上,而LED的限流电阻离它只有2毫米,被烤得阻值漂移,导致LED电流变化。更严重的是,LED的限流电阻和均衡电阻共用了一段地线,均衡电流在地线上的压降影响了LED的参考地电位。
解决方法是把均衡电阻移到PCB边缘,远离对温度敏感的器件,同时加宽均衡回路的地线,降低地线阻抗。如果空间允许,均衡电阻下面铺铜并打过孔到背面的大面积铜皮,帮助散热。这个案例提醒我,被动均衡的发热不是小事,布局时必须把热设计考虑进去。
5.3 低温环境下均衡误触发
冬天在室外测试时,发现系统在低温下频繁进入均衡状态,但实际电芯电压差并不大。排查后发现,低温下电芯内阻增大,充放电时电压波动更明显,STM32F723ZE采集到的瞬时电压差超过了阈值,触发了均衡。但均衡开启后,由于低温下均衡电流也变小,电压差下降很慢,均衡长时间无法关闭,白白消耗能量。
修复方案是在均衡判断逻辑里增加温度补偿:当温度低于10°C时,把均衡阈值提高20mV,同时延长电压确认的采样次数,从10次增加到30次,过滤掉低温下的电压波动。另外把低温均衡的允许条件收紧,只在充电末期且充电电流小于0.02C时才允许均衡。改完之后,低温误触发的问题没有再出现。
5.4 均衡开关关断时的电压反弹
还有一个现象值得注意:均衡关闭后,被均衡的电芯电压会有一个小幅反弹,大概几毫伏到十几毫伏,然后慢慢稳定。这是因为均衡电流消失后,电芯内阻上的压降消失,采集到的电压回升。如果均衡关闭后立即重新判断,可能会因为电压反弹再次触发均衡,造成频繁启停。
我的处理办法是在均衡关闭后加一个强制冷却期,比如60秒,期间不进行均衡判断,只做电压监测。冷却期结束后再重新评估。这个冷却期同时也让均衡电阻和芯片有时间散热,一举两得。
6. 关键参数配置与调试经验速查
6.1 均衡参数推荐配置表
下面这张表是我在多个两串储能项目里总结出来的参数配置,可以直接作为起点,再根据具体电芯和系统要求微调。
| 参数项 | 磷酸铁锂推荐值 | 三元锂推荐值 | 说明 |
|---|---|---|---|
| 均衡阈值 | 30~50mV | 20~40mV | 低于此值不触发均衡 |
| 均衡电阻 | 4~10Ω | 4~10Ω | 根据所需均衡电流选择 |
| 均衡电流 | 30~80mA | 30~80mA | 受芯片内部开关限制 |
| 电压确认次数 | 10次 | 10次 | 连续采样取平均 |
| 均衡开启延迟 | 100ms | 100ms | 等待电压稳定 |
| 均衡最长时长 | 30分钟 | 30分钟 | 超时强制关闭 |
| 冷却时间 | 60秒 | 60秒 | 关闭后等待再判断 |
| 低温禁均衡阈值 | 5°C | 5°C | 低于此温度不均衡 |
| 高温禁均衡阈值 | 45°C | 45°C | 高于此温度不均衡 |
| 低电流使能条件 | <0.05C充电 | <0.05C充电 | 充电末期均衡 |
这张表里的值不是绝对的,比如均衡电阻的选择要结合MP2642GR-Z内部开关的导通电阻和最大电流来定。如果你的电芯容量很大,比如100Ah以上,30mA的均衡电流可能太小,均衡效果不明显,这时候要么换更小阻值的电阻,要么考虑主动均衡方案。但对于大多数几安时到几十安时的储能和备用电源系统,这个配置足够用了。
6.2 调试时先用假负载验证均衡逻辑
在接真实电芯之前,我强烈建议先用可调电源和假负载验证均衡逻辑。具体做法是用两路可调电源分别模拟两节电芯,设定不同的电压,比如一节3.60V,另一节3.55V,然后观察STM32F723ZE是否在预期时间内开启均衡,均衡电流是否正常,关闭条件是否满足。
这样做的好处是安全、可控。真实电芯如果均衡逻辑有bug,可能导致过放或过充,损坏电芯。假负载阶段可以把所有边界条件都测一遍:电压差刚好在阈值附近、温度超限、电流超限、AFE报警触发等。等逻辑全部验证通过,再上真实电芯。
6.3 用STM32F723ZE的DMA减轻CPU负担
STM32F723ZE的ADC支持DMA传输,配置好之后,电压采集可以完全在后台运行,CPU只需要在DMA传输完成中断里读取数据即可。这样均衡逻辑的主循环可以专注于状态判断和控制输出,不会被ADC采样打断。
具体配置上,我把ADC设为连续扫描模式,扫描两节电芯的电压通道,DMA循环模式,缓冲区大小设为20个样本。每次DMA传输完成中断触发,CPU读取这20个样本,做滑动平均滤波,更新电压值。这样CPU占用率很低,而且采样是连续的,不会错过电压的快速变化。
6.4 均衡效果的评估方法
怎么判断均衡有没有效果?不能只看电压差有没有变小,因为均衡过程中电压差本来就会波动。我的评估方法是在一个完整的充放电循环后,静置2小时,测量两节电芯的开路电压差。如果开路电压差比均衡前明显减小,说明均衡有效。如果开路电压差没变甚至变大,说明均衡电流太小或者均衡时间不够,需要调整参数。
另一个指标是电池组的可用容量。在同样的充放电条件下,记录放电截止时两节电芯的电压,如果两节电芯几乎同时到达截止电压,说明均衡起到了作用,容量利用率提高了。这个指标比单纯的电压差更有实际意义。
7. 两串被动均衡方案的边界与扩展思路
两串被动均衡方案简单可靠,但它有明确的适用边界。如果你的电池组串联节数超过4串,或者电芯容量差异很大,被动均衡的效率和效果就会明显下降,这时候需要考虑主动均衡或者更高集成度的多串AFE方案。另外,被动均衡本质上是在耗散能量,对于能量效率要求极高的场景,比如太阳能储能系统,被动均衡的能耗也需要纳入整体效率计算。
从扩展角度看,MP2642GR-Z加STM32F723ZE这个组合,可以通过STM32F723ZE的CAN或UART接口,把均衡状态、电芯电压、温度等信息上传到上位机或云端,实现远程监控和数据分析。F723ZE的算力还允许在本地跑一些简单的电池健康状态估计算法,比如通过电压恢复曲线判断电芯老化程度。这些扩展不需要改动硬件,只需要在固件里增加相应功能。
我在实际项目里还试过用STM32F723ZE的RTC定时唤醒,让系统在低功耗模式下周期性醒来做均衡检测,进一步降低备用电源系统的静态功耗。对于长期浮充的备用电源场景,这个优化能把待机功耗压到毫安级以下,效果很实在。