1. 储能电池均衡的底层逻辑与方案选型
两串电池的均衡问题,看起来简单,实际做起来坑不少。我接触过不少储能和备用电源的项目,从便携式储能电源到通信基站的后备电池组,两串锂电或磷酸铁锂的架构非常常见。原因很直接:两串电压刚好落在7.4V到8.4V这个区间,既能用低压MOS做开关,又能避开单串升压的效率损耗,成本也压得住。但两串架构有个绕不开的痛点——串联的两个电芯,容量、内阻、自放电率不可能完全一致,充放电循环几十次之后,压差就会慢慢拉开。压差一旦超过50mV,容量利用率就开始明显下降;超过100mV,木桶效应会让整组电池的可用容量直接打八折。
均衡这件事,本质上就是把电压高的那节电芯的能量,搬到电压低的那节去,或者干脆把高的那节放掉一点。前者叫主动均衡,后者叫被动均衡。被动均衡用电阻放电,简单便宜,但能量全变成热,效率低,而且只能等充电末期慢慢放。主动均衡用储能元件(电容或电感)做能量转移,效率高,但电路复杂、成本高。两串系统里,主动均衡的拓扑选择其实不多:电感式双向均衡是最适合两串架构的方案,因为只需要一个电感、两个MOS,就能实现双向能量流动,控制逻辑也清晰。
我这次选的是MP2642GR-Z这颗芯片,它是专门为两串电池均衡设计的电感式主动均衡控制器。为什么选它而不是自己搭分立电路?分立方案我也试过,用两个NMOS加一个电感,配合单片机PWM驱动,理论上可行,但实际调试时死区时间、电感电流采样、MOS驱动电平这些细节能把人逼疯。MP2642GR-Z把驱动逻辑、死区控制、电流检测、保护电路全集成进去了,外围只需要一个电感、两个MOS和几个阻容,PCB面积能压到很小。更重要的是,它支持双向均衡,不需要额外判断哪节电芯电压高,芯片自己会根据两节电芯的压差自动决定能量流向。
主控选PIC18LF46K40,理由也很实在。这颗单片机低功耗、宽电压、外设够用,自带12位ADC、硬件PWM、UART和I2C,用来做电池电压采样、均衡状态监控、上位机通信绰绰有余。而且它的LF版本支持低至1.8V的工作电压,在电池电量偏低时依然能稳定运行,这对备用电源系统很关键——你不能因为电池快没电了,单片机先挂掉,那均衡就彻底失控了。PIC18LF46K40的纳瓦级低功耗技术在待机时电流只有几十纳安,对备用电源这种长期浮充的场景非常友好。
注意:MP2642GR-Z的均衡电流不是随便设的,它由电感值和开关频率共同决定。电感选小了,电流纹波大,EMI难搞;电感选大了,响应慢,均衡效率低。这个后面会详细算。
整个方案的核心思路是:PIC18LF46K40负责“看”和“管”,MP2642GR-Z负责“干”。单片机通过ADC实时采集两节电芯的电压,判断压差是否超过阈值(比如30mV),如果超过,就使能MP2642GR-Z开始均衡;同时单片机监控均衡电流、芯片温度,异常时及时关断。MP2642GR-Z内部集成了过流保护、过温保护、电感短路保护,但单片机层面的软件保护也不能少,双重保险才靠谱。
这套方案适合谁?如果你在做两串磷酸铁锂或三元锂的储能系统、备用电源、便携式电源,需要主动均衡但又不想把电路搞得太复杂,这个组合值得参考。如果你只是做单串电池,那用不上;如果是三串以上,MP2642GR-Z就不适用了,得换多节均衡芯片。下面我把整个设计拆开,从原理到实操,把踩过的坑和验证过的参数都摆出来。
2. MP2642GR-Z与PIC18LF46K40的硬件设计细节
2.1 MP2642GR-Z外围电路的关键参数计算
MP2642GR-Z的典型应用电路不复杂,但每个元件选型都有讲究。先看电感,这是决定均衡电流和效率的核心元件。芯片的开关频率可以通过外部电阻设定,我一般设在200kHz到400kHz之间。频率太低,电感体积大;频率太高,开关损耗和EMI上去了。我实测下来,300kHz是个比较舒服的平衡点。
均衡电流的计算公式是:
I_balance = (V_cell_high - V_cell_low) / (2 × f_sw × L) × D
其中D是占空比,在电感式均衡里,D通常接近0.5,因为能量从高电压电芯转移到低电压电芯,电感在充电和放电两个阶段对称工作。简化估算时,可以用:
I_balance ≈ (V_diff × D) / (2 × f_sw × L)
假设两节电芯压差V_diff = 100mV,f_sw = 300kHz,我想要均衡电流在200mA左右,那么:
L = (V_diff × D) / (2 × f_sw × I_balance) = (0.1V × 0.5) / (2 × 300000 × 0.2) = 0.05 / 120000 = 0.417μH
这个值太小了,实际选型时电感不能只看这个公式,因为压差100mV是很小的情况,均衡电流本来就小。真正决定电感值的是最大压差下的峰值电流。假设最大压差500mV,我希望均衡电流不超过500mA,那么:
L = (0.5V × 0.5) / (2 × 300000 × 0.5) = 0.25 / 300000 = 0.83μH
实际我选的是1μH到2.2μH之间的屏蔽电感,饱和电流至少1.5A,直流电阻尽量小(<50mΩ),否则均衡效率会被电感内阻吃掉。我试过用2.2μH的电感,300kHz下均衡电流约180mA,压差100mV时均衡一小时能把压差拉到20mV以内,效果够用。
MOS管的选择也很关键。MP2642GR-Z驱动的是两个N沟道MOS,接成半桥结构,中间点接电感,电感另一端接两节电芯的中间节点。MOS的导通电阻Rds(on)要小,建议<20mΩ,因为均衡电流虽然不大,但导通损耗直接决定发热。栅极电荷Qg也要小,否则驱动损耗大。我常用的是30V耐压、Rds(on)约10mΩ、Qg约10nC的MOS,封装选DFN3x3或SOP-8,散热够用。
采样电阻用来检测均衡电流,MP2642GR-Z通过它实现过流保护。采样电阻值一般在10mΩ到50mΩ之间。我选20mΩ,这样500mA均衡电流下压降是10mV,功耗5mW,可以接受。采样电阻的精度至少1%,温漂要小,否则过流保护点会飘。布局时采样电阻要开尔文连接,否则走线电阻会引入误差。
输入输出电容也不能省。MP2642GR-Z的VIN引脚需要至少10μF的陶瓷电容,靠近芯片放置,用来吸收开关瞬间的电流尖峰。两节电芯的中间节点也要加1μF到10μF的电容,稳定中点电压。这些电容选X7R或X5R材质,耐压至少16V,留足余量。
2.2 PIC18LF46K40的ADC采样与均衡控制逻辑
PIC18LF46K40的12位ADC用来采集两节电芯的电压。两串电池的电压范围是6V到8.4V(磷酸铁锂)或6V到8.4V(三元锂),但单片机的ADC参考电压通常选内部2.048V或4.096V,不能直接测8.4V。所以需要电阻分压。分压电阻的选型要注意:阻值不能太小,否则静态功耗大,备用电源长期浮充时会把电池耗干;阻值也不能太大,否则ADC输入阻抗不匹配,采样不准。
我一般用100kΩ和100kΩ分压,这样8.4V输入时ADC端是4.2V,超过内部参考4.096V一点,所以实际用110kΩ和100kΩ,分压比约0.476,8.4V对应4.0V,刚好在参考电压范围内。分压电阻的精度用1%,温漂50ppm/°C以内。ADC采样时,采样保持时间要够,因为分压电阻大,等效输入阻抗高。PIC18LF46K40的ADC采样时间可以通过寄存器配置,我设成至少10μs,确保采样电容充满。
两节电芯的电压采集需要两个ADC通道,分别测上节和下节。下节电芯的负极是系统地,直接测;上节电芯的正极是电池组正极,通过分压测;上节电芯的负极就是两节中间节点,也通过分压测。然后上节电压 = 上节正极电压 - 中间节点电压,下节电压 = 中间节点电压。这样算出来比直接测单节更准,因为共模干扰被抵消了一部分。
均衡控制的逻辑不复杂,但阈值和迟滞要设好。我设的规则是:
- 压差 > 50mV:启动均衡
- 压差 < 20mV:停止均衡
- 压差在20mV到50mV之间:保持当前状态,避免频繁启停
这个迟滞区间很重要,否则压差在阈值附近抖动时,均衡会反复开关,MOS和电感发热,效率也低。均衡启动后,PIC18LF46K40通过一个GPIO引脚使能MP2642GR-Z的EN端,芯片开始工作。同时单片机用另一个ADC通道监控均衡电流采样电阻上的电压,如果电流超过设定值(比如600mA),立即拉低EN端,关断均衡,并在UART上报警。
实操心得:MP2642GR-Z的EN引脚内部有上拉,单片机GPIO配置成开漏输出更安全,避免单片机复位时EN被意外拉高。我一开始用推挽输出,结果单片机复位瞬间EN跳了一下,均衡误启动,后来改成开漏加外部上拉,问题解决。
2.3 电源管理与低功耗设计
备用电源系统对静态功耗极其敏感。电池组可能几个月甚至一年都不充放电,如果均衡电路或单片机静态电流太大,电池自己就放空了。PIC18LF46K40的休眠电流在几十纳安级别,但外围电路要配合好。
首先,分压电阻的静态电流要算清楚。110kΩ + 100kΩ = 210kΩ,8.4V下电流是40μA。这个电流虽然不大,但一年下来就是350mAh,对2000mAh的电池来说就是17%的容量。所以分压电阻不能一直挂着。我的做法是:用MOS管控制分压电阻的接地端,只在ADC采样时导通,采样完立刻断开。MOS选小信号N沟道,导通电阻几欧姆就行,栅极由单片机GPIO控制。这样静态电流降到1μA以下。
其次,MP2642GR-Z的静态电流也要关注。芯片在EN拉低时进入关断模式,电流只有几微安。但要注意,关断时电感和MOS的漏电流路径要切断,否则电池还是会通过寄生二极管慢慢放电。我在电感和电芯之间加了背靠背MOS,或者直接用MP2642GR-Z的关断功能,实测关断后电池自放电在5μA以内,可以接受。
PIC18LF46K40的看门狗要开着,防止程序跑飞。低功耗定时器用来周期性唤醒单片机做电压采样,比如每10秒采样一次,采样时间1ms,其余时间休眠。这样平均电流可以压到10μA以下。如果压差超过阈值,单片机唤醒后启动均衡,均衡期间电流会上升到几百毫安,但均衡时间通常只有几十分钟到几小时,对整体功耗影响不大。
3. 均衡策略实现与软件流程
3.1 电压采样与滤波算法
ADC采样出来的电压值不能直接用,因为开关噪声、负载波动、温度漂移都会影响。我一般做两级滤波:第一级是硬件RC滤波,在分压电阻后面加1kΩ + 100nF的低通,截止频率约1.6kHz,把开关噪声滤掉;第二级是软件滑动平均,连续采16次,去掉最大最小值,剩下14次取平均。这样得到的电压值波动在±2mV以内,足够判断压差。
采样时机也有讲究。均衡工作时,电池上有开关纹波,这时候采样会不准。所以我的策略是:均衡期间暂停电压采样,或者只在均衡MOS关断的间隙采样。MP2642GR-Z的开关频率是300kHz,周期3.3μs,单片机ADC采样时间10μs,根本来不及在间隙采样。所以干脆均衡期间不采样,等均衡停止后再采样判断。这样虽然响应慢一点,但数据可靠。
如果非要在均衡期间监控电压,可以用过采样+数字滤波,但PIC18LF46K40的ADC速度有限,效果一般。我的建议是:均衡期间只监控电流和温度,电压等均衡停了再测。均衡停20ms,采样,再决定是否继续均衡,这个循环对电池没有影响。
3.2 均衡启停与能量转移控制
MP2642GR-Z的均衡启停由EN引脚控制,但能量转移的方向芯片自己判断。芯片内部会比较两节电芯的电压,自动决定是从上节转移到下节,还是反过来。这个判断是实时的,不需要单片机干预。单片机只需要告诉芯片“开始均衡”或“停止均衡”。
但有一个细节要注意:MP2642GR-Z的均衡电流是固定的,由电感和频率决定,不能通过单片机调节。所以如果压差很大(比如500mV),均衡电流会比较大(可能超过500mA),这时候要确认电感和MOS能承受。我实测过,压差500mV时,1μH电感下均衡电流约450mA,MOS发热约0.5W,需要敷铜散热。如果压差经常很大,建议选2.2μH电感,把电流压到200mA左右,发热小,但均衡时间会长一些。
均衡过程中,两节电芯的电压会逐渐靠近。当压差降到20mV以下,单片机拉低EN,停止均衡。但停止后,由于电池内阻和极化效应,压差可能会反弹几毫伏。所以我的做法是:停止均衡后等30秒再采样,如果压差又超过50mV,再次启动均衡。这个“停止-等待-再判断”的循环,能避免均衡振荡。
注意:均衡过程中如果电池正在充电或放电,压差判断会受负载影响。充电时,电压高的电芯可能因为内阻大而显得更高,这时候均衡反而会加剧不平衡。所以均衡最好在静置或小电流充放电时进行。如果必须在充放电时均衡,要降低均衡阈值,比如压差>80mV才启动,避免误判。
3.3 保护机制与故障处理
MP2642GR-Z内部有过流保护,当采样电阻上的压降超过阈值(典型值50mV,对应2.5A)时,芯片自动关断。但2.5A对两串电池来说太大了,可能烧电感或MOS。所以我在软件层面设了更低的保护点:单片机监控采样电阻电压,超过12mV(对应600mA)就拉低EN,关断均衡,并记录故障。
过温保护也很重要。MP2642GR-Z内部有温度传感器,但测的是芯片自身温度,不是电感或MOS的温度。我在电感旁边放了一个NTC热敏电阻,接到PIC18LF46K40的ADC通道,监控电感温度。如果超过85°C,停止均衡,等温度降到60°C以下再恢复。MOS的温度可以通过热成像或者估算来判断,如果MOS表面温度超过100°C,也要停。
电池过压/欠压保护由单片机实现。如果任何一节电芯电压超过4.25V(三元锂)或3.65V(磷酸铁锂),立即停止均衡,因为均衡可能会让电压更高的那节继续升高(虽然MP2642GR-Z是能量转移,但转移过程中高电压电芯会短暂放电,低电压电芯会短暂充电,如果低电压电芯已经接近满充,继续均衡会过充)。同样,如果电芯电压低于2.5V(三元锂)或2.0V(磷酸铁锂),也停止均衡,避免过放。
故障记录通过UART输出,格式我一般用简单的ASCII:
printf("FAULT: OV_CELL1 %d mV\r\n", cell1_mv); printf("FAULT: OT_INDUCTOR %d C\r\n", inductor_temp); printf("FAULT: OC_BALANCE %d mA\r\n", balance_current);这样接上串口助手就能看,调试方便。
4. 实测数据与常见问题排查
4.1 均衡效率与温升实测
我用两节18650三元锂(标称3.7V,满充4.2V,容量2600mAh)做了测试。初始状态:一节4.15V,另一节3.95V,压差200mV。环境温度25°C,电感1μH,开关频率300kHz。
| 时间 | 上节电压 | 下节电压 | 压差 | 均衡电流 | 电感温度 |
|---|---|---|---|---|---|
| 0min | 4.15V | 3.95V | 200mV | 380mA | 28°C |
| 10min | 4.10V | 4.00V | 100mV | 190mA | 35°C |
| 20min | 4.06V | 4.03V | 30mV | 60mA | 38°C |
| 25min | 4.05V | 4.04V | 10mV | 20mA | 39°C |
均衡25分钟,压差从200mV降到10mV,能量转移效率约85%(损耗主要在电感和MOS的导通电阻上)。电感温度最高39°C,温升14°C,可以接受。如果压差更大,比如500mV,均衡电流会到450mA,电感温度会到50°C左右,需要敷铜面积至少100mm²来散热。
均衡效率的计算:转移的能量 = 压差 × 容量 × 均衡时间。实际测下来,200mV压差、2600mAh电池,均衡消耗的能量约0.5Wh,其中约0.42Wh转移到低电压电芯,0.08Wh变成热。这个效率在主动均衡里算不错的,比被动均衡的0%效率高得多。
4.2 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方法 |
|---|---|---|---|
| 均衡不启动 | EN引脚电平不对 | 万用表测EN对地电压 | 检查单片机GPIO配置,确认开漏输出 |
| 均衡电流小 | 电感值太大 | 测电感两端波形 | 换小电感,或提高开关频率 |
| 均衡电流大 | 电感值太小 | 测采样电阻电压 | 换大电感,或降低开关频率 |
| 电感发热严重 | 电感饱和电流不够 | 测电感电流波形 | 换饱和电流更大的电感 |
| 电压采样不准 | 分压电阻精度差 | 万用表对比ADC值 | 换1%精度电阻,加RC滤波 |
| 压差反复振荡 | 迟滞区间太小 | 观察压差变化 | 增大迟滞,停止后等30秒再判断 |
| 单片机复位 | 电源跌落 | 示波器测VDD | 加100μF电解电容,改善供电 |
| 均衡时通信中断 | 地弹干扰 | 示波器测地线 | 单点接地,UART加磁珠 |
4.3 独家避坑技巧
第一个坑:电感选型只看感值,不看饱和电流。我一开始用了一个1μH、饱和电流500mA的电感,结果压差大时均衡电流冲到600mA,电感饱和,电流波形畸变,MOS发热严重。后来换成1μH、饱和电流1.5A的屏蔽电感,问题解决。选电感时,饱和电流至少是最大均衡电流的2倍,留足余量。
第二个坑:采样电阻布局不对,过流保护点漂移。采样电阻如果离芯片太远,走线电阻会叠加在采样电压上,导致实际保护点比设定值高。我一开始把采样电阻放在电感旁边,离芯片5mm,结果保护点从600mA漂到750mA。后来改成采样电阻紧贴芯片引脚,开尔文连接,保护点稳定在600mA±20mA。
第三个坑:均衡期间ADC采样被干扰。均衡时开关噪声通过地线串到ADC,采样值跳变几十毫伏。我试过加RC滤波,效果有限。最后改成均衡期间不采样,等均衡停了再测,数据干净。这个改动虽然简单,但效果立竿见影。
第四个坑:单片机复位导致均衡误启动。PIC18LF46K40复位时GPIO是高阻态,如果EN引脚外部上拉,复位瞬间EN被拉高,均衡启动。我后来在EN引脚加了一个100kΩ下拉电阻,确保复位时EN是低电平。同时单片机初始化时第一时间把EN拉低,再配置其他外设。
第五个坑:电池长期浮充时均衡板耗电。备用电源系统里,电池可能几个月不动。如果均衡板静态电流大,电池自己就放空了。我实测过,分压电阻一直挂着,静态电流40μA,三个月耗电约90mAh,对2000mAh电池就是4.5%。后来用MOS控制分压电阻,静态电流降到1μA以下,一年耗电不到10mAh,可以忽略。
最后分享一个小技巧:MP2642GR-Z的均衡电流可以通过改变开关频率来微调。如果你觉得均衡太快、发热大,可以把频率从300kHz提到400kHz,均衡电流会降约25%,发热也小。如果你觉得均衡太慢,把频率降到200kHz,均衡电流会升约50%,但电感要选饱和电流更大的。这个调节不需要换硬件,改一个电阻就行,调试时很方便。
这套方案我在几个备用电源项目里用过,两串磷酸铁锂和三元锂都跑过,均衡效果稳定,压差能长期维持在20mV以内。如果你也在做两串电池的均衡,MP2642GR-Z加PIC18LF46K40这个组合值得一试,硬件简单,软件好写,关键是主动均衡的效率比被动均衡高太多,长期来看电池组的可用容量能多出10%到15%,这个收益对储能系统来说很实在。