☰
2S电池主动均衡实战:从拓扑选型到参数整定的完整记录
2026/10/15 1:04:00 网站建设 项目流程

两节锂电池串联,看起来是电池系统里最简单的拓扑,但真正把它做成一个长期可靠的产品,坑比想象中多得多。便携储能、家用UPS备用电源、电动车副电池包……大量设备用的正是这个2S形态。我前阵子刚完成一个项目,用MP2642GR-Z做双向升降压功率级,配合PIC32MX460F512L做采样、策略与控制,实现两节串联电池之间的主动均衡。这里把从拓扑选型、硬件设计、固件逻辑到实测踩坑的完整过程整理出来,给正在做类似 BMS 或均衡模块的读者做个参考。这个方案的核心价值在于:它不依赖被动电阻放电把能量烧掉,而是把高电压电芯的能量可控地搬到低电压电芯,效率高、发热小,而且均衡电流可以主动调节。

1. 两节串联系统里的“不均衡”:从三个源头说起

1.1 容量、内阻、自放电:三本“账”各有各的差

很多人觉得两节电芯都是新买的、同一批次,差异应该可以忽略。实际上,出厂筛选再严格,电芯之间在三个维度上仍然存在天然差异。

第一是容量差。同一批次的磷酸铁锂或三元电芯,实际容量也会有 1%~3% 的偏差,这两个百分比放在 10Ah 的电芯上就是 100~300mAh。第二是内阻差,新电芯内阻差异相对小,但经过几十次循环、不同温度环境后,内阻的偏差会被拉大。第三是自放电率差,这个最隐蔽,两节电芯在仓库里存放三个月,自放电率不同会导致开路电压明显拉开。

这三个差异叠加起来,系统里常见的表现就是:充电时某一节先到达截止电压,放电时某一节先到达放空电压。而串联回路的特性决定了,只要有一节“喊停”,整串都得停下来。

1.2 串联回路如何把微小差异放大成可用容量损失

串联电池组的电流处处相同,这意味着容量最小的那节电芯,在每一次充放电循环中,SOC 变化幅度都最大。长期运行后,它会比其它电芯更早触顶、更早触底,系统为了安全只能提前终止充放电。

举个例子,两节标称 10Ah 的电芯,实际容量一节是 10.2Ah,另一节是 9.8Ah。充电时小容量那节先到 3.65V 满充电压,系统停止充电,此时大容量那节可能只充到 95% 左右。放电时同样,小容量那节先到放空保护,大容量那节还剩下 5%~6% 的电量无法使用。整个系统的可用容量被“木桶短板”限制,长期循环之后,短板那节老化更快,差距只会越来越大。

所以均衡不是“高端BMS才有”的噱头。哪怕只有两节串联,只要系统希望延长电池组寿命、提高可用容量,均衡就值得做。备用电源场景尤其明显——设备长期处于浮充或待机状态,自放电差异会导致两节电压慢慢拉开,一旦市电中断,电池组实际放不出额定能量,这是最尴尬的故障。

1.3 为什么 2S 系统里被动均衡并不划算

被动均衡用一颗放电电阻并联在每一节电芯上,电压高的电芯通过电阻放电,把多余能量变成热量散掉。它最大的优点就是便宜、简单,但用在 2S 系统里有两个问题。

首先是被动均衡只适合在“充满后”的静置阶段做,它没有办法在放电过程中把能量从高压电芯搬到低压电芯。其次,能量被白白烧掉,均衡 100mAh 的差异就意味着损失掉 0.37Wh 左右的能量,在储能和备用电源场景里,这属于“负收益”。

主动均衡把能量从高电压电芯搬移到低电压电芯,而不是消耗掉。在 2S 系统里,功率级只需要一个电感和少量开关器件,复杂度并不可怕,性价比反而比多节电池组里的复杂拓扑高很多。这也是我最终选择主动均衡方案的根本原因。

2. 拓扑选型:跨接电感的双向升降压为何是 2S 均衡的合理答案

2.1 常见均衡拓扑对比:开关电容、二极管钳位与同步升降压

设计均衡模块的第一步是选拓扑。适合两节电池的均衡拓扑大概有三类。

开关电容均衡,也叫飞渡电容均衡,用一个电容在不同开关状态下交替连接两节电池,把能量从高电压侧“舀”到低电压侧。它的优点是电容便宜、无磁性元件,缺点是均衡电流不好精确控制,而且开关切换过程中存在较大的瞬态电流,对电容和开关应力都不友好。

二极管钳位或单电感串联二极管方案,结构简单,但损耗大,效率通常只有 70% 左右,而且只能单向工作。对于需要长期高可靠运行的储能设备,这种方案也不太合适。

同步双向升降压方案则完全不同。它用一个电感和一对或两对同步开关管,通过 PWM 控制,能量既可以正向搬移,也可以反向搬移,均衡电流可控、效率可以做到 90% 以上。它的“缺点”是驱动逻辑略复杂,需要死区管理,但这正是 MP2642GR-Z 这类功率控制器芯片擅长处理的部分。

2.2 MP2642GR-Z 负责功率,PIC32MX460F512L 负责策略

在这个项目里,我采用的架构是:MP2642GR-Z 作为功率级核心,PIC32MX460F512L 作为系统控制核心。

MP2642GR-Z 的角色是同步升降压控制器或转换器,它内部集成或驱动功率开关管,负责电感的储能与释放,实现两个方向上的能量转换。具体到均衡场景,它的任务就是把“相对高压那节电池”的能量,以设定的电流值转移到“相对低压那节电池”。

PIC32MX460F512L 则承担三件事:一是通过 ADC 采集两节电池电压、温度、均衡电流;二是运行均衡策略状态机,判断何时启动均衡、何时停止;三是输出 PWM 控制信号或设定值给功率级,并处理过流、过温、欠压等保护逻辑。

为什么不用 MCU 直接驱动 MOS 管做半桥?原因是 PIC32MX460 的 I/O 驱动能力有限,直接驱动半桥不仅需要额外的 MOSFET 驱动器,还要自己做死区管理,一旦上下管同时导通就是短路事故。用成熟的功率控制器芯片来承担这些底层时序工作,MCU 专注于采样和策略,整个系统的可靠性会高很多。

2.3 三种工作状态与换向逻辑

这套均衡电路的工作状态可以分成三种,理解清楚换向逻辑,后面的固件状态机就很好写了。

第一种是“上节电池向下节电池搬移能量”,也就是 B1 高于 B2 时的工况。功率级把 B1 的能量先存储在电感磁场上,再释放到 B2,完成一次能量转移。第二种是反向工作,B2 高于 B1 时,功率级反向升降压,把能量从 B2 搬到 B1。第三种是静止状态,两节电压差落在允许范围内,所有开关管关断,系统进入低功耗等待。

换向逻辑的关键点在于:不能在没有压差或压差极小时频繁切换方向,否则功率级会反复冲击电感,产生噪声和损耗。我在固件里加了一个“换向滞回区间”,只有当压差超过一定门限时才切换方向,并且在切换方向前强制 PWM 输出为零一段时间,让电感电流先回零。

3. 硬件设计九项关键细节:采样、功率回路与PCB布局

3.1 两节电压的测量方式:浮地通道与分压比计算

两节串联电池中,B2 的下端是系统地,测量 B2 电压比较简单,直接从电池中点对地分压即可。麻烦的是 B1,B1 的上端比地高出一整节电池的电压,不能直接接到 ADC。

我采用的方法是:分别测量“B1两端电压”和“B2两端电压”,都使用电阻分压把电压降到 ADC 可接受的范围。以磷酸铁锂 2S 系统为例,单节最高电压约 3.65V,B1 正极对地最高约 7.3V,但经过分压后测的是“B1正极对中点”的电压,也就是单节电池的电压,所以分压比只需要针对单节最高电压来设计。

如果取分压电阻为 100kΩ 和 33kΩ,单节 3.65V 时 ADC 引脚电压约为:

3.65 × 33 / (100 + 33) ≈ 0.906V

这个电压远低于 3.3V 的 ADC 参考电压,安全余量足够。要注意分压电阻必须选低温漂、高精度的电阻,因为两颗电阻的比例误差会直接反映到电压测量上。再往下就是 RC 滤波,我用了 100Ω 串联和 100nF 并联电容,截止频率约 16kHz,可以把开关噪声的高频分量压住。

3.2 开关频率与电感参数:一个可照抄的估算流程

功率级的开关频率我设在 400kHz 左右,这个频率下电感尺寸、开关损耗和纹波电流都能兼顾。电感量的估算用经典的 BUCK-BOOST 纹波公式:

ΔI_L = (Vin × D) / (f × L)

以 3.4V 单节电压、占空比约 0.5 为例,选择 4.7µH 电感时:

ΔI_L = (3.4 × 0.5) / (400000 × 0.0000047) ≈ 0.9A

如果目标均衡电流只有 0.5A,0.9A 的纹波电流会让电感电流进入断续模式,开关管应力大、电感也可能啸叫。把电感加大到 10µH 后:

ΔI_L = (3.4 × 0.5) / (400000 × 0.00001) ≈ 0.43A

纹波电流明显减小,电感电流能维持在连续模式。所以我在最终设计里选了 10µH 的功率电感。这里要提醒一句:电感饱和电流一定要留足余量,至少不小于最大均衡电流加峰值纹波,否则电感一旦饱和,电流会瞬间失控。

3.3 电流检测与限流设计

均衡电流需要闭环控制,所以必须在功率回路里串入采样电阻。我的做法是在电感电流路径上放一颗 10mΩ 的合金采样电阻,再通过差分放大器把压差放大后送到 MCU 的 ADC。

10mΩ 电阻在 0.5A 均衡电流时压降只有 5mV,分辨率太低,直接送 ADC 不现实。我用了一颗增益为 100 的仪表放大器,把 5mV 放大到 500mV,这样 ADC 采样就比较舒服了。需要强调的是,采样电阻必须用开尔文连接,也就是放大器的两根采样线要直接连到电阻两端,不要在 PCB 走线上取压降,否则功率回路的铜箔电阻会带来无法容忍的误差。

限流保护除了在固件里做,硬件上也必须有过流比较器。我把放大器输出同时接到一个比较器,超过设定阈值立即封锁 PWM,这个动作不走 MCU 软件,延迟时间能做到微秒级,防止出现短路或电感饱和时的灾难性电流。

3.4 PCB布局上容易被忽略的两个点

第一点是功率回路的面积要尽量小。MP2642 功率级加电感、采样电阻形成的开关回路,环路面积越小,寄生电感越小,开关尖峰就越低。我在 layout 时把输入电容、输出电容尽量靠近开关管,功率地单独走一层铺铜,再用过孔阵列连接。

第二点是信号地与功率地要单点连接。ADC 采样、放大器的地如果直接接到功率地,开关切换瞬间的大电流跳变会把地电位拉偏,导致采样数值跳变。我采用的方法是:所有小信号模拟地先汇聚到一个点,再与功率地在靠近输入电容的负极处单点相连,这样能在很大程度上抑制地弹噪声。

4. PIC32MX460F512L 固件:从ADC校准到均衡状态机

4.1 采样校准与滤波:10位ADC也可以做到够用

PIC32MX460F512L 的内置 ADC 是 10 位的,分辨率 3.3V / 1024 ≈ 3.2mV,如果直接折算到电池端,单节电压分辨率约 13mV,对均衡判断来说偏粗糙了,但够用。我做了两件事来提升实际效果。

第一件事是软件校准。分压电阻比例存在精度误差,我在生产测试阶段用一台精密电压源分别给两节电池加压,记录 ADC 原始码值,然后用两点校准把“ADC码值到实际电压”的斜率存在 Flash 里。这个成本几乎为零,效果却非常明显,能把测量误差从百分之几压到千分之几。

第二件事是移动平均滤波。我用了 16 次采样取平均值,同时配合前面提到的 RC 硬件滤波,能有效抑制开关噪声和电池电压的微小波动。代码逻辑很朴素:

uint16_t adc_filter(uint16_t raw) { static uint32_t sum = 0; static uint16_t buf[16] = {0}; static uint8_t idx = 0; sum -= buf[idx]; buf[idx] = raw; sum += raw; idx = (idx + 1) & 0x0F; return (uint16_t)(sum >> 4); }

要注意的是,移动平均会带来响应延迟。如果某个电芯出现真正的过压,采样滤波的延迟会导致保护动作变慢,所以过压保护不走滤波后的值,而是用原始 ADC 值配合比较器快速响应。均衡判断用滤波值,保护用瞬时值,两者分开处理。

4.2 均衡状态机的设计与异常处理

我的固件没有跑 RTOS,直接用一个简单状态机实现,避免不必要的调度开销和调试复杂度。状态机包括空闲、预检、均衡中、完成、故障五态。

typedef enum { STATE_IDLE, STATE_PRECHECK, STATE_BALANCING, STATE_DONE, STATE_FAULT } bal_state_t;

空闲状态下,系统周期性采集电压和温度,判断压差和静置条件。满足条件后进入预检状态,此时会重新确认电池总电压、单体电压都处于安全工作窗口,均衡电流检测值为零,确认无误再进入均衡中状态。均衡中的每一拍都在做三件事:采集均衡电流闭环调节、持续监视过流和过温、判断压差是否已经收敛到停止门限。

如果压差低于停止门限,进入完成状态,关闭 PWM,记录本次均衡统计数据。如果任何一项异常阈值被触发,立即进入故障状态,关闭 PWM 并锁存故障原因,等待主机通过通信接口读取后才能复位。这个故障锁存逻辑非常重要,否则瞬时异常被忽略后,下一次均衡可能直接炸管。

4.3 PWM控制与电流闭环的实现

PIC32MX 的 OC 输出比较模块很适合产生固定频率的 PWM。我配置了一个 400kHz 的 PWM 用来控制功率级,但占空比并不直接根据压差拍脑袋给,而是走电流闭环。

均衡电流的给定值取决于两个条件:一是压差,压差大时可以给大电流,压差小时自动减小;二是系统温度,温度超过某个值就限制最大均衡电流。电流误差经过 PI 调节器后得到占空比修正量。

PI 参数不用调得过于激进。我实测下来,均衡是一个相对缓慢的过程,电流环带宽不需要很高,Kp 取 0.1~0.15,Ki 取 0.05~0.08,输出限幅在最大占空比的 20%~80% 之间,就已经很稳了。如果 PI 调得太激进,均衡电流会来回震荡,反馈到电池端表现为电压抖动,反而干扰压差判断。

4.4 调试接口:如何“看见”均衡过程

调试阶段最痛苦的是看不到内部状态。我做了一个简单的 UART 命令接口,通过串口可以实时读取两节电池电压、温度、均衡电流、状态机状态和故障标志,也可以手动开启或停止均衡。这个接口让整个调试过程变得非常高效。

后来调试稳定了,我又加了 CAN 上报功能,把均衡相关数据定期发到整机控制器。PIC32MX460F512L 的 CAN 模块是现成的,配置起来很快。对于储能和备用电源系统来说,均衡数据和电池状态上报到上层监控平台,是一件非常有价值的事,客户可以远程看到电池健康状态。

5. 均衡策略参数整定:门限、电流与时间怎么算

5.1 启动/停止门限:静置窗口比瞬时值可靠得多

均衡策略最忌讳的就是“一看压差 30mV 就启动均衡”。因为电池在充放电状态下,内阻极化会引起虚拟压差,这个压差在停止充放电后几秒内会回落。如果按照瞬时值判断,均衡系统会频繁误动作。

我的处理方式是设置一个静置窗口:只有当系统处于空闲状态、充放电电流绝对值小于 50mA、持续时间超过 10 秒,才允许比较压差。在这个窗口内,我还要求两节电池温度差不超过 2°C,否则即使有压差也不启动均衡。

启动门限设为 30mV,停止门限设为 10mV。这两个门限之间留了滞回区间,避免均衡启动后因为压差在阈值附近波动而反复启停。

5.2 目标电流与PI参数:为什么固定占空比会翻车

有人在简易均衡器里直接固定占空比,认为只要开关动作,能量就一定会从高压侧流向低压侧。实测会发现均衡电流漂移得厉害。原因在于电池电压会随着 SOC 变化而改变,占空比固定时,电感两端的伏秒积也在变,平均电流自然不稳定。

所以必须用电流闭环。我的目标均衡电流设置在 500mA,最大不超过 1A。500mA 的设定兼顾了效率与时间:电流太大,铜损和开关损耗都上升,而且对电芯寿命不友好;电流太小,均衡周期拉得太长,影响系统可用性。

PI 调节器输出限幅我做了两层,第一层是全局占空比上下限,第二层是变化率限制,即每一拍占空比最多只能变化 1% 左右。这样做的目的是避免电流突变,尤其是避免占空比大幅阶跃时电感电流尖峰损坏开关管。

5.3 一次完整均衡要多久:能量与时间估算

很多工程师关心均衡时间。我们来算一笔账:假设两节电芯的容量差为 100mAh,均衡电流 0.5A,理论上需要 0.1Ah / 0.5A = 0.2 小时,也就是 12 分钟。考虑到升降压转换效率约 85%,实际时间约 15 分钟。

但要注意,这个时间只是“搬移能量”的时间,不包括静置等待压差回落的时间。因为均衡结束前,系统需要再次进入静置窗口确认压差已经收敛。所以完整均衡周期通常需要 20~30 分钟。

如果压差更大,比如电芯自放电差异导致 300mAh 的容量差,均衡时间会到 40~60 分钟。这个时候就需要考虑散热了,500mA 均衡电流在功率级产生的发热不算大,但如果连续均衡超过一小时,建议在固件里做一个“均衡超时保护”,到达最长工作时间后强制停止,等系统冷却后重新判断。

5.4 电芯老化后策略如何调整

电芯老化带来的直接变化是内阻增大、自放电加快、极化电压升高。对均衡策略的影响是:同一压差对应的实际容量差可能变小,也就是说老电池更容易出现“虚压差”。

我的做法是让门限参数可以通过通信接口下发,而不是写死在固件里。长期运行后,运维人员可以根据电池组健康状态动态调整启动门限,比如从 30mV 提升到 50mV,减少无意义的均衡动作。同时,均衡最大电流也可以随电池老化适当下调,因为老化电芯的倍率性能变差,大电流均衡会加速老化。

6. 实测中反复遇到的三类问题与整改记录

6.1 ADC跳变:采样时刻被功率开关瞬态污染

第一版板子调试时,均衡电流闭环无论如何都调不稳。观察发现 ADC 读数总是在开关动作的瞬间跳变,跳变量甚至能达到几十毫伏,这个噪声足以让 PI 调节器产生错误输出。

我用了示波器同时抓 PWM 驱动信号和 ADC 采样端波形,发现跳变点正好对应功率管开关沿。原因是采样时刻没有避开开关瞬态,ADC 采集到了开关尖峰耦合出来的噪声。

整改方案有两个层面。硬件上,我加大 ADC 输入端的 RC 滤波电容,从 100nF 加到 220nF。固件上,我把 ADC 采样触发改到 PWM 周期内相对靠后的位置,也就是开关管已经稳定导通或关断后的一段时间内采样。这样一个 PWM 周期的瞬态已经结束,采样值干净多了。经过这两处修改,ADC 读数的噪声从几十毫伏降到了几个毫伏以内。

6.2 上电冲击与软启动:别让MOS管“打嗝”

试验样机第一次上电时,只要一启动均衡,电源输入端就开始“打嗝”,电流波形乱七八糟。排查后确认是启动瞬间输出电容和电感的冲击电流过大。因为均衡启动就是直接把 PWM 拉到一个中等占空比,输出电容瞬间充电,冲击电流超过了限流阈值,过流保护又强制关断,关断之后再启动,形成周期性的打嗝。

解决办法是软启动。我把所有均衡启动过程都改成斜坡方式,占空比从 0 开始,每 2ms 递增 0.5%,大约 200ms 内逐渐到达目标值。这样电感电流和输出电容电压都是缓慢建立,不会触发过流保护。软启动之后,打嗝现象彻底消失,MOSFET 的温度也明显下降。

这个教训也让我意识到,任何功率模块的启动过程都必须单独设计,不能一上来就进入稳态控制。均衡模块如此,其他电源模块也一样。

6.3 轻载电感啸叫与断续模式

当压差很小、均衡电流目标被 PI 调到很小时,电感电流会进入断续模式,此时如果 PWM 频率恰好落在人耳可听范围内,电感就会发出“滋滋”的啸叫声。我在办公室测试时就听到过,非常影响用户对产品质量的第一印象。

我的处理方法是限制最小均衡电流,比如设定最小目标电流为 80mA,低于这个值就认为均衡没有意义,直接停止均衡。同时,我把 PWM 频率提高到了 400kHz,已经远离人耳可听范围。即使仍然进入断续模式,噪声能量也基本落在超声频段,人耳听不到。

6.4 验证方法:用新旧电芯混搭加速测试

均衡功能验证如果只用两节同批次新电芯,根本测不出效果,因为压差太小、均衡时间太短,看不出曲线。我采用了一个很有效的加速测试方法:把一节旧电芯和一节新电芯串联,人为制造明显的容量差和压差,再跑均衡过程。

实测数据显示,初始压差约 120mV,均衡启动后约 25 分钟压差收敛到 30mV 以内,继续均衡了一段时间后压差稳定在 10mV 的停止门限以下。整个过程中均衡电流始终稳定在设定值附近,电芯温度上升不超过 5°C。这套测试方法比普通一致性测试更能暴露问题,我建议做电源的同仁都试试。

最后再分享一个小技巧:画压差收敛曲线时,可以同时在图上叠加均衡电流波形。如果压差在收敛但电流在震荡,说明电流闭环还有问题;如果压差收敛平滑、电流也平直,那整个均衡系统基本就是健康的。这个对照关系,能帮你快速判断问题是出在功率级还是控制策略上。

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

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

立即咨询