☰
基于MP2642GR-Z与PIC18F66K40的2S电池主动均衡器设计
2026/10/15 16:54:26 网站建设 项目流程

手头一款 2S 备用电源用了大半年之后,越来越不经用。拆开一测,两个串联的锂电芯一个还在 4.08V,另一个已经掉到 3.62V,容量差肉眼可见。串联充电时两节电流一样,低压那一节永远“吃不饱”,高压那一节还会被往死里顶。这个问题靠充电器解决不了,于是我把 MP2642GR-Z 这颗同步降压芯片和 PIC18F66K40 这颗 8 位 MCU 拼到了一块板上,做了一台两个串联电池单元的主动均衡器。这篇文章就把这套系统从选型、原理、采样逻辑到调试中踩过的坑完整整理出来,给正在做储能、备用电源或 BMS 均衡功能的同行一个可直接参考的方案。方案不需要复杂的变压器,成本可控,适合快速复现。

1. 为什么两节电池串联非要“主动”均衡

1.1 被动均衡的先天短板

被动均衡是很多成品电池保护板默认的做法:检测到某一节电压偏高后,通过一个功率电阻对这只电芯持续放电,把它“烧”到和低电芯差不多。原理简单没错,但放到 2S 备用电源里,问题很明显。

首先是能量浪费。放电电阻把多余的电量全部变成热,备用电源本身对能量密度敏感,每浪费 1Wh,整机待机时间就少一截。其次是发热。我在样机上试过 1A 被动均衡,一个 2W 的贴片电阻表面温度能到 90 多度,贴在两节电芯旁边,这个温度本身就是安全隐患。第三是均衡窗口太窄。被动均衡一般只能在高电压区间工作,比如电芯充到 4.0V 以上才开始动作。但很多失配恰恰发生在放电末期:低压电芯已经跌到 2.9V,高压电芯还在 3.5V,这个区间被动均衡完全帮不上忙——它只能“放电”,不能“充电”。

我在这块板子上最早也试过被动均衡,后来放弃,原因只有一个:它只解决“谁太高”,不解决“谁太低”。而储能和备用电源场景里,真正导致系统提前关机、容量发布出来的,往往是那节“太低”的电芯。

1.2 三种常见主动均衡拓扑,以及我为什么选这一种

主动均衡的本质是“能量搬运”,把高电芯的多余能量搬到低电芯,而不是烧掉。行业内常见的功率级拓扑大致分成三类:

拓扑功率器件能量去向控制复杂度适用场景
相邻电芯 buck-boost每个电芯配半桥高电芯给低电芯高多串数 BMS,双向搬移
多绕组反激/隔离变压器变压器+功率开关整组与单体互换高高压系统,需要隔离
单 Buck/Boost + 输出选通一颗 DC-DC + 开关组端/单体定向补充中串数较少、成本敏感

最后一种是最适合 2S 系统起步的方案。我在板子上用的正是这个思路:MP2642GR-Z 负责把整组电压降压到目标单体电压,再由 PIC18F66K40 判断该不该开启均衡、把电量送到哪一节电芯。相对另外两种,它的控制路径最短:MCU 只管采样和开关,环路稳定交给电源芯片自身完成,调试量小很多。

这里要先说清楚一个工程边界:我最终实现的是一颗非隔离降压芯片做“单向均衡”,覆盖的是高压侧偏高、低压侧偏低的常见失配场景。2S 备用电源里,低压侧电芯因为接的是系统地,最容易在放电末端先塌下去,所以这个方向已经解决了大部分实际问题。真正的双向搬移需要隔离或 buck-boost 拓扑,后面会专门讲为什么不能硬改。

2. 只用一颗降压芯片怎么完成均衡:系统链路与参数设计

2.1 功率级与控制级的角色分工

整套系统链路不长,先画一下器件角色:两节串联电芯的正端为 B+,串联中点为 M,系统地为 B-。MP2642GR-Z 的 VIN 接 B+,GND 接 B-,SW 脚通过一颗电感接到输出节点。输出节点经过一颗背靠背 MOSFET 开关 S_OUT 后接到中点 M。这个开关的目的是隔离:均衡关闭时,输出电容和电池中点完全断开,防止漏电。

从这串连接可以看出,Buck 正常工作时的负载就是低压侧电芯 Cell2——它夹在 M 和 B- 之间,正好是地参考的那一节。MP2642GR-Z 把整组约 7.4V~8.4V 的电压斩波成约 4.1V,再对 Cell2 以设定电流补充电量。同时,因为整组电流是 Cell1 和 Cell2 串联流过的,Cell2 得到充电电流的同时,Cell1 也在放电。最终效果就是高电芯多放一点、低电芯多充一点,两节电压慢慢拉近。

PIC18F66K40 在这里干了三件事:一是分压采样 B+ 电压和 M 电压,软件算出两节单体电压;二是根据电压差和时间条件决定是否开启均衡;三是控制 MP2642GR-Z 的 EN 脚和 S_OUT 开关,并在异常时立刻切断路径。为了让 MCU 供电干净,我从整组电压取了一路 LDO 降到 3.3V,和功率部分共地但分开布线。

2.2 电感、电容、反馈和限流参数估算

功率级参数是照着“整组 8.4V 降到 4.1V、均衡电流 0.8A”来算的。先看电感。一个 600kHz 开关频率的同步 Buck,额定输出 0.8A,纹波电流按 40% 取 0.32A,占空比 D=Vout/Vin=4.1/8.4≈0.49。电感值估算:

L = (Vin - Vout) × D / (f × ΔI) = (8.4 - 4.1) × 0.49 / (600k × 0.32) ≈ 10.9μH

实际我选了 15μH/3A 饱和电流的功率电感,给纹波留更充足的余量,也避免小电感在轻载时进入断续模式。输出电容用两颗 22μF 陶瓷电容并联,输入侧同样放 22μF 加 0.1μF 高频退耦。

反馈网络按典型公式来配。假设芯片 FB 基准是 0.6V,输出目标 4.1V,下分压电阻取 10k,上分压电阻就是 R1 = (4.1/0.6 - 1) × 10k ≈ 58.3k。我用 56k 串联 2.4k 凑 58.4k,实测输出 4.10V 附近。均衡电压我特意定在 4.1V,比电芯满充 4.2V 低 100mV,这样既能把低电芯拉起来,又不会冲击过充保护。

限流值由 MP2642GR-Z 的电流采样脚外接电阻决定,我按 0.8A 整定。这个值不用太大,均衡追求的是“细水长流”,一次搬太多电会让串联中点电压剧烈跳变,反而干扰判断。

2.3 这个方案做不到什么:方向与边界

很多朋友看到标题第一反应是:能不能反过来,让 Cell2 给 Cell1 充电?我得直接说结论:这个结构做不到。MP2642GR-Z 是典型的非隔离降压芯片,输入地和输出地共享同一个参考点。一旦把输出负端接到串联中点 M,而输入负端还接 B-,芯片内部的地就不是同一个电位了,环路根本无法建立。

所以这版方案只覆盖“Cell1 偏高、Cell2 偏低”的失配。如果项目中经常遇到低压侧电芯反而更高的情况,有两条路:一是物理上交换两节电芯的串接位置,让偏高那节处在低压侧;二是换隔离型拓扑,比如反激或多绕组变压器,用 PIC18F66K40 做闭环控制,那样才能真正实现双向搬移。做方案选型时先把方向搞清楚,能省下一整个调试周期。

3. 电压检测与均衡判定的精细活

3.1 先用分压降电平,再把 ADC“喂饱”

两节串联电池的采样有点绕,尤其是高压侧那节,正极对地最高 8.4V,负极对地约 4.2V,都不能直接接单片机 ADC。最稳妥的做法不是用差分运放硬采,而是分别采 B+ 和 M 两个对地电压,在软件里做减法。原因很简单:PIC18F66K40 的电源是 3.3V,内部运放输入共模范围有限,直接差分放大高压侧信号容易让运放饱和。

我具体用的是 100kΩ 和 33kΩ 分压网络。B+ 经分压后最高约 8.4×33/(100+33)=2.08V,M 点最高约 4.2×33/133≈1.04V,都在 ADC 输入范围内。两路分压输出各接一个 0.1μF 电容和 1kΩ 串联电阻做低通,同时进了 PIC18F66K40 内部运放组成的电压跟随器。为什么加跟随器?因为 ADC 采样电容充电瞬间会从信号源抽取电荷,分压网络动辄几十 kΩ 的输出阻抗会把误差放大到几十 mV,用运放缓冲后源阻抗降到几欧姆,采样值才稳定。

每次采样我按“B+ → M → B+ → M”的顺序读 8 次,去掉最大最小取平均。两个通道用同一个 ADC 参考,再用软件做两点校准,这样两路的增益误差基本抵消。裸分压电阻我全部选了 1% 精度、低温漂的厚膜电阻。电池电压采样一旦不准,后续所有均衡判断都是空中楼阁。

3.2 均衡触发条件、滞回与状态机

判断逻辑核心是压差 ΔV = V1 - V2,但我没有写成“一旦超过阈值就开”这种即时逻辑。电池电压在带载、开关切换、甚至电芯内部极化时都会弹跳,瞬时比较一定误动作。我的状态机分四步:

  • 每次 100ms 任务里获取平均电压,每秒更新一次 ΔV;
  • 若 ΔV > 25mV 且持续 2 秒,进入 BAL_LOW 状态,给低压侧电芯充电;
  • 均衡过程中每 500ms 检查一次,若 V2 已超过 V1 - 5mV,也就是压差收敛到 5mV 以内且持续 5 秒,则停止;
  • 停止后强制冷却 30 秒,不允许立即重新开启。

这里 25mV 的触发阈值和 5mV 的停止阈值组成了一组滞回。如果不做滞回,采样噪声只要在阈值附近抖一下,均衡开关就会反复通断。30 秒冷却时间也是后来补上的,目的是让电芯电压去极化、真实稳定下来,避免“开了就够、一停就掉”的临界抖动。

2S 系统只有两个方向的状态:空闲和给低压侧均衡。我把状态转移用表维护在固件里,每个状态都有进入条件、退出条件、超时时间,后续要加双向均衡或者多串,只是在状态表里加项,不用重构逻辑。

3.3 硬件互锁与超时保护:防止单片机失控

软件状态机写得再严谨,也怕 MCU 意外死机或者程序跑飞。均衡一旦失控,最危险的就是把低压侧电芯顶到过充。所以我在硬件上做了两层互锁。

第一层是窗口比较器。PIC18F66K40 内部有比较器,我配置成监测 M 点分压电压,窗口上限对应单体 4.25V。一旦低压侧电芯超过这个门限,窗口比较器输出立刻拉低,切断 S_OUT 和 MP2642GR-Z EN 的通路,完全不需要软件参与。第二层是均衡超时保护:固件里开一个 2 小时定时器,均衡连续运行超过 2 小时强制停止,并进入 FAULT 状态,需要重新上电或收到清除命令才恢复。

这颗 MCU 的独立于内核外设在此时非常有用。比较器输出和 MCU EN 信号之间我用了 CLC(可配置逻辑单元)做与门,只有“电压未越限”和“软件允许”两个条件同时满足,驱动级才动作。单片机跑飞了,CLC 不会飞,它是我最后一道保险。

4. 样机调试中的四个真实坑

4.1 电感啸叫:纹波而不是频率的问题

第一版样机均衡电流调到 0.5A 时,电感开始吱吱响,声音不大但很刺耳。起初我以为是开关频率落在人耳听觉范围内,把频率从 600kHz 调低再调高都试过,啸叫依旧。用示波器抓 SW 节点波形才发现,问题不在频率,而在占空比太小导致的峰值电流检测误触发。

整组 8.4V 降到 4.1V 时占空比只有一半左右,在轻载区间电感电流容易接近过零,芯片内部的电流检测信号被 PCB 噪声干扰,出现一边输出一边打嗝的现象。排查链路:先加大输入电容到 47μF 观察,改善有限;把电感从 10μH 换成 15μH 后纹波电流降下来,啸叫明显减轻;最后又在 SW 节点加了一个 RC 吸收,噪声不再耦合到电流检测脚,问题彻底消失。经验是:电感啸叫先看纹波电流和开关边沿噪声,别一上来就怀疑频率。

4.2 采样值漂移:把“误均衡”当成正常电压波动

有一阵子样机上午测试一切正常,下午一开机就疯狂开启均衡,压差读出来总是 40mV 以上。一开始我怀疑是电芯真失配了,换了一组新电芯依旧。用万用表对比 ADC 读数后发现问题:两路分压电阻的温漂系数不一致,加上 ADC 内部参考电压随温度偏移,两个通道的误差方向相反,软件算出来的“压差”被放大了。

后面我把 ADC 参考从内部基准改成外置 3.0V 精密基准芯片,板子加热后读数不再漂移。同时在软件里做一个开机自校验:先测量 B+ 和 M 两个分压点,和出厂标定值比较,如果偏差超过 15mV 就进入校准模式。这个坑给我最大教训是:均衡系统里“电压差”是核心被控量,差值的误差比绝对值误差更致命,两个采样通道必须做到同斜率、同基准。

4.3 切入瞬间电压跌落:开关时序惹的祸

均衡切入的一瞬间,整组电压被拉低了 300mV 左右,直接导致后级负载板复位。这个现象一开始很费解:均衡电流只有 0.8A,怎么会让 2S 电池组跌 300mV?抓波形后真相大白,问题出在切入顺序上——我先把 S_OUT 开关闭合了,MP2642GR-Z 才使能启动,输出电容以近乎短路的姿态直接并到 Cell2 上,瞬间浪涌电流高达好几安。

解决方法是反转时序:先给 MP2642GR-Z 的 EN 拉高,让 Buck 空载预充到 4.1V,等 20ms 后再闭合 S_OUT。此时输出电容电压和电池中点电压差很小,浪涌电流几乎消失。另外我把 S_OUT 的栅极驱动电阻从 10Ω 加大到 100Ω,放慢开关导通速度,进一步限制 dV/dt。后来再看切换波形,整组电压跌落压到 30mV 以内,负载完全不受影响。

4.4 均衡结束时的反复横跳:滞回和冷却时间缺一不可

均衡过程收尾时又遇到一个典型问题:低压侧电芯电压快接近目标时,压差在 5~10mV 附近来回穿越,均衡开关每隔十几秒就动作一次,嗒嗒响。这个问题一半是采样噪声,一半是电芯极化电压的滞后效应:充电停止后电芯电压会回落到真实值,但回落过程中采样值可能又重新触发开启条件。

我做了两处修改。一是把停止阈值从 10mV 收紧到 5mV,触发阈值保持 25mV 不变,滞回宽度从 15mV 拉到 20mV。二是在停止后强制加 30 秒冷却计时,冷却期间不响应任何均衡触发条件。这两个改动配合下来,开关动作次数断崖式下降,均衡结束时电压能平稳停在目标附近,不再反复折腾。

最后分享一点扩展思考

如果重新做一版,我会优先考虑两件事。第一是把单向功率级换成隔离反激拓扑,用 PIC18F66K40 的 PWM 输出直接驱动初级,次级通过整流和选通开关可以给任意一节电芯充电,真正实现双向搬移,这会让方案完整得多。第二是把采样分压电阻换成更稳定的金属箔电阻,同时把均衡电流采样也纳入闭环——现在的方案按设定限流值工作,但没法精确知道搬了多少电量,加一个低边检流电阻,配合 ADC 做安时积分,均衡策略就能从“压差判断”升级成“电荷量判断”,对低温、老化电芯的适应性会明显更好。

调试这套 2S 均衡器的过程里,最深的体会是:主动均衡的难点往往不在功率级,而在“怎么知道该不该均衡”和“怎么在噪声里不误动作”。芯片把电流搬运做好,MCU 把决策做好,系统才能稳定工作。希望这篇文章能帮你少走一段弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询