做电池供电类产品的人,基本都遇到过这种尴尬:两节串联的锂电池,前期出厂明明做过分选配对,循环几十次之后,两节电池的电压和可用电量就开始分道扬镳。我在做某储能备电样机时也栽在这上面——整机欠压保护阈值设得再精确,只要两节电芯电压不一致,放电到后端永远有一节先触底,系统被迫整体停机,实际放出的电量远低于标称容量。后来改用 MP2642GR-Z 配合 PIC18F96J65 搭了一套主动均衡方案,把均衡从“电阻烧热量”换成“能量搬运”,电压差从刚上电的 120mV 压到了 10mV 以内,整个备电系统的可用容量和循环寿命都明显改善。这篇文章把选型依据、硬件拓扑、控制逻辑以及实测调参过程完整写一遍,适合正在做储能、UPS 备电、便携电源这类 2S 电池方案的硬件工程师参考。
1. 2S 电池不均衡:备电系统里最容易被忽略的损耗源
1.1 三组数据说明差异从哪里来
串联电池的不均衡,不是一个“有没有”的问题,而是“什么时候出现”的问题。出厂时即使两节电芯电压完全一致,只要开始充放电,差异就会逐渐积累。
差异来源主要有三个。第一是容量差异。即使是同一批次生产的电池,容量也不可能完全一样,新电池容量差通常有 1%~2%,老化之后会扩大到 5% 以上。这意味着充电时小容量电芯先充满,放电时它又先放空,系统要迁就最弱的一节。第二是自放电率差异。锂电池的自放电率受材料和工艺影响,同一批电芯在常温下静置一个月,电压差有时能拉开 30mV 以上。第三是温度场差异。在储能和备电系统里,电池通常紧密排列,靠近发热元件的一节温度更高,内阻更小,分到的电流也就更多,这会进一步拉大老化速度。
打个比方,两节串联电池就像一个两人三足比赛,其中一个人腿长不同、体力不同、穿着也不同,跑得越久,配合就越别扭。系统层面看到的只是一个总电压,但真正决定下限的,是其中较弱的那一节。
1.2 不均衡造成的实际损失
不均衡最直接的影响是可用容量缩水。两节 2.5Ah 的电池串联,容量分别是 2.5Ah 和 2.4Ah,理论上总容量受限于 2.4Ah,但实际往往连 2.2Ah 都放不出来。原因在于放电末端,电压低的那节会先触发欠压保护,此时另一节可能还有 20% 以上的电量,这部分能量全部浪费。
第二个影响是过充和过放风险。充电时,容量小的一节先到达截止电压,如果继续充电,它就会被过充,存在安全隐患;放电时,容量小的一节先进入过放区,长期如此会加速容量衰减,形成一个越不均衡越容易衰减、越衰减越不均衡的恶性循环。对备用电源来说,这个后果更明显——市电正常时电池长期浮充,不均衡会被浮充电压掩盖;一旦真正停电放电,原本设计的 2 小时备电时间可能缩短到 1.5 小时,这在关键负载场景里是完全不能接受的。
1.3 被动均衡为什么不够用
传统方案是在每节电池旁边并联一个放电电阻,电压高的那节通过电阻持续放电,等待其他电芯电压跟上来。这个方案结构简单,成本低,但有两个硬伤。
一是能量被白白烧掉。均衡电流越大,电阻发热越严重,1A 的均衡电流在 0.1 欧姆电阻上就是 0.1W 的功耗,做到 0.5W 以上就要考虑散热。二是速度慢。充电末端能用的均衡窗口通常只有十几分钟,电阻均衡能转移的电量有限,如果两节电池差异超过 5%,被动均衡往往来不及把电压拉齐就已经进入保护状态。
我用实际数据算过一笔账:一节电池比另一节高 100mV,电芯内阻约 30mΩ,被动均衡以 0.5A 电流放电,每小时只能拉平 0.5AH 的电量差,考虑到充电窗口的时间限制,实际能弥补的差异非常有限。而主动均衡本质上是把能量从高电压电芯搬到低电压电芯,不浪费,速度也快得多。
| 对比项 | 被动均衡 | 主动均衡 |
|---|---|---|
| 能量去向 | 电阻发热损耗 | 转移到低电压电芯 |
| 均衡电流 | 通常 0.1~0.5A | 0.5~2A |
| 均衡效率 | 接近 0% | 80%~90% |
| 电路复杂度 | 简单 | 中等 |
| 对寿命影响 | 加剧热老化 | 基本无热负担 |
这也是我在这个项目里直接放弃被动均衡、转向主动均衡的根本原因。
2. 为什么选 MP2642GR-Z 搭主动均衡:拓扑与器件取舍
2.1 主动均衡的三种主流拓扑
主动均衡方案常见的有三种:电容飞跨式、电感式和变压器式。
电容飞跨式通过开关阵列把电容并到电压较高的电芯上充电,再切换到电压较低的电芯放电。结构简单,但电荷转移量小,适合小电流、慢均衡场景,而且开关数量多,控制复杂。
变压器式均衡效率高,能从任意电芯向整组转移能量,适合 4S 以上的电池组,但在 2S 系统里有点“杀鸡用牛刀”,变压器设计、漏感处理和磁复位电路都增加不少工作量。
电感式均衡本质上是一个双向升降压电路,用单个功率电感在两只电芯之间来回搬运能量。它兼顾了效率、成本和控制复杂度,在 2S 应用里是最实用的选择。我最终选择电感式拓扑,配合 MP2642GR-Z 来完成功率级。
2.2 MP2642GR-Z 在电路中的角色
MP2642GR-Z 在我的方案里不是一颗传统意义上的电池管理芯片,而是作为 DC-DC 功率级的核心,负责完成升降压转换和能量转移。它的优势在于支持升降压工作模式,输入电压既可以高于输出,也可以低于输出,这正好契合两节串联电芯之间电压随时变化的特点。
具体电路拓扑上,我用了典型的同步升降压结构:四个开关管组成 H 桥,中间接功率电感,电感和两个电芯之间通过开关管连接。如果电芯 1 电压高于电芯 2,电路工作在下管同步整流升压模式,把电芯 1 的能量泵入电芯 2;反过来,如果电芯 2 电压偏高,则切换成相反的路径。
实际均衡电流我设在 0.8A 到 1A 之间。这样既能在几分钟内搬运可观的电量,又不会因为电流过大导致 PCB 走线和电感发热严重。MP2642GR-Z 之所以合适,正是因为它在 1A 电流附近有不错的效率,而且外部补偿网络可以按应用灵活调节,不需要为了均衡需求去改板。
2.3 功率级参数计算与器件选型
功率级设计的关键是电感、采样电阻和开关管。
电感的选择依据是纹波电流。我的目标是纹波系数 30% 左右,已知开关频率约 400kHz,输入电压约 7.4V(2S 满电),输出电压约 3.7V,均衡电流 1A,可以估算出电感量约 22uH。实际我选了 33uH,因为电感量大一些能进一步降低纹波,代价是动态响应稍慢,但在均衡场景不存在快速动态加载,动态响应不是关键指标。
采样电阻用于电流反馈,阻值要兼顾检测精度和功率损耗。我选了 10mΩ 的合金电阻,1A 电流下损耗只有 10mW,同时配合放大器可以做到毫安级的分辨率。开关管方面,选的是低导通内阻的 MOSFET,导通电阻控制在 20mΩ 以内,四个管子组合起来,整个功率级的导通损耗就能控制在 2% 以下。
我还特别注意了死区时间设置。同步整流电路的死区如果设置不当,在电感电流换向时会出现直通,轻则效率下降,重则烧毁开关管。这颗料支持外部调死区,我实测调到 50ns 左右时波形最干净,既没有明显直通,也没有因为死区过大导致体二极管导通损耗升高。
2.4 为什么不用专用均衡芯片
项目初期我也评估过专用的主动均衡芯片。这类芯片确实做到了集成度高、外围简单,但有几个问题让我最终放弃。
第一是均衡策略不透明。专用芯片的均衡逻辑一般是固定的电压判据,用户很难在里面加入温度补偿、容量估算、运行时间控制等自定义逻辑。第二是参数难调。均衡电流、均衡阈值、回差这些参数往往通过外部电阻设定,想要在运行中动态调整基本不可能。第三是灵活性差。储能备电系统对低功耗、休眠唤醒、与上位机联动都有要求,专用芯片在这些维度上的可编程性远不如自己用 MCU 控制来得直接。
PIC18F96J65 在这里承担了所有决策和控制工作,让我可以把均衡算法完全掌握在自己手里,后续做策略升级也只需要改软件。
3. PIC18F96J65 端的设计:从 ADC 采样到均衡状态机
3.1 电压采集链路与校正
均衡控制最基础的就是电压采集精度。如果电压采样误差就有 20mV,那么均衡阈值设得再精细都是空谈。
我在采集链路上用了分压电阻加 RC 滤波加 MCU 内部 ADC 的结构。每节电池对地的电压经过 100k/10k 分压后送到 ADC 引脚,同时在 ADC 引脚对地并联 0.1uF 电容,用于滤除纹波。这个配置下,电芯电压 4.2V 对应 ADC 输入约 0.38V,既在 MCU 的 ADC 量程内,又保留了足够的余量。
ADC 校正也做了一个简单的两点校正。我用精密可调电源分别输出 3.0V 和 4.2V,记录下 MCU 读到的原始 ADC 值,计算偏移和增益系数,然后固化到 Flash 里。实测校正之后,两节电芯的采样误差都能控制在 ±5mV 以内,这个精度已经足够支撑 10mV 级别的均衡判断。
3.2 均衡状态机与回差控制
均衡逻辑本身不复杂,难的是把边界情况处理好。我的状态机分四个状态:空闲、均衡 1→2、均衡 2→1、故障保护。
进入均衡的触发条件是两节电池电压差超过阈值,比如 30mV。但退出条件不能和进入条件设成同一个值,否则会出现临界抖动——电压差在阈值附近反复横跳,继电器和 MOS 频繁开关。我设置了 10mV 的回差,也就是进入条件满足后,要等电压差回落到 10mV 以下才算均衡完成,回到空闲状态。这样在实测中就没再出现过反复切换的问题。
均衡的方向由电压大小决定:哪节电压高,就把能量往哪节送。清晰且不容易出错。
3.3 采样滤波与任务调度
电池电压不是稳定值,放电时电压会持续下降,充电时会有纹波,均衡工作时电感电流也会在电池内阻上产生纹波。如果直接用单次采样值做判断,很容易误触发。
我在程序里做了移动平均滤波,每 10ms 采一次,连续取 16 次平均,相当于 160ms 的滑动窗口。这个时间窗口对均衡控制来说足够快——电压变化通常是秒级甚至分钟级的,160ms 的平均既滤掉了高频噪声,又保留了真实的电压趋势。
这里有个小技巧:移动平均窗口的长度要和系统主要噪声周期错开。如果电感开关频率的纹波是 400kHz,10ms 采一次样本身就已经是充分平均了,没必要再做高速采样。但如果系统存在 50Hz 工频干扰,采样周期最好取 10ms 的整数倍,避免 50Hz 分量混叠进平均值里。这个细节我在实际调试中踩过坑,后面专门讲。
3.4 与备电系统的保护和通信联动
PIC18F96J65 在这个方案里不只是做均衡控制,同时还承担了与主控通信的职责。我用了 I2C 接口把采集到的电芯电压、温度和均衡状态上报给主控制器,主控制器根据上报数据进行充放电管理。
保护逻辑也放在 MCU 端处理。一旦检测到电芯电压超过 4.25V 或者低于 2.5V,立即关断均衡 MOS,并通过中断通知主控制器停止充放电。温度保护方面,我在电感附近和电池表面各放了一个 NTC,温度超过 60°C 时禁止均衡,防止大电流搬运能量导致局部过热。
其实均衡电路必须考虑一个特殊情况:当系统进入待机或休眠时,均衡状态机也要进入低功耗模式。我用的是定时唤醒加外部中断结合的方式,平时 MCU 进入睡眠,只有电压异常或收到主控指令时才唤醒。睡眠电流做到 10uA 以下,对备用电源的待机功耗几乎无影响。
4. 均衡策略与实测数据:阈值怎么定、效果怎么样
4.1 均衡阈值与均衡电流的匹配
均衡阈值不是拍脑袋定的,它和均衡电流、采样精度、电池内阻都有关系。
采样精度决定了你能分辨的最小电压差。本方案采样精度约 ±5mV,那均衡阈值就不能设成 3mV,因为 3mV 的差异可能只是采样噪声。阈值太小,均衡系统会频繁启动,浪费时间也消耗电池循环寿命。阈值太大,均衡作用不明显,电压差已经积累到几十毫伏才启动,搬运电量要多,时间也长。
我的经验是:均衡阈值至少要是采样误差的 3 倍以上。实测中我设定了 30mV 启动阈值,回差 10mV。这个值既能保证均衡有效触发,又不会因为噪声误动。
均衡电流的选择也和阈值有关系。电流越大,搬运效率越高,但电流纹波和损耗也越大。0.8A 的均衡电流在 30mV 电压差下,大约每 10 分钟可以搬运约 0.13Ah 的电量,足够应对常规的老化差异。
4.2 从纯电压均衡到容量补偿均衡
软件运行一段时间后,我发现纯电压均衡有一个局限:它只能保证电压一致,不能保证电量一致。
两节电池容量差异较大时,电压一致不代表电量一致。比如一节电池容量是 2400mAh,另一节是 2550mAh,二者满充电压相同,但如果均衡只按电压判断,放电后期容量小的一节电压会先掉下去,此时即使主动均衡也来不及搬运足够的电量。
考虑加入容量补偿后,我调整了策略:根据放电过程中的电压变化率估算两节电芯的容量差,把容量差转化为一个电压偏置量,叠加到均衡判断中。容量偏小的一节在均衡判断时给予额外保护——如果它是高压电芯,优先放电给另一节;如果它是低压电芯,则减少从另一节获取能量的优先级。这个策略在实测中效果明显,相同工况下放电末端的不均衡度进一步降低。
4.3 关键实测数据:均衡前后对比
在模拟项目 X 的测试平台上,我拿了 10 组电池做了对比测试。每组电池都是经历过 30 次充放电循环的 2S 电池包,初始电压差从 30mV 到 150mV 不等。
4.4 两个实测案例
第一组:某电芯初始电压差 120mV。开启均衡后,以 0.8A 电流搬运能量,约 25 分钟电压差降到 20mV,40 分钟后收敛到 8mV,进入回差区间,均衡自动停止。
第二组:某电芯初始电压差 45mV。开机自动均衡,约 12 分钟就收敛到 10mV 以内。这说明主动均衡处理中等程度的电压差异时,速度是可以接受的。
但实测中也发现了一个有意思的现象:均衡完成后,如果系统继续浮充,两节电池电压差会缓慢回升,大约每小时回升 5mV 左右。这正是自放电率差异在起作用。所以备电系统的均衡策略应该是“长期监测、按需启动”,而不是一次性均衡完就再也不管。我在软件里加了定时触发逻辑:均衡完成后每隔 6 小时自动检查一次电压差,超过阈值就重新启动均衡。
4.5 浮充和高低温场景的处理
浮充场景下,均衡策略需要更保守。浮充时电池电压本就偏高,如果持续均衡,低电压电芯会被充电到超过其浮充上限。我在浮充模式下关断了均衡功能,只做监测,只有进入放电模式或均衡维护窗口时才启动均衡。
高低温场景也需要注意。低温下电池内阻增大,电压波动更大,同一时刻的电压差受极化影响明显,不能反映真实容量差异。我实测在 0°C 环境下,两节一致性很好的电芯在脉冲放电时也能出现 80mV 的瞬时电压差,如果按常温阈值判断,均衡系统会一直在错误方向上工作。解决办法是增加温度补偿系数:温度低于 10°C 时,把均衡启动阈值从 30mV 提升到 80mV,并降低采样滤波的截止频率,只响应长时间、稳定的电压差异。
5. 调试中踩过的坑:PCB 布局、电感啸叫与低功耗细节
5.1 采样地错了,所有数据都白搭
第一次打板回来测试,我发现 ADC 读数在均衡启动瞬间会跳变十几毫伏,电压差判断完全失真。排查了很久,最后发现是采样回路的地线布局出了问题。
功率电路的电感电流在开关瞬间会形成 dI/dt 很大的环路,如果采样分压电阻的参考地靠近了这个大电流环路,地电位就会在采样瞬间被抬高,导致 ADC 读数虚假波动。解决方案是把采样地单独走线,单点接入电池负极端,同时功率环路保持小而紧凑,把高频电流路径限制在一小块铜皮范围内。
这是典型的“地回路干扰”问题。模拟采样精度要求高时,功率地和小信号地必须分区布置,不能图省事直接大面积铺铜了事。
5.2 电感啸叫:不仅仅是响声问题
均衡功能调通后,我听到板子发出轻微的吱吱声,频率大约几千赫兹。一开始以为是正常现象,后来仔细查了频谱,发现这是电感在电流不连续模式下产生的机械振动,频率落在人耳最敏感的区间。
问题出在轻载时的控制模式。当均衡电流降低到某个阈值以下时,MP2642GR-Z 会进入轻载模式,开关频率大幅降低,电感电流变成断续波形,励磁频率正好落在可听范围内。我通过调整反馈环路参数,把最小开关频率限制在 20kHz 以上,同时适当提高了轻载点,让电感工作在连续导通或更高频率的断续模式,啸叫就消失了。
啸叫不只是影响体验,长期机械振动还可能引发电感磁芯松动和参数漂移。
5.3 均衡 MOS 的驱动振荡
在 1A 均衡电流下,我测试 MOS 的 Vgs 波形时发现了严重的振铃,幅度接近 2V,这会导致开关损耗增加,甚至出现误导通。原因是驱动回路的寄生电感和 MOS 输入电容构成了一个欠阻尼的 LC 电路。
解决方法是在驱动电阻上并联一个小电容,形成 RC 慢关断,同时缩短驱动走线、减小回路面积。实测振铃从 2V 压到了 0.4V 以内,开关波形干净利落,均衡效率也提高了约 3 个百分点。
一个有价值的经验:MOS 驱动电阻不是越大越好,也不是越小越好。阻值太大,开关速度变慢,功耗上升;阻值太小,振铃严重,EMI 变差。要根据实际波形反复调整,一般在 4.7Ω 到 22Ω 之间能找到合适的点。
5.4 低功耗待机与均衡的配合
备用电源应用对静态功耗非常敏感。我的设计目标是整机待机电流小于 1mA,其中 MCU 睡眠电流约 10uA,均衡电路完全关断,只有电压监测分压电阻还在工作。
这里遇到一个问题:均衡电路在待机时如果没有完全断电,内部的部分电路会持续消耗电流。我用一颗负载开关把均衡功率级的电源在待机时完全切掉,只有需要均衡时才打开。实测待机功耗降到了 0.2mA 以下,完全满足要求。
另外一个细节是:从待机唤醒到电压稳定,需要等待约 100ms。因为刚上电瞬间,滤波电容还在充电,分压电阻上充满电也需要时间,如果唤醒后立即采样做均衡判断,会读到偏低的电压值,导致误启动。我在代码里加了一个 200ms 的稳定延时,等 ADC 读数稳定后再执行均衡判断逻辑。这个是一个小坑,但也容易踩到。
总结下来,这套由 MP2642GR-Z 和 PIC18F96J65 组成的主动均衡方案,在 2S 储能和备电应用里确实解决了实际问题:均衡速度比被动方案快一个数量级,能耗低,策略灵活可调,而且元器件通用、供应链成熟、成本可控。唯一需要花心思的是 PCB 布局和参数调优,但只要按照功率环路最小化、采样地单点连接、驱动回路低寄生电感的思路去做,整体调试并不算难。如果后续要做 3S 或 4S 方案,拓扑可以级联扩展,控制逻辑也只需要补充多电芯间的能量路由判断,基本框架是通用的。