做储能和备用电源的朋友应该都有这样的画面:2S 电池包,两节电芯出厂时电压几乎一样,用上两三个月,压差越来越大。客户问能不能修?其实本质不是电芯坏了,而是整个系统从来没认真做过均衡。最近我整理完手上一个 2S 储能样机的方案,主控用了 PIC18F97J94,均衡器用了 MP2642GR-Z,两者配合下来效果比较扎实,均衡效率、待机功耗和异常保护都比之前那版纯被动均衡方案强不少。这篇文章把设计思路完整复盘一遍,从“为什么要做主动均衡”说到“采样链路怎么排雷”,适合正在做 2S 电池包、户外电源或者小型备用电源的嵌入式电源工程师参考。
1. 为什么2S电池也逃不过分配不均这件事
1.1 两节电芯之间到底差在哪里
很多人觉得 2S 电池只有两节串联,出厂都是配好的,怎么还会失衡?实际上串联电池组的失配问题不是“概率小”,而是“必然发生”,只是时间快慢问题。
我这边处理过不少储能样机的售后反馈,拆开电池包逐节测过端电压。典型现象是:上位机看整包电压很正常,但两节电芯一个 3.95V、一个 4.02V。客户说“整包电量看着少了很多”,本质就是两节电池一个没充满、另一个已经要过压,整包容量被最短的那块板子卡死了。
造成两节电芯差异的原因是叠加的。制造阶段,同批次电芯的活性物质涂布厚度、电解液注入量不可能完全一致,初始容量差 1%~2% 非常正常。使用阶段,靠近发热元件那节电芯温度高,自放电率也高,一天下来可能比另一节多掉零点几个百分点。几年之后内阻和容量衰减速率不同步,压差会被进一步放大。备用电源系统更吃亏,因为长期浮充待机,自放电差异每天都在积累,如果从不纠正,容量折损就是不可逆的。
1.2 主动均衡不是炫技,是储能场景的刚需
传统做法是给每节电池并一个放电电阻,电压高的那节多放掉一点电,这就是被动均衡。原理简单、成本低、没有控制复杂度,但有两个硬伤。
一是能量浪费。均衡本质是把高电池的多余能量转移出去,被动方案全部转成热量。2S 包还好,如果是几十节串联的大储能柜,被动均衡的发热量和能耗根本不可接受。二是在备用电源场景里被动均衡速度太慢,因为它只能“最差的放电”,不能把能量补给低电压那节。浮充状态下,高电压电池一边被放电电阻拉低,一边又被充电器顶高,长时间处于拉锯状态,电阻持续发热,电芯却永远等不到真正平衡那一点。
MP2642GR-Z 这种主动均衡器解决的就是这个痛点。它的思路是电荷转移:把电压偏高那一节电池的能量通过储能元件搬给电压偏低那节,能量不变成热量,均衡速度也更快。我在样机上实测,100mV 压差大约两个周期就能拉到 20mV 以内,体感非常明显。
2. 器件协同架构:谁决策,谁执行,谁兜底
2.1 MP2642GR-Z 均衡器在系统中的职责
MP2642GR-Z 是一颗专门面向两节串联电池的主动均衡控制芯片,整个均衡主回路基本由它接管。它的工作方式是检测两节电芯电压差,自动判断能量转移方向,然后驱动外部储能电感完成开关切换,将能量从高电压侧转移到低电压侧。
我试用这颗器件的第一感受是外围特别少。芯片内部集成了功率开关管和驱动逻辑,外部只需要储能电感、输入输出电容和少量电阻电容,就能组成完整的均衡单元。和以前用分立 DC-DC 搭均衡电路相比,板面积小了一大截,器件一致性也更好。
控制层面,它保留了对 MCU 的接口,使能控制脚可以直接决定整颗均衡器是否参与工作。我通常把这个脚接到 PIC18F97J94 的一个普通 GPIO,通过高低电平选择“允许均衡”和“完全关闭”。这种设计对系统集成很友好:均衡器自己是具备独立工作能力的执行器,不需要 MCU 实时计算占空比、不需要 MCU 处理电流环,MCU 只负责判断“现在要不要均衡、均衡多久”,剩下的开关动作交给硬件闭环完成。
另外值得说的是均衡器的硬件保护。我查过它的手册和实际测试,过流、过压这类基础保护都有。这意味着即使 MCU 策略逻辑出现漏洞,硬件也不会立刻失控,这就是“兜底”的意义。设计中不要让 MCU 承担所有安全责任,均衡器自身有一套硬件防线,系统整体安全性会高一个档次。
2.2 PIC18F97J94 主控的核心职责
PIC18F97J94 在这个系统里扮演大脑角色。它是一颗主打低功耗和丰富模拟外设的 8 位单片机,带 LCD 驱动、USB、12 位 ADC、多路定时器和通信接口,做 2S 电池包的监控主控非常顺手。
它在系统里的核心任务可以拆成四块。第一,实时采集两节电芯电压、整包电压、温度、电流,这是所有策略判断的基础。第二,根据采集结果决定均衡器什么时候开、开多久。第三,管理系统的状态切换,比如静置、充电、放电、故障保护。第四,做人机交互和通信,LCD 显示实时电压,UART/USB 连接上位机,记录均衡历史数据。
低功耗是备用电源特别看重的一点。PIC18F97J94 的 XLP 技术让 MCU 可以在深度睡眠模式下保持极低电流,定时唤醒一次做电压采样。我在这套样机里把采样周期设为 10 秒唤醒一次,均衡关闭状态下整机待机功耗能做到非常低。
它还有一个被低估的优势:大封装带大引脚数。PIC18F97J94 这种百脚级别的 QFP 封装,给硬件设计留了很大的灵活性。电压采样网络、均衡控制线、LCD 数据总线、继电器控制和通信口可以一次布置完,不用像小封装 MCU 那样反复折腾复用冲突。
2.3 为什么把“大脑”和“执行器”分开
有人可能会问:既然 MP2642GR-Z 自己就能检测压差、执行均衡,那还要 MCU 干什么?直接在电池包上装一颗均衡器让它独立工作不就行了?
从纯均衡功能看,确实可以。但储能和备用电源系统不是一个单纯的“电池均衡器”,它还要和充电器配合、要上报健康状态、要处理各种边界工况。举个例子:充电阶段电池存在极化电压,端电压高低不一定代表真实荷电状态差异,这时候盲目均衡反而会给系统帮倒忙;又如低温环境,均衡效率很低,根本应该禁止。这些判断需要逻辑和策略,而不是单纯的电压比较。
所以我采用了“智能调度 + 硬件执行”的分层架构。MCU 是调度员,负责判断时机、设置规则、处理异常;MP2642GR-Z 是现场操作员,负责执行能量转移的具体动作。两者之间只留几条控制线,职责界限清楚。这样做的附加好处是:如果后续要换更高端的均衡器芯片,软件接口基本不用重写,扩展性非常好。
3. 硬件设计的关键细节与参数选择
3.1 均衡电流与储能元件参数怎么定
主动均衡的效率并不取决于“压差是否存在”,而取决于能搬多少电荷。均衡电流是首先要确定的指标。
对于 2S 储能系统,电池容量一般在 5Ah~50Ah,均衡电流选 100mA~500mA 是一个合理的区间。电流太小,修正速度太慢,一天搬不了多少电量;电流太大,开关损耗上升、电感体积和发热也上来,对备用电源这种长期待机的系统不划算。
可以做个简单估算。假设两节电芯因为自放电差异每天产生 0.2% SOC 的偏差,10Ah 电池包对应约 20mAh 电量。如果均衡电流是 100mA,每天只需要工作约 12 分钟就能把失配电荷搬回来。当然实际过程还有电压差的非线性响应,但量级上,100mA 对 10Ah 级电池包完全够用,没必要盲目追求大电流。
储能电感的选择也跟着均衡电流走。我在这块样机上用了标称饱和电流 1.5A 以上的功率电感,实际峰值均衡电流被限制在 500mA 以内,留了三倍裕量。电感值则根据开关频率和电压差综合选择,盲目加大电感值会拖慢电流建立速度,过小又会导致纹波大。样机上 10µH~22µH 的区间比较合适,具体值要按最终方案实测后固化。
3.2 电压采样链路是均衡决策的生命线
均衡器做得再好,如果 MCU “看错”了电压,策略就是错的。我在项目里反复强调一句话:均衡不准确,先查采样电路。
电压采样最容易踩的坑是分压电阻精度。两节电芯分别用两组分压电阻接到 MCU 的 ADC 引脚,如果两组电阻精度不同,采集出的电压差可能比真实值偏大或偏小。解决办法很简单:全部选 1% 精度电阻,并且两路用同批次,温漂特性一致。更讲究一点的做法是使用精密电阻网络,把分压比的一致性从批次层面统一起来。
第二坑是 ADC 参考电压。MCU 内部的参考电压会随温度和电源电压变化,作为均衡判断依据不够稳。PIC18F97J94 支持内部 Vref 配置,但如果对绝对电压精度有要求,外接一颗精密基准源更稳妥。我的做法是每个采样周期先读基准电压做自校正,采样结果乘一个校正系数,精度可以提升到几毫伏以内。
第三坑是采样噪声。ADC 输入引脚高阻,很容易耦合开关噪声。硬件上,每组采样线进来先过一个 RC 滤波,电阻 100Ω 加电容 0.1µF,截止频率约 16kHz,能把高频毛刺基本滤掉。软件上,再对连续 5 次采样做排序取中值,去掉最大和最小再平均,双重滤波后电压读数非常稳定。
3.3 PCB布局与那几个容易踩的坑
PCB 布局直接决定均衡器性能的上限。主动均衡是一个快速的开关电路,如果布局不好,EMI、压降、温漂全都会冒出来。
均衡功率回路要尽量短。MP2642GR-Z 和储能电感之间的走线要短而粗,功率回路面积越小,寄生电感越低,开关振铃越轻。我见过有同事把电感放在板子另一侧,走线穿过好几个过孔,均衡电流波形上全是一圈圈毛刺,温度也偏高。改版后把电感贴着芯片放,波形立刻干净了。
采样线要有意识地“躲开”功率线。电压采样走线要细、要短,不要和电感下面平行走线,也不要和均衡功率线共用较长一段铜皮。采样点要从电池连接端子处直接引出,而不是从主功率走线中间拉,否则均衡电流在铜箔上的压降会直接叠加进采样电压,几十毫伏的误差一下就出来了。
还有一个很容易忽略的地方是控制脚的上电默认状态。MCU 复位期间 GPIO 是高阻,如果均衡器使能脚高电平有效,板子从 USB 口取电瞬间,均衡器可能被随机电平触发一次。解法很简单:均衡器使能脚对地加一个 10kΩ 下拉电阻,并确保 MCU 启动代码最先一步把该脚拉低,然后再初始化其他外设。
注意:均衡器功率地的处理也别马虎。功率地和 MCU 数字地之间要单点连接,位置选在主电容回流点附近,避免开关电流在公共地阻抗上产生压降,把 MCU 的 ADC 参考地拉偏。
4. 软件调度与均衡策略的实现
4.1 先定义“什么时候不能均衡”
写均衡代码最忌讳一上来就写“何时开启”。我在实际项目里发现,先搞清楚“何时禁止”更重要。
第一种情况是带载状态下禁止均衡。电池在充电或放电时,端电压受电流和极化电压影响很大,两节电芯的内阻又不完全一致,此时看到 30mV 压差很可能只是动态偏差,并不是真实荷电状态差异。这时候强行均衡,轻则效率极低,重则把电池越拉越偏。
第二种情况是静置时间不足时禁止均衡。断开负载后电芯电压会有一个回弹过程,没有稳定之前读取的压差不代表真实 OCV。我一般要求静置至少 30 分钟后才允许均衡,更严格的做法是监测电压漂移速率,当两节电芯电压变化率都小于 1mV/min 时认为进入稳定状态。
第三种情况是低温禁止均衡。电芯低于 0°C 时,析锂风险和电解液电导率下降都会让均衡失去意义。我在代码里直接做了温度门槛:低于 5°C 只允许涓流均衡或者完全不均衡,温度回上来再恢复。
第四种情况是任何故障状态,比如采样通道异常、均衡器反馈异常、单体过压,立即停止均衡并记录故障代码。这些禁止条件的优先级一定是高于启动条件的,是先决条件。
4.2 阈值、迟滞和结束条件怎么选
均衡阈值是策略定义的直接体现。阈值设置太紧,均衡器频繁启动,白白增加开关损耗;太松,又起不到及时修正的效果。
以三元锂电芯为例,我推荐的启动阈值是两节 OCV 压差超过 30mV 开启均衡,停止阈值是压差回到 5mV 以内。中间为什么要留 25mV 的窗口?因为如果没有迟滞,电池电压在临界点上下轻微波动就会让均衡器反复启停,每次启停都有瞬间冲击和损耗,长期看对器件和电芯都不友好。磷酸铁锂平台的电压平台更平缓,压差阈值可以收紧到 20mV 启动、5mV 停止,但前提是采样精度足够高,否则容易误判。
均衡持续时间也必须有上限。我习惯设一个最大均衡时间,比如 2 小时。到时不管压差有没有达标都先停,停 1 小时让电池稳定,重新检查一次。这个设计是为了防止异常情况,比如电芯真的出问题导致压差永远无法收敛,系统不能因为这个死循环。
还有一个细节:均衡不应该在一天内多次重复。备用电源系统历史数据表明,自放电差异是缓慢变化的,每天做一个均衡周期即可。代码里可以做“每天最多均衡 2 次”的计数,避免异常状态下反复消耗均衡器寿命。
4.3 状态机与异常保护
均衡策略用一个简单的状态机落地,比到处写 if 要清晰得多。我的状态机包含四个核心状态:
- IDLE(空闲):均衡器关闭,系统每 10 秒采样一次电压温度,不做任何决策。
- STABLE_CHECK(稳定性检查):检测到压差超阈值后,进入此状态,要求静置时间超过 30 分钟,电压漂移率达标,温度正常。
- BALANCE(均衡中):拉高均衡器使能脚,让 MP2642GR-Z 开始工作,同时保持电压监测、温度监测和均衡时间计时。
- ALERT(异常告警):压差长期不下降、温度超限或通信异常,停均衡并记录故障。
BALANCE 状态里的监控逻辑值得多说一句。均衡器工作期间,MCU 不能只是“开着”。每 10 秒我要读一次两节电芯电压和温度,检查压差是否按预期下降。如果连续 20 分钟压差没有任何改善,就要怀疑均衡器是否失效,主动进入 ALERT,而不是让它在故障状态下持续工作。这个检查逻辑相当于给硬件加了一道“软件看门狗”,配合芯片自身的硬件保护,从两个维度把安全性拉满。
5. 实测问题与排查经验速查
5.1 均衡启动后压差不降反升
这是我调试过程中遇到最反直觉的一个现象。均衡器明明开启,压差不但没缩小,反而从 30mV 涨到 45mV。
排查过程先排除均衡器本身,用万用表直接测量电池端电压,结果 MCU 显示的电压和万用表对不上,偏差有十几毫伏。问题出在采样点选择上。原版 PCB 为了布线方便,把采样线接到了电池连接线的 PCB 末端而不是电芯端子直接出口,均衡电流在那一小段线缆上的压降全部叠加进了采样值。均衡器越卖力工作,电流越大,采样偏差越大,看起来就是“越均衡越差”。
解决方案是把采样点直接改到电芯电压引出端,并且将采样线独立走线到 MCU,不经过功率回路。改版后现象立刻消失。这条经验我后来当作硬件设计规范:采样点和激励点永远分离,也就是常说的开尔文接法。
5.2 均衡电流实际和设计值差很多
按选型计算,均衡电流应该能到 300mA,但示波器实测开关管电流只有一半不到。
第一嫌疑是电感饱和。如果电感额定电流比峰值电流小,电感量会在工作点附近迅速下降,电流还没升上去就被卡住了,表现为波形削顶。更换大电流电感后基本正常。
第二个嫌疑是电池连接点电阻偏大。特别是用了螺栓连接电池端子时,氧化层会导致接触电阻升高,均衡回路总阻抗变大,电流上不去。这个不仅要查线缆,还要查 PCB 走线和端子镀层。用高精度毫欧表压降法逐段排查,比盲目加均衡电流有效得多。
5.3 备用电源待机功耗压不下去
储能产品客户对自耗电特别敏感,谁也不想一款备用电源放三个月就没电了。均衡器即使在不工作状态,只要一直接在主回路上,也会有静态消耗。
解决思路是给均衡器供电加一个负载开关。MCU 在深度睡眠前切断均衡器供电,只有启动均衡前才恢复。这样待机功耗几乎被压到只剩 MCU 睡眠电流和采样分压网络的电阻漏电流。另一个容易被忽略的点是采样分压电阻的值不要选太小,几 MΩ 可以显著降低常驻漏电流,但要结合 ADC 输入阻抗和滤波电容充值时间综合考虑。
5.4 调试工具与测试清单
均衡系统调试不能靠运气。我用的核心工具是三样:双路可调电源替代真实电池组做功能验证、精密电压表校准采样链路、示波器看均衡器开关波形。
用双路电源模拟电池组的好处是可以人为制造任意压差,比如把第一路设 4.05V、第二路设 3.95V,瞬间制造 100mV 压差,然后观察均衡器是否正确开启、电流方向是否符合预期。这样每一轮改完软件都能快速回归,不用每次拆电池包。
下面是我在这类项目中沉淀下来的一份基础测试清单:
| 测试项 | 测试方法 | 通过标准 |
|---|---|---|
| 上电默认状态 | 观察 MCU 复位期间均衡器使能脚电平 | 必须为低,不能有随机均衡动作 |
| 采样精度 | 精密电压表与 MCU 显示对比 | 满量程偏差不超过 5mV |
| 均衡方向 | 人为设置 100mV 压差,观察电流方向 | 从高电压电芯流入低电压电芯 |
| 均衡收敛 | 记录压差恢复时间 | 2 小时内压差降到 20mV 以内 |
| 故障注入 | 断开一路采样线,观察状态机 | 进入 ALERT,均衡停止 |
| 待机功耗 | 整机进入睡眠后测电源电流 | 满足规格目标 |
| 温度保护 | 热风枪加热电池位置 | 超温后均衡禁止 |
调试过程中最有价值的经验是:先用双路电源把策略逻辑全部跑通,再换上真实电芯。这样做有一个非常大的好处,就是故障定位非常清晰。电源模拟阶段出的问题一定是软件逻辑或采样链路问题;换真实电芯后出现的问题才可能和电池特性相关。一次只引入一个变量,排查思路不容易乱。
最后再分享一个项目中的小教训。最初版本我把“均衡完成”的标准定得太理想化,要求压差小于 2mV 才算完成。结果发现电芯电压受温度波动和极化影响,天然会在几个毫伏范围内浮动,均衡器反复启停,还不如不均衡。后来我把完成阈值放宽到 5mV,并加入 10 分钟观察窗口,确认压差稳定后才退出 BALANCE 状态。均衡效果没有变差,系统反而安静了很多。做均衡控制,有时候“够用、稳定、不折腾”比“极致精确”更重要。