做储能和备用电源的朋友应该都有过这种经历:一组2S电池包用了大半年,充电末期发现总是充不满,放电压降又特别快;拆开平台一量,两节单体电压差了接近300mV。问题看起来是“电池不行了”,但真正的原因常常是长期没有均衡管理,容量高的那节每次都被充电保护顶下来,容量低的那节每次都被放电保护拖下去,越用越偏。
这个场景在2S系统里非常典型。单体数量少不代表不需要管理,反而因为结构简单,很多方案默认“放养”,结果就是把电池用废了。这篇文章围绕一套实际可落地的方案展开:用MP2642GR-Z这颗前端电源管理芯片做充电通路与电池状态保护,用PIC24F16KA102这颗16位低功耗MCU做电压采集和均衡控制,实现对两个串联电池单元的被动均衡管理。文章会把硬件电路的关键决策、软件状态机的设计逻辑、以及调试中踩过的典型坑都捋一遍,适合做储能BMS、UPS备用电源或者便携储能产品硬件和固件的同学参考。
1. 为什么2S电池组必须做均衡:三五十毫伏的压差在储能场景里是大事
1.1 单体失配的三个来源
同一批次出厂的两个单体,电气特性也不是完全一致的。制造工艺决定初始容量误差一般在±2%左右,这是第一个来源。电池行业经常说“电池包最弱的那节决定了整个包的寿命”,车规级电芯还能靠分选把内阻、容量接近的配成一组,但便携储能和备用电源为了成本,很多直接按批次来,初始配组误差就落在现场了。
第二个来源是温度梯度。储能机柜或备用电源的密闭腔体里,靠近发热元件的单体工作温度可能比另一节高10℃以上。锂电池的化学反应速率随温度上升明显加快,这节的自放电率就比低温那节高,静置一个月后的SOC漂移能领先好几个百分点。
第三个来源是使用中形成的正反馈。高容量单体每次充电末期都被提前终止,长期处于浅充浅放,活性物质利用率下降;低容量单体每次都被放电狠拉,循环老化更快。三到五个月后,初始1%的差距被放大到5%甚至10%,这时候再不做均衡已经晚了。
1.2 失配怎么吃掉系统容量
对2S系统来说,两节单体串联,充电电流完全一样、放电电流完全一样,但每节单体的SOC不同,端电压就会出现差异。充电时,容量低的那节先到达截止电压,保护逻辑为了守住它只能终止整个充电过程,这时容量高的那节连95%都没充满。放电时反过来,容量低的那节先到截止电压,整包强制断电,实际上还有不少能量压在容量高的那节里。两头一夹,整包可用容量就变成了“短板单体可用容量”。
在备用电源场景里这个问题更隐蔽。备用电源长期处于浮充状态,充电电流很小,电压差导致的问题不是充不满,而是浮充电压被分散:容量低的单体承受比平均值更高的电压,加速电解液分解,容量高的单体却长期欠充,内部阻抗慢慢增大,整个包的循环寿命可能直接打七折。
这也是为什么现在很多行业标准把单体电压一致性列为一个关键指标:静置状态下电压差超过20mV就应该警觉,超过50mV必须处理。2S系统单体少,均衡成本低,收益却非常直接。
1.3 2S架构的特殊性
很多人在做多串BMS时习惯了N串的均衡策略,反过来面对2S反而不知道从哪下手。其实2S系统比N串简单得多,也特殊在一点:两个单体只有一个串联中点。电压采集只需要两路,均衡也只需要两条支路,一支跨在低边单体两端,一支跨在高边单体两端。正因为只有两条支路,硬件开销和控制逻辑都可以做得非常精简,完全没必要上专用的电池管理AFE芯片,一颗带ADC的低功耗MCU加一颗前端电源管理芯片就能解决。
另外一个特殊性是:2S电池组的中点电压在3V到4.2V之间浮动,和电池组负极地的电位差始终存在。这意味着高边单体的均衡支路和采样支路都要以中点为参考,而控制高边开关的GPIO却以电池负极为参考地,这里就埋下了驱动电平的坑,后面硬件那节专门讲。
2. 架构分工:MP2642GR-Z负责管电,PIC24F16KA102负责管脑
2.1 MP2642GR-Z在系统中的角色
先明确分工。在这套方案里,MP2642GR-Z不是均衡芯片,它的定位是前端电源管理:负责电池组的充电通路控制、输入保护、以及充电状态的上报。说得直白一点,它决定“电怎么进电池”,而PIC24F16KA102决定“两节电池怎么配合”。两者通过I2C总线通信,MCU可以读取前端管理芯片的充电状态、故障标志,也可以通过控制寄存器去限制或终止充电过程。
这条链路的关键在于边界划分。均衡动作需要保证电池组处于相对可控的状态,如果前端充电管理芯片能让MCU清楚地知道当前是快充、慢充、浮充还是故障,均衡逻辑就能选择在合适的时机介入。否则MCU自己死盯着电压盲目均衡,很可能出现前端一边在充电、后端一边在放电的拉锯局面。实际做下来,I2C读状态的机制哪怕只是用来做“充电中禁止均衡”这一个条件,都值回票价了。
没有前端芯片的话,MCU的GPIO直接硬开关充电通路也能跑,但那等于把充电管理、保护限流、状态检测全部塞进一颗MCU的软件里,开发量和风险都不是一个量级。更愿意把前端芯片当成一个黑盒电源管家,MCU只做决策,不碰功率路径。
2.2 PIC24F16KA102的核心优势
选PIC24F16KA102当控制核心,最重要的原因是它的低功耗特性与ADC资源。备用电源和储能设备的待机功耗是被严格考核的。这颗MCU的深度睡眠电流可以压到几百纳安级别,均衡系统平时根本不需要工作,只需要定时唤醒采一次电压、对比一次压差,其他时间全睡,这对整机待机电流预算非常关键。
其次是外设够用且精简。它内部自带多通道10位ADC,两路单体电压的分压信号可以直接接进去;带I2C,能和MP2642GR-Z对接;有若干GPIO用来控制两个均衡开关和状态指示。不需要上高成本、高功耗的通用平台,一颗16位小芯片就把活全干了。实际工程里,一般还会把定时器当作唤醒源,以固定周期比如60秒做一轮检测,平时就停在深度睡眠状态。
当然10位ADC的分辨率摆在那里,满量程3.3V下每LSB约3.2mV,直接作为均衡判据会有点吃力,所以采样前端的分压比和参考电压选择必须认真对待,这点在硬件节展开说。
2.3 为什么这个级别选被动均衡
均衡方案无非被动和主动两种。被动均衡就是把多出来的能量用电阻耗散掉,电路简单可靠,控制策略透明;主动均衡是把能量从高电压单体搬给低电压单体,效率高,但需要电感或电容储能、开关矩阵和复杂的闭环算法,成本明显高一个档次。对2S这种单点结构,主动均衡的增益低得可怜。
| 对比项 | 被动均衡 | 主动均衡 |
|---|---|---|
| 电路复杂度 | 电阻加开关,简单 | 需要储能元件和开关矩阵 |
| 控制难度 | 阈值判断加状态机 | 需要闭环能量转移算法 |
| 成本 | 低 | 明显高 |
| 适用场景 | 中小容量、低串数 | 大容量、高压平台、对效率敏感 |
| 2S系统收益 | 完全够用 | 收益不明显 |
假设两节单体的等效容量差是200mAh,用200mA电流均衡,理论时间只要1小时,加上极化回弹实际2小时左右;这200mAh对应的能量不论是主动还是被动处理,折算到使用成本上都是零头。被动均衡花掉的是时间,主动均衡花掉的是板面、器件和开发周期。在储能和备用电源这种以可靠性和低成本为导向的场景里,被动均衡是工程上的合理选择。
实际设计被动均衡时还要注意一条原则:均衡电流宁可小一点、持续久一点,也不要为追求快速均衡而把放电电阻功率堆得很大,后面从热设计角度给具体算例。
3. 硬件设计里的两个关键问题:中点电压采样和高边均衡驱动
3.1 两路电压采样的精度预算
先看采样电路。两个单体的电压,一个在低边直接对地,一个在高边需要求差。最简单经济的做法是对中点电压和总电压各做一个分压,分别送进MCU的两个ADC通道。中点电压直接就是低边单体电压;总电压减去中点电压才是高边单体电压。省掉一个差分放大器,代价是高边单体电压的误差是两路采样的误差之和。
具体算一下精度预算。MCU的ADC是10位,参考电压如果用内部参考,典型精度在2%到3%量级,对20mV的均衡阈值判断来说完全不够。我的做法是外接一颗高精度基准,或直接采用低噪声3.3V LDO输出作为VREF,然后做两点软件校准。分压电阻建议选0.1%精度、25ppm/℃温漂的起码级别,低成本碳膜电阻在温度漂移下会让采样结果比真实压差还大,均衡纯属帮倒忙。
还有一个容易被忽略的点:均衡支路导通的时候,被均衡单体的端电压会因为内阻压降而变化,所以ADC采样和均衡开关必须互斥。采样时关均衡,均衡时不做判定。等均衡结束几十毫秒再采,等电压稳定了再判断是否继续均衡,这个时序要在软件里固化下来。
3.2 均衡开关放在哪:高边支路的驱动陷阱
在真正画均衡支路之前,最好先确认MP2642GR-Z这颗前端管理芯片的均衡控制是内部集成的还是需要外部MOS。下面讲的外部支路方案是通用做法,就算芯片内部带开关,这套电平逻辑和选型思路也照样适用。
这是整套硬件里最容易翻车的地方。低边单体的均衡支路很简单:放电电阻一头接中点,一头接N-MOS漏极,MOS源极接地,栅极由MCU GPIO直接驱动。导通时电流从单体正极经过电阻和MOS回到单体负极,一个标准的低边开关。
高边单体就不一样。如果把N-MOS也放在低边逻辑上,源极就要接中点,栅极驱动电压必须以中点为参考,而MCU的GPIO是相对电池组负极输出0到3.3V,当中点电压抬到4V以上时,GPIO高电平根本到不了MOS需要的栅源电压。很多人把这一节接线照抄低边,结果均衡死活不动作,就是栽在这里。
推荐的方案是高边支路用P-MOS做开关,源极接电池组正极,漏极接放电电阻到中点。P-MOS的驱动逻辑正好反着来:栅极通过一个上拉电阻顶到正极电压,需要导通时由MCU GPIO经过三极管把栅极拉低。这样栅源电压由正极和中点之间的压差决定,P-MOS的Vgs(th)一般只有1到2V,压差完全够用。控制信号的参考地也不需要额外电平位移,逻辑上清晰很多。
除了MOS类型,均衡支路的开关位置也决定安全性。放电电阻串在开关一侧而不是直接跨电池两端,即使MOS击穿或栅极被误驱动,电阻始终限制着放电电流,不会出现直接把电池短路的极端情况。
3.3 放电电阻与散热裕量计算
均衡电流取多少,按经验通常选0.05C到0.1C之间,既能在一两天内完成压差收敛,又不至于让电池局部发热量过大。以常见的单体标称电压3.7V左右、均衡电流100mA为例:放电回路的总电阻需要3.7V除以0.1A,约37Ω,取标准电阻39Ω,实际电流约95mA。功率按最高单体电压4.2V算,P等于U方除以R,4.2乘4.2除以39,约0.45W。电阻选型至少要给1.5到2倍裕量,一个1W的贴片电阻在均衡持续几十分钟到几小时的情况下,表面温度能到60℃到70℃,如果在密闭机壳里还要再保守一点。
均衡时长也要反过来估算。两节电池的容量差如果对应到200mAh,按95mA均衡电流,理论收敛时间是200mAh除以95mA,约2.1小时。实际因为极化效应和电压回弹,往往要打1.5到2倍的时间余量。所以软件里的超时保护建议给到4到6小时,而不是精确到理论值,防止均衡逻辑因为电池老化导致死循环。
PCB布局上的经验是:均衡电阻附近不要铺大片接地的铜皮,那不是散热而是在给相邻采样线路引入地噪声;电阻焊盘间距要满足爬电距离,密封机壳内高湿环境下,两个焊盘之间长期有压差,间距不够容易打火。埋在放电支路里的MOS管也要关注功耗,100mA级别的均衡电流下,几十毫欧的导通电阻压降几乎可以忽略,但要确认MOS的连续电流余量足够,低温环境下电流还会略高。
4. 均衡逻辑:从电压判据到四态状态机的完整闭环
4.1 电压采集与滤波:一次采样最多信一半
均衡判据的数据基础是单体电压。MCU的ADC一次采样结果只能作为辅助参考,直接拿它做20mV量级的判断会让你怀疑人生。原因在于电池端电压本身就在波动,脉冲负载、充电纹波、接触电阻都会叠加进去,ADC量到的不是真实的静置电动势。
我的处理是三步走。第一步,采样时序上避开充电机和负载切换的瞬间,确保采样前后没有大电流事件;第二步,连续采10次,去掉最大值和最小值,剩下8次做平均;第三步,针对静置场景再做一次短时平均,比如间隔1秒采一组,连续采5组取平均。这样一套下来,有效分辨率基本能稳定在10mV以内,对于20mV的判据才勉强够用。如果期望更高精度,可以换12位外置ADC,但2S方案里往往不值得。
滤波之后别忘了死区。电压差小于5mV就当作0,避免在浮充环境下因为噪声在阈值附近来回抖动,让均衡开关反复开合。这个细节对MOS的开关寿命和电源稳定性都有保护意义。
4.2 判据设计与滞回窗口
均衡判据不能只有一个阈值。最基础的版本是:两节单体电压差ΔV大于开启阈值就启动均衡,小于关闭阈值就停止。但只有这一层的话,系统会在阈值附近震荡。比如开启阈值20mV,因为均衡过程中电池极化电压变化,ΔV在18mV到22mV之间抖动,均衡就会反复启停,每次启停都会带来额外损耗和开关应力。
正确做法是拉开两个阈值,形成滞回。我的参数一般是:开启阈值20mV,停止阈值8mV。均衡启动后,只有当压差真正回落到8mV以内才停止;停止后,如果压差又爬升到20mV以上才重新启动。中间这一段被称作滞回窗口,能吸收噪声与极化造成的摆动。
这里还要考虑均衡电流的大小对压差测量的影响。均衡启动后,被放电的单体端电压会略低于开路电动势,看起来压差反而减小了,停止后电池电压又会回弹。所以在状态机里,判定停止用的ΔV必须是均衡关闭后重新采样得到的值,而不是均衡进行中测到的值。我见过多个方案在这个点上翻车:均衡了半天,电压数据一直在变,开关反复切换,电池却始终没被真正拉平。
4.3 均衡状态机的四个状态与迁移条件
软件层面的核心是一个四态状态机:IDLE、MEASURE、BALANCE、RECOVER。IDLE是默认态,MCU深度睡眠,定时器周期性唤醒后进入MEASURE。MEASURE态做完整的电压采集和滤波,计算出ΔV以后判断:大于开启阈值且处于允许均衡的状态,进入BALANCE;否则回到IDLE继续睡。
BALANCE态里,均衡开关保持导通,但并不是什么都不做。一般会在均衡中每5秒周期性地短暂断开均衡、采样一次两个单体电压,用来评估压差变化趋势;这个趋势一方面用来做超时判断,另一方面用来提前结束均衡,避免出现过放。等到关闭均衡后的电压差小于停止阈值,进入RECOVER态。
RECOVER态负责让电池组静置恢复,消除极化电压,一般持续1到2分钟,之后再回到MEASURE态重新评估。引入RECOVER这个中介态是调试时的经验总结。早期版本BALANCE直接跳回MEASURE,结果均衡刚关掉就采样,电池极化电压还在回弹,ΔV显示还没到停止条件,又立刻进入BALANCE,形成半小时以上的虚假均衡循环。
4.4 均衡时机的选择:静置消极化,末期补容量
光有状态机还不够,还要回答一个问题:什么时候允许均衡介入。充电过程中均衡和放电过程中均衡都有副作用。充电时电池端电压叠加上极化电压,判据失真;放电时均衡电阻抢走部分放电电流,可能触发保护板的过流判断。所以策略是把均衡窗口压缩到两个场景。
第一个场景是静置。充电完成或系统待机后,等电池充分静置至少30分钟,让极化电压消散,这时测得的单体电压差最能反映真实的容量差,均衡效率最高。第二个场景是充电末期的小电流阶段。充电电流已经很小、极化程度比较低,此时对压差做微调,可以保证两节电池同时被冲到各自的满电截止电压,避免高容量单体长期充不满。
实现上,这两个场景对应到MP2642GR-Z上报的状态上。MCU读到的状态如果是充电结束或者待机,就放行均衡;如果是充电中且电流大于设定值,就只做检测不动作。这么设计的核心逻辑是:均衡的本质是“纠正不一致”,而不是“对抗使用状态”。让均衡和充放电主流程抢资源,结果一定两败俱伤。
5. 实测调试中的典型问题:极化电压、电流表骗局与热失控隐患
5.1 刚充完电测的压差是假象
调试这套系统时最容易看到的“灵异现象”是:充电刚结束,两节电池电压差显示300mV,均衡开了几小时,压差纹丝不动。原因在极化电压。充电结束后电池内部离子浓度梯度还没有恢复,表面浓度高导致端电压虚高,而这个虚高电压和电量差没有线性关系。如果这时启动均衡,均衡电阻放掉的是极化产生的表面电荷,停均衡后电压马上就弹回来。
踩过这个坑以后定了一条死规矩:任何均衡启动前,先看充电管理芯片的状态,确认已经离开充电流程至少30分钟,或者电池静置电压变化率小于每分钟10mV,才认定电压数据可信。尤其是备用电源场景,浮充持续很久,电池组的极化状态和普通充电还不一样,静置时间要更长。
5.2 串联电流表带来的读数偏差
均衡电流的验证也有讲究。直接把万用表串联进均衡放电回路读电流,会引入接触电阻和线阻,这部分阻值虽然只有几十毫欧,但对本来就只有几十欧的放电回路来说,足以让电流读数比理论值低百分之十。更麻烦的是,串联点位于高边单体回路时,电流表的压降会被叠加到电池端电压上,造成电压测量系统的参考电位偏移。
推荐的验证办法是用电流探头夹在均衡电阻引出线上,或者更直观地测电阻两端压降再除以标称阻值。电阻标称值用万用表先实测一遍,阻值偏差记录下来,再把压降除实际阻值,这样得到的就是真实均衡电流。不要迷信标称值和软件里的理论值,贴片电阻的精度和温度效应都会让实际值和计算值对不上。
5.3 均衡电阻的温漂与热设计隐患
被动均衡本质上是把电能转换成热量。2S这种小系统均衡功率不大,但均衡时间可以很长。用0.45W功率的电阻长时间工作,如果不留裕量,电阻表面温度上升导致阻值漂移,均衡电流会随温度变化,整个收敛过程变得不可预测。实际踩过的是用半瓦电阻跑满功率,半小时后测电阻阻值已经比标称值高了十几个百分点。
热设计隐患更隐蔽:放电电阻贴在PCB上,热量通过铜皮传导到相邻的采样分压电阻,分压电阻温漂又直接反映成ADC读数的漂移。均衡电流越大,采样偏差越大,形成正反馈。排查这类问题最有效的方法是热成像仪扫一遍板子,看均衡电阻周围有没有异常发热的采样元件,有的话就把采样通路拉开距离,或者给均衡电阻加散热焊盘但保持采样走线的净空。
另外一个工程细节:均衡支路的MOS管在长时间导通时虽然功耗小,但启动瞬间栅极上升沿过慢,MOS会短暂工作在放大区,热量集中在管芯里,长期反复开关也有风险。所以驱动电阻和栅极电阻的取值也需要算一下开关时间,不要随手用个10k。
关于这套2S均衡方案,我个人的体会是:真正决定系统成败的往往不是算法复杂不复杂,而是细节做得扎不扎实。采样时序和均衡时序的互斥、状态机里那一个RECOVER态、均衡电阻的温漂管控,每一处都能单拎出来写一段踩坑记录。项目调试的时候,我习惯先在实验板上把压差收敛曲线完整记录下来,确认单调收敛后再优化功耗和时长。顺着这个思路去扩展,你自己搭一版2S均衡板并不会太难,愿你这个项目也一次点亮。