1. 储能电池均衡的底层逻辑与方案选型
1.1 为什么串联电池组必须做均衡
先聊一个很多人踩过的坑。两组标称容量、内阻、出厂日期完全一致的电池单元串联使用,循环几十次之后,端电压差就能拉到100mV以上。这个差异不是电池质量问题,而是制造公差、温度梯度、自放电率差异共同作用的结果。串联回路里电流处处相等,容量小的那颗单元会先被充满、也先被放空,长期处于过充过放状态,内阻加速上升,容量加速衰减,最终整组电池的可用容量被最弱的那颗单元锁死。
储能系统和备用电源系统对这一点尤其敏感。备用电源平时浮充、偶尔放电,电池长期处于高SOC区间,自放电差异被持续放大;储能系统则是高频次浅充浅放,对均衡的实时性要求更高。被动均衡靠电阻放电,结构简单但效率低、发热大,在备用电源这种长期浮充场景下勉强够用;主动均衡把能量从高电压单元搬到低电压单元,效率高、发热小,更适合储能这种对循环寿命敏感的场景。
标题里提到的方案,核心是用MP2642GR-Z这颗双向升降压充电管理芯片,配合PIC18F4553这颗带全速USB 2.0的8位MCU,对两个串联电池单元做主动均衡。选这个组合不是随便拍的,下面拆开讲。
1.2 为什么是MP2642GR-Z而不是分立方案
MP2642GR-Z 是一颗面向双节串联电池的升降压充电管理IC,支持双向能量流动,内置四开关H桥拓扑。用它做均衡,最大的好处是把功率级和控制逻辑都集成在单芯片里,外围只需要电感、采样电阻和少量电容,PCB面积能压到很小。
如果换成"MCU + 分立MOS + 独立驱动"的方案,光是H桥的驱动死区、电流采样、环路补偿就够调两周,而且8位MCU跑PID环路,采样和PWM的时序抖动会直接影响均衡电流的纹波。MP2642GR-Z 内部集成了恒流/恒压环路和状态机,MCU只需要通过I2C配置目标电流和方向,剩下的交给芯片自己跑,开发周期能缩短一大截。
注意:MP2642GR-Z 的I2C地址是固定的,多颗芯片挂在同一总线时需要用I2C多路复用器做通道切换,这一点在双节以上的系统里必须提前规划。
1.3 PIC18F4553在这里扮演什么角色
PIC18F4553 是Microchip的8位MCU,48MHz主频,自带全速USB 2.0控制器,8KB RAM,32KB Flash。选它做均衡控制器,主要看中三点:
第一,它有两路独立的MSSP模块,可以同时跑I2C和SPI,I2C用来配置MP2642GR-Z,SPI用来接外部ADC或者隔离通信芯片,不用分时复用。
第二,它的PWM模块带死区控制,虽然均衡主环路由MP2642GR-Z内部跑,但MCU需要输出使能信号和故障保护逻辑,硬件PWM比软件延时可靠得多。
第三,USB接口在备用电源系统里很实用,可以直接对接上位机做参数配置和状态监控,不用额外加USB转串口芯片。
1.4 整体架构一句话说清
两颗串联电池单元分别记为Cell1(下节)和Cell2(上节)。MP2642GR-Z 的功率级接在两颗单元之间,通过电感把能量从电压高的那颗搬到电压低的那颗。PIC18F4553 周期性地采集两颗单元的端电压和均衡电流,算出电压差,通过I2C告诉MP2642GR-Z该往哪个方向搬、搬多大电流。整个系统是一个"MCU做决策、专用IC做执行"的分层结构。
2. 硬件设计与关键参数计算
2.1 功率级拓扑与电感选型
MP2642GR-Z 在均衡应用里接成双向升降压模式。当Cell2电压高于Cell1时,芯片工作在降压方向,把Cell2的能量通过电感存放到Cell1;反之工作在升压方向。电感是整个功率级的核心,选型直接决定均衡电流的纹波和效率。
均衡电流设定为1A(这个值后面会讲怎么定),开关频率典型值500kHz。电感纹波电流按额定电流的30%设计,即ΔIL = 0.3A。升降压拓扑里电感电流纹波公式为:
ΔIL = (Vout × (1 - D)) / (L × fsw)
其中D为占空比,最恶劣工况出现在D=0.5附近,此时Vout ≈ Vin。代入ΔIL=0.3A、fsw=500kHz、Vout取单节典型电压3.7V:
L = (3.7 × 0.5) / (0.3 × 500000) ≈ 12.3μH
取标称值12μH,饱和电流要留足余量。峰值电流 = 1A + 0.15A = 1.15A,考虑瞬态和温升,选饱和电流3A以上的屏蔽电感,DCR尽量低于30mΩ,否则1A电流下的导通损耗就有30mW,效率直接掉几个点。
实操心得:电感一定要选屏蔽型。非屏蔽电感的漏磁会耦合到旁边的电压采样走线上,导致ADC读数跳动,均衡逻辑误判。我早期用非屏蔽电感调了一周,最后换屏蔽电感问题直接消失。
2.2 采样电阻与电流检测
均衡电流采样用10mΩ的精密电阻,放在电感和Cell1之间。1A电流下压降10mV,这个信号太小,直接进ADC会被噪声淹没,需要加一级仪表放大器,增益设50倍,输出500mV满量程。
采样电阻的温漂很关键。普通厚膜电阻温漂100ppm/°C,10mΩ在温度变化50°C时阻值漂移0.05mΩ,对应电流误差0.5%,勉强可接受。如果对均衡精度要求高,建议用合金电阻,温漂25ppm/°C,代价是价格贵三倍。
电流采样信号进PIC18F4553之前,要经过一个RC低通滤波,截止频率设在开关频率的1/10以下,即50kHz。取R=1kΩ、C=3.3nF,截止频率约48kHz,能有效滤掉开关纹波又不影响均衡环路的动态响应。
2.3 电压采样与分压网络
两颗电池单元的端电压都要采。Cell1直接对地,分压后进ADC即可;Cell2是叠在Cell1上面的,端电压对地最高到8.4V,分压比要重新算。
PIC18F4553的ADC参考电压设为4.096V(外部基准),12位分辨率下LSB约1mV。Cell1最高4.2V,分压比取1:1.2,即上分压电阻12kΩ、下分压电阻10kΩ,满量程对应5.04V,留了余量。Cell2最高8.4V,分压比取1:2.2,上分压电阻22kΩ、下分压电阻10kΩ,满量程对应9.02V。
分压电阻的精度直接影响均衡精度。用1%精度的电阻,两颗单元的分压比误差可能差2%,导致均衡目标电压偏差几十mV。建议用0.1%精度的匹配电阻对,或者出厂时做一次两点校准,把分压比的实际值写进MCU的Flash。
2.4 电源与隔离设计
MP2642GR-Z 的供电直接从电池组取,VIN接Cell2正极,最低工作电压2.7V,两颗单元放到2.7V×2=5.4V时芯片仍能工作,但此时电池已经过放,均衡应该早就停止了。
PIC18F4553 的供电需要3.3V,从电池组经一颗LDO降压得到。LDO的静态电流要低,备用电源系统长期待机,LDO静态电流每高1mA,一年就多耗8.76Ah,对备用电源来说是不可忽视的损耗。选静态电流10μA级别的LDO,比如带使能脚的CMOS LDO。
如果电池组和上位机之间需要通信隔离,SPI侧加一颗数字隔离器,隔离耐压按系统要求选,一般2.5kVrms够用。隔离器的供电要从电池侧单独取,不能和MCU侧共地,否则隔离失效。
3. 固件架构与均衡算法实现
3.1 主循环与任务调度
PIC18F4553 不带RTOS,用前后台架构就够了。主循环里跑三个任务:电压采集、均衡决策、USB通信。电压采集每100ms跑一次,均衡决策每500ms跑一次,USB通信挂在中断里。
为什么电压采集和均衡决策频率不同?因为电池端电压在均衡电流切换瞬间会有IR drop和极化电压,需要等电压稳定后再判断。100ms采集一次,连续采5次取平均,500ms做一次决策,能有效滤掉瞬态波动。
// 简化的主循环结构 void main(void) { SYSTEM_Initialize(); while(1) { if (adc_tick_100ms) { adc_tick_100ms = 0; sample_cell_voltages(); sample_balance_current(); } if (decision_tick_500ms) { decision_tick_500ms = 0; balance_decision(); } usb_task(); } }3.2 电压采集的滤波与校准
ADC采回来的原始值要经过三步处理:去极值平均、分压比还原、开路电压补偿。
去极值平均:连续采7次,去掉最大和最小,剩下5次取平均。这一步能滤掉偶发的尖峰噪声。
分压比还原:乘以出厂校准时分压比的实际值。校准方法是在输入端加一个精密基准电压,读ADC值,反算分压比。
开路电压补偿:均衡电流流过电池内阻会产生压降,采样到的端电压不等于开路电压。补偿公式为:
V_ocv = V_measured - I_balance × R_internal
R_internal需要提前测量,方法是在电池组上加载一个已知电流,测端电压变化量,除以电流即得。两颗单元的内阻可能不同,要分别测量。
注意:内阻随温度和SOC变化,固定值补偿只能做到近似。如果对均衡精度要求极高,需要在不同SOC点做内阻标定,做成查表。
3.3 均衡决策逻辑
决策逻辑的核心是死区控制加滞环。设两颗单元的电压差为ΔV = V_cell2 - V_cell1。
当|ΔV| < 10mV时,不启动均衡,避免频繁切换导致效率下降和EMI问题。
当ΔV > 10mV时,启动均衡,方向为Cell2到Cell1,均衡电流按ΔV大小分档:ΔV在10mV到50mV之间,电流设200mA;50mV到150mV,电流设500mA;150mV以上,电流设1A。
当ΔV < -10mV时,反向均衡,逻辑对称。
为什么用分档而不是连续调节?因为MP2642GR-Z的电流设定通过I2C写寄存器,连续调节需要频繁写寄存器,增加总线负载和功耗。分档控制在这个应用里精度足够,实现也简单。
滞环的作用是防止在阈值附近来回切换。比如ΔV降到8mV时停止均衡,但要等到ΔV重新升到10mV以上才再次启动,中间2mV的滞环带能有效抑制振荡。
3.4 故障保护与状态机
均衡系统最怕的是过流和过温。MP2642GR-Z 本身有逐周期限流,但MCU层面还要加一层保护。
过流保护:采样电流连续3次超过设定值的120%,立即通过I2C关闭MP2642GR-Z的输出,置故障标志,等上位机清除。
过温保护:MP2642GR-Z 和电感附近各贴一颗NTC,MCU每500ms读一次温度。超过85°C降额运行,超过105°C直接关断。
电池过放保护:任意一颗单元电压低于2.8V,停止均衡。均衡本身耗电,过放时继续均衡会加速电池损坏。
状态机用switch-case实现,状态包括:IDLE(空闲)、BALANCING(均衡中)、FAULT(故障)、CHARGING(充电中,均衡暂停)。充电时暂停均衡是因为充电电流会干扰电压采样,等充电结束再恢复。
4. 实测数据与问题排查实录
4.1 均衡效率实测
在1A均衡电流下,用功率分析仪测输入输出功率。Cell2电压4.0V,Cell1电压3.8V,理论搬运功率 = 1A × 3.8V = 3.8W。实测Cell2侧输出功率4.15W,Cell1侧接收功率3.8W,效率约91.6%。
损耗主要来自三部分:电感DCR损耗约30mW,MOS开关损耗约150mW,采样电阻损耗10mW,剩余为芯片静态损耗和驱动损耗。91.6%的效率在双向升降压拓扑里属于正常水平,想再往上提,换更低DCR的电感和更低Qg的MOS,但成本会上去。
4.2 电压采样跳变问题
调试初期遇到ADC读数每隔几秒跳变一次,幅度约20mV。排查过程如下:
第一步,用示波器看ADC输入引脚,发现跳变时伴随一个高频振铃,频率约2MHz。第二步,查走线,发现电压采样走线和电感走线平行走了3cm,明显是磁耦合。第三步,把采样走线改道,远离电感,跳变幅度降到5mV。第四步,在ADC输入加RC滤波,截止频率降到10kHz,跳变完全消失。
这个坑很典型。功率级和采样级的布局隔离,在画板阶段就要规划好,等板子回来再改,只能飞线,可靠性差。
4.3 均衡电流上不去的排查
设定1A,实际只有600mA。按以下顺序排查:
| 排查项 | 正常值 | 实测值 | 结论 |
|---|---|---|---|
| 电感饱和电流 | >3A | 3A | 正常 |
| 采样电阻阻值 | 10mΩ | 10.2mΩ | 正常 |
| I2C配置寄存器 | 0x1F | 0x1F | 正常 |
| 输入电压 | >3.0V | 3.9V | 正常 |
| 电感DCR | <30mΩ | 85mΩ | 异常 |
最后定位到电感DCR过大。换用DCR 25mΩ的电感后,均衡电流恢复到980mA。DCR过大会导致芯片内部环路提前进入限流状态,因为芯片检测的是采样电阻上的电压,但实际负载还包括电感DCR,环路误以为电流已经到位。
实操心得:选电感时不要只看饱和电流和感值,DCR必须算进环路。经验公式是DCR上的压降不超过采样电阻压降的20%,即10mΩ采样电阻对应DCR不超过2mΩ?不对,这里要重新算。采样电阻10mΩ,1A时压降10mV。DCR 85mΩ,1A时压降85mV,是采样压降的8.5倍,环路当然误判。DCR应控制在采样电阻的1到2倍以内,即10到20mΩ。
4.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不启动 | 电压差未超阈值 | 读ADC值 | 检查阈值设置 |
| 均衡电流偏小 | 电感DCR大 | 测电感两端压降 | 换低DCR电感 |
| ADC读数跳动 | 采样走线受干扰 | 示波器看波形 | 改走线加滤波 |
| 芯片发热严重 | 开关损耗大 | 测MOS栅极波形 | 换低Qg MOS |
| I2C通信失败 | 上拉电阻不对 | 测SCL/SDA电平 | 调整上拉阻值 |
| 均衡方向反了 | 电压采样接反 | 核对分压网络 | 交换采样输入 |
4.5 均衡策略的进阶优化
基础版均衡策略是"电压差超阈值就搬能量",但实际使用中发现两个问题:一是电池在充放电过程中电压波动大,均衡频繁启停;二是均衡只考虑电压,没考虑SOC差异。
进阶优化引入SOC估算。用开路电压法加安时积分法估算每颗单元的SOC,均衡目标从"电压相等"改为"SOC相等"。这样在充放电动态过程中,均衡不会因为瞬时电压波动而误动作。
SOC估算的实现:静置时用开路电压查表得SOC初值,充放电时用安时积分累加,每隔一段时间用开路电压修正。PIC18F4553的8KB RAM够存一张256点的SOC-OCV表,Flash存表也绰绰有余。
另一个优化是均衡电流自适应。根据温度调整最大均衡电流,温度低于0°C时降到300mA,0到45°C用1A,45°C以上线性降额到600mA。这样能兼顾均衡速度和电池安全。
5. 系统集成与上位机对接
5.1 USB通信协议设计
PIC18F4553 的USB控制器支持全速12Mbps,做参数配置和状态上报绰绰有余。协议用简单的自定义帧格式:帧头2字节、命令1字节、长度1字节、数据N字节、CRC16两字节。
命令集包括:读电压、读电流、读温度、设均衡电流、设阈值、清故障、读状态。上位机每500ms轮询一次,MCU收到命令后解析执行,返回响应帧。
USB描述符配置成CDC类,上位机免驱识别为虚拟串口。这样上位机开发最简单,用串口助手就能调试,不用写USB驱动。
5.2 上位机监控界面
上位机用Python加PyQt写,串口库用pyserial。界面分三块:实时曲线区显示两颗单元电压和均衡电流,参数配置区设置阈值和电流档位,日志区记录故障和操作。
实时曲线用pyqtgraph,刷新率10Hz,能清楚看到均衡启动后电压差逐渐收敛的过程。实测从150mV电压差均衡到10mV以内,1A电流下大约需要12分钟,曲线呈指数收敛,符合RC模型预期。
5.3 长期运行稳定性
备用电源系统要求7×24小时运行,固件里加了看门狗和异常复位记录。看门狗超时设2秒,主循环里每500ms喂一次。如果程序跑飞,看门狗复位后从Flash读复位原因,如果是看门狗复位,记录次数并上报。
连续运行30天的实测数据:均衡系统累计启动47次,平均每次运行8分钟,未出现误动作或通信中断。环境温度从-10°C到55°C循环,均衡电流在低温下自动降额,高温下芯片温度最高78°C,未触发过温保护。
这个方案的成本核算下来,MP2642GR-Z加PIC18F4553加外围,BOM成本在3美元左右,比用专用均衡IC加独立MCU的方案便宜约20%,而且灵活性更高,阈值和电流都能通过上位机改,不用重新烧固件。
最后分享一个调试小技巧:均衡系统首次上电时,先不要接电池,用直流电源模拟两颗单元,电压设成有差异的值,观察均衡电流和方向是否正确。确认逻辑无误后再接真实电池,能避免因逻辑错误导致的电池过放。这个步骤看起来多余,但我见过不止一个团队直接上电池调试,结果均衡方向反了,把好电池的电搬到了坏电池上,白白损失一组单元。