1. 为什么串联电池组的均衡不是"可选功能"而是"生存刚需"
两节锂电池串联,标称电压7.4V,满电8.4V,截止6.0V——这个配置在便携储能、小型UPS、医疗备用电源里太常见了。很多人第一次做双串电池包时都会有一个朴素的想法:两节电池一起充、一起放,电压自然就一致了,均衡电路纯属多余。
这个想法在实验室里用两节同批次新电池跑几次循环,确实看不出问题。但只要把时间轴拉长到几十个充放电循环,或者把使用环境放到高低温交替的真实场景里,容量偏差就会以肉眼可见的速度扩大。原因不复杂:两节电芯的初始容量、内阻、自放电率天然存在离散性,串联回路里流过的是同一个电流,容量小的那节每次都被"过充"一点点、放电时又被"过放"一点点,日积月累,压差从几毫伏滚到几百毫伏。
压差一旦拉开,麻烦就来了。充电时,BMS检测的是整串电压,容量低的那节先到4.2V,但整串还没到8.4V,充电器继续灌电流,这节电芯就被迫进入过充状态;放电时同理,它先跌到保护阈值,整串被迫提前切断,另一节明明还有电却用不上。最终结果是:整包可用容量被最弱的那节电芯"锁死",循环寿命也由它决定。
所以均衡电路的本质,不是"让两节电池电压相等"这么表面的目标,而是把串联回路里那节最弱的电芯从过充过放的恶性循环里拉出来,让整包的容量和寿命向强的那节看齐。理解了这一点,后面选被动均衡还是主动均衡、选专用均衡IC还是MCU加外围,判断标准就清晰了。
我这次做的方案,主控用PIC18F66K40,均衡执行器件用MP2642GR-Z,针对的就是两节串联电芯的储能与备用电源场景。选这两个器件的组合不是拍脑袋,下面会把选型逻辑、硬件设计、固件策略、实测数据一层层拆开讲。
2. MP2642GR-Z 与 PIC18F66K40 的分工逻辑
2.1 为什么均衡执行不直接用MCU的GPIO推MOS
新手最容易想到的方案是:MCU检测到压差超标,直接拉高一个GPIO,驱动一个MOS管,通过泄放电阻给高压那节放电。这个方案能跑,但有几个硬伤。
第一是均衡电流上不去。PIC18F66K40的IO口驱动能力有限,直接推MOS栅极,开关速度慢、导通电阻不够低,均衡电流通常只能做到几十毫安,对于容量几千毫安时的储能电池包来说,均衡一次要几个小时,效率太低。
第二是缺乏精确的电流控制。泄放电阻上的电流随电池电压变化,压差大时电流大、压差小时电流小,整个均衡过程不可控,容易在压差接近目标值时出现振荡。
第三是保护机制缺失。如果MOS管击穿短路,泄放电阻会持续给电芯放电,把电池放到过放,这是安全事故级别的隐患。
MP2642GR-Z这类专用均衡器件解决的正是这几个问题。它内部集成了功率开关和电流检测,均衡电流可以做到几百毫安级别,而且带过温保护、过流保护,MCU只需要通过I2C或SPI下发指令、读取状态,把"执行"和"决策"解耦开。这种分工的好处是:MCU专注于电压采样、均衡策略、系统通信,均衡器件专注于安全、精确地执行泄放或能量转移。
2.2 PIC18F66K40 在这个方案里到底承担什么
PIC18F66K40是一颗8位MCU,64KB Flash、3.6KB RAM,带12位ADC、多个定时器、I2C/SPI/UART。放在这个方案里,它的职责边界很清晰:
- 电压采集:通过ADC或外部分压网络,周期性采集每节电芯的端电压,以及整串总压、温度。
- 均衡决策:根据压差、温度、当前充放电状态,判断是否启动均衡、用多大电流、均衡哪一节。
- 状态机管理:充电中、放电中、静置、故障,不同状态下均衡策略完全不同,这套逻辑跑在MCU里。
- 通信与上报:把电压、温度、均衡状态通过UART或CAN上报给上位机或系统主控。
- 安全兜底:监测过压、欠压、过温,触发保护动作。
注意,MCU不直接驱动均衡功率级,它通过I2C配置MP2642GR-Z的工作模式,然后周期性读取它的状态寄存器。这种"MCU决策+专用IC执行"的架构,在储能BMS里是主流做法,可靠性比MCU直接推MOS高一个档次。
2.3 两节串联场景下,被动均衡和主动均衡怎么选
这是绕不开的问题。被动均衡就是把高压电芯的多余能量通过电阻以热量形式消耗掉,主动均衡是把能量从高压电芯搬到低压电芯。两者没有绝对优劣,关键看应用场景。
| 对比维度 | 被动均衡 | 主动均衡 |
|---|---|---|
| 能量效率 | 低,多余能量变热 | 高,能量转移 |
| 电路复杂度 | 低 | 高,需要电感/电容储能 |
| 成本 | 低 | 高 |
| 均衡电流 | 通常50-200mA | 可达1A以上 |
| 适用场景 | 小容量、成本敏感、备用电源 | 大容量、高频循环、储能系统 |
| 发热 | 集中在均衡电阻 | 分散 |
对于两节串联的备用电源系统,容量通常在2Ah到10Ah之间,充放电循环不算特别频繁,被动均衡的效率和成本优势更明显。MP2642GR-Z配合外部泄放路径,做被动均衡是性价比最高的选择。如果换成几十安时的大储能包,那才需要考虑主动均衡方案。
3. 硬件设计里那些"看起来对但会出事"的细节
3.1 电芯电压采样:分压电阻不是随便选的
PIC18F66K40的ADC参考电压通常用内部3.3V或外部基准。两节电芯串联,单节最高4.2V,直接进ADC会超量程,必须分压。分压电阻的选型有两个坑。
第一个坑是阻值太小导致持续耗电。假设用10k和10k分压,单节4.2V时,分压支路电流是0.21mA,两节就是0.42mA,一天下来白白消耗10mAh,对于小容量备用电源来说不可忽视。正确做法是把分压电阻选大,比如100k和100k,电流降到21uA级别,但这时又引出第二个坑。
第二个坑是阻值太大导致ADC采样不准。PIC18F66K40的ADC输入阻抗和采样保持电容有关,源阻抗太高,采样电容充不满,读数会偏低。解决办法是在分压点加一个0.1uF的滤波电容,同时适当延长ADC采样时间。我实测下来,100k/100k分压配0.1uF电容,采样时间设到10us以上,读数稳定性可以做到±5mV以内。
还有一个细节:两节电芯的采样必须共地参考。下节电芯的地就是系统地,直接分压即可;上节电芯的地是下节的正极,它的分压网络要以这个点为参考,不能直接接到系统地,否则会形成短路回路。这一点在画原理图时最容易画错,我见过不止一个项目在这里翻车。
3.2 MP2642GR-Z 的外围配置要点
MP2642GR-Z的均衡电流由外部检测电阻决定,这个电阻的选型直接关系到均衡速度和发热。假设目标均衡电流200mA,检测电阻上的压降设定为50mV,那么电阻值就是0.25欧姆。功率计算:0.2A × 0.2A × 0.25Ω = 10mW,选0603封装足够。
但要注意,均衡电流流过的是电芯本身,电芯内阻上也会有压降。如果电芯内阻是50毫欧,200mA电流在内阻上产生10mV压降,这个压降会影响电压采样的准确性。所以均衡启动期间和电压采样之间要有时间隔离,不能一边均衡一边采样,否则读到的电压是"电芯真实电压减去内阻压降",会误判压差已经缩小。
我的做法是:均衡周期设为"均衡500ms,停止50ms,采样,再均衡",在停止窗口内采样,避开内阻压降的干扰。这个时序在固件里用定时器精确控制。
3.3 热设计:均衡电阻和PCB铜箔的配合
被动均衡的能量全部变成热。200mA均衡电流,单节电芯4.2V,功率就是0.84W。这个热量集中在均衡电阻和MP2642GR-Z内部开关上,如果PCB散热没做好,器件温度会快速上升。
我的经验是:均衡电阻用2512封装,焊盘下面铺铜,铜箔面积至少100平方毫米,双面铺铜并打过孔连接。MP2642GR-Z的散热焊盘必须可靠接地,过孔数量不少于9个。实测在25度环境温度下,连续均衡30分钟,器件表面温度稳定在65度左右,在安全范围内。如果环境温度到60度,就要考虑降额使用,把均衡电流降到150mA。
注意:均衡电阻不要紧贴温度敏感器件(如NTC热敏电阻)放置,否则热耦合会导致温度采样失真,误触发过温保护。
4. 固件策略:均衡什么时候启动、什么时候停
4.1 均衡启动条件的多参数判断
很多人的均衡逻辑就一句话:压差大于50mV就均衡。这个逻辑太粗糙,实际会出问题。
充电末期,电芯电压本来就在快速变化,这时候压差大是正常的,如果立即启动均衡,会把本来正常的充电过程打断。放电中期,电芯电压平稳,压差小,这时候均衡效率最高。静置状态,电芯电压回稳,是判断真实压差的最佳时机。
我的策略是分状态处理:
- 充电中:只在恒压阶段(单节电压超过4.15V)才允许均衡,且压差阈值设为80mV,避免频繁启停。
- 放电中:单节电压高于3.3V时允许均衡,压差阈值50mV。
- 静置:压差阈值设为30mV,因为静置时电压稳定,小压差也值得均衡。
- 温度保护:电芯温度低于0度或高于45度,禁止均衡。
这套逻辑用状态机实现,PIC18F66K40的定时器中断每100ms跑一次状态判断,决策结果通过I2C下发给MP2642GR-Z。
4.2 均衡电流的档位控制
MP2642GR-Z支持多档均衡电流配置,不是只有开和关两种状态。根据压差大小动态调整电流,可以兼顾速度和发热。
| 压差范围 | 均衡电流 | 说明 |
|---|---|---|
| 30-50mV | 50mA | 小电流微调,避免过冲 |
| 50-100mV | 100mA | 常规均衡 |
| 100-200mV | 200mA | 快速拉平 |
| >200mV | 200mA + 告警 | 压差过大,可能电芯异常 |
压差接近目标值时降档,是为了防止"均衡过头"——大电流均衡时,由于采样和执行的延迟,很容易把高压电芯放得比低压电芯还低,然后来回振荡。降档后,最后几十毫伏用小电流慢慢收敛,稳定性好很多。
4.3 采样滤波:别让噪声骗了你的均衡算法
ADC采样必然有噪声,如果直接用单次采样值做判断,压差会在阈值附近反复跳变,均衡器频繁启停。必须做滤波。
我用的是一阶低通滤波,公式很简单:
filtered = filtered * 0.9 + new_sample * 0.1;这个系数0.1对应的时间常数,在100ms采样周期下大约是1秒,既能滤掉高频噪声,又不会对真实电压变化响应太慢。对于压差判断,我还会做"连续3次超过阈值才动作"的去抖处理,进一步避免误触发。
温度采样同样要滤波,NTC的阻值变化非线性,固件里用查表法转换成温度,再做滑动平均。
5. 实测数据与踩坑记录
5.1 两节电芯从300mV压差到20mV的完整过程
我用两节标称2000mAh的电芯做测试,人为制造初始压差:一节充到4.15V,另一节放到3.85V,压差300mV。静置状态下启动均衡,电流200mA。
实测数据:
| 时间 | 高压节电压 | 低压节电压 | 压差 |
|---|---|---|---|
| 0min | 4.15V | 3.85V | 300mV |
| 30min | 4.08V | 3.87V | 210mV |
| 60min | 4.01V | 3.89V | 120mV |
| 90min | 3.96V | 3.91V | 50mV |
| 120min | 3.93V | 3.92V | 10mV |
可以看到,均衡速度在前60分钟较快,后60分钟明显变慢,这是因为压差缩小后,均衡电流自动降档。最终压差收敛到10mV以内,两节电芯电压基本一致。
这里有个反直觉的点:均衡过程中,低压节电压也在缓慢上升。这不是均衡器在给低压节充电,而是因为均衡电流流过整串回路,低压节的内阻上产生了微小压降,停止均衡后电压会回落。所以判断均衡效果,一定要在均衡停止、静置一段时间后再测量。
5.2 一个让我排查了两天的采样异常
测试中遇到一个诡异现象:上节电芯的ADC读数偶尔会跳变200mV,而且跳变没有规律。一开始怀疑是ADC配置问题,换了采样时间、加了滤波,都没用。
后来用示波器看分压点的波形,发现跳变时有一个高频振荡。顺着查下去,发现是均衡启动瞬间,MP2642GR-Z的开关动作通过共地路径耦合到了上节电芯的分压网络。上节电芯的采样参考点是下节正极,这个节点在均衡时电流变化剧烈,参考点本身就在抖。
解决办法有两个:一是在上节电芯的分压参考点加RC滤波,二是调整均衡和采样的时序,确保采样时均衡已停止且稳定。我两个都做了,问题彻底消失。这个坑的教训是:串联电池组的采样参考点不是"干净地",任何在它上面流过的电流都会影响采样。
5.3 均衡电阻发热导致温度误报的处理
前面提到均衡电阻发热,我实际遇到的是:均衡电阻离NTC太近,连续均衡20分钟后,NTC读数比实际电芯温度高了8度,触发了过温保护,均衡被迫中断。
重新布局PCB,把NTC移到电芯极耳附近,远离均衡电阻,同时在固件里对温度做"变化率限制"——温度每秒上升超过0.5度就判定为异常,忽略该读数。这样即使有短暂的热耦合,也不会误触发保护。
6. 从两节到多节:这套架构的扩展边界
两节串联是最简单的场景,但实际储能系统往往是4节、8节甚至更多。这套"MCU+专用均衡IC"的架构能不能直接扩展?
能,但要注意几点。第一,MP2642GR-Z这类器件通常支持特定节数,多节场景需要多颗级联,级联时通信总线的隔离要做好,否则高压节的通信会干扰低压节。第二,MCU的ADC通道数要够,8节电芯至少需要8个采样通道,PIC18F66K40的通道数需要核对,不够就要外加多路复用器。第三,均衡策略要从"两两比较"升级为"找最高和最低",多节场景下均衡优先级排序更复杂。
对于两节场景,这套方案已经足够成熟,硬件成本可控,固件逻辑清晰,实测均衡效果稳定。如果后续要扩展到更多节,核心的采样隔离、时序控制、状态机框架都可以复用,主要工作量在通道扩展和策略优化上。
最后分享一个我在调试中养成的小习惯:每次改完均衡参数,不要只看最终压差,要把整个均衡过程的电压曲线导出来看。曲线能告诉你均衡是否过冲、是否振荡、是否有异常跳变,这些信息比一个最终数字有价值得多。均衡做得好不好,曲线一看便知。