1. 储能电池均衡的底层逻辑与方案选型
1.1 为什么串联电池组必须做均衡
两节电芯串联给负载供电,看起来简单,实际用起来问题不少。电芯出厂时容量、内阻、自放电率就有微小差异,经过几十上百次充放电循环后,这种差异会被放大。串联回路里电流处处相等,充电时容量小的那节先到上限电压,放电时它又先到下限电压。如果BMS只盯着整组总压做保护,容量小的那节会长期处于过充或过放状态,内阻进一步增大,容量加速衰减,最终整组可用容量被最弱的那节电芯拖死。
储能系统和备用电源对循环寿命的要求通常在三到五千次以上,没有均衡功能的串联电池组,实际寿命可能连标称值的一半都跑不到。所以均衡不是锦上添花的功能,而是串联电池组能不能长期稳定运行的关键环节。
1.2 被动均衡与主动均衡的取舍
被动均衡靠电阻放电,把电压高的那节电芯多余的能量以热量形式消耗掉。优点是电路简单、成本低、可靠性高;缺点是能量白白浪费,均衡电流一般只有几十到一百多毫安,大容量电池组均衡一次要几个小时。
主动均衡把能量从高电压电芯搬到低电压电芯,效率高、速度快,但拓扑复杂,变压器、电感、MOSFET驱动一堆外围器件,成本和故障率都上去了。
储能和备用电源场景有个特点:电池组大部分时间处于浮充或待机状态,对均衡速度要求没那么苛刻,但对可靠性和静态功耗要求极高。所以在这个场景下,用MP2642GR-Z这类专用均衡芯片做被动均衡,反而是性价比最高的选择。它把均衡MOSFET、驱动、保护逻辑集成在一颗芯片里,外围只需要少量电阻电容,BOM精简,长期运行的失效率也低。
1.3 为什么选MP2642GR-Z配STM32F745ZG
MP2642GR-Z是一颗专为多节串联电池均衡设计的芯片,内部集成均衡开关管,支持通过外部电阻设定均衡电流,具备过温保护和欠压锁定。它的逻辑接口简单,适合由MCU直接控制。
STM32F745ZG是STM32F7系列里的高性能型号,Cortex-M4内核带浮点单元,主频216MHz,1MB Flash、320KB RAM,外设资源丰富:多路12位ADC、DMA控制器、多个定时器和通信接口。用它来做电池管理,好处是采样、均衡控制、通信上报、保护逻辑可以全部在一颗MCU里完成,不需要额外的协处理器。F745的ADC配合DMA可以实现多通道自动扫描,采样过程不占CPU,均衡算法的执行也不会被采样打断。
这个组合的核心思路是:MP2642GR-Z负责功率级的均衡执行,STM32F745ZG负责电压采样、均衡策略决策和系统通信。分工明确,各司其职。
2. 硬件设计核心细节与参数计算
2.1 均衡电流的设定与电阻计算
均衡电流决定了均衡速度和发热量,需要根据电芯容量和系统散热条件来定。假设两节电芯容量为20Ah,希望在不充电的静置状态下,用4小时左右把0.5V的电压差拉平,那么需要的均衡电流大致为:
I = C × ΔV / (V_cell × t)
代入数值:I = 20Ah × 0.5V / (3.7V × 4h) ≈ 0.68A
这个电流对被动均衡来说偏大,实际工程中通常取100mA到300mA。均衡电流越大,电阻发热越严重,PCB局部温升可能超过40℃。所以我的经验是:储能场景均衡电流取150mA到200mA比较稳妥,既能在一天内完成均衡,发热也在可控范围内。
MP2642GR-Z的均衡电流由外部检测电阻设定。假设设定200mA,电芯电压3.7V,则检测电阻:
R_sense = V_ref / I_bal
如果芯片内部参考电压为0.1V,则R_sense = 0.1V / 0.2A = 0.5Ω。实际选型时要用1%精度的金属膜电阻,功率至少0.25W,留足余量。电阻的温漂要小,否则均衡电流会随温度漂移。
2.2 采样通道的分配与滤波
STM32F745ZG的ADC1和ADC2可以独立工作,也可以配合做同步采样。两节电芯的电压采样有两种接法:
第一种是差分采样,每节电芯的正负极分别接入ADC的两个通道,用差分模式读取。这种方式抗共模干扰能力强,但占用通道多。
第二种是单端采样,电芯负极接参考地,正极接ADC通道,通过软件做减法得到每节电压。这种方式节省通道,但上节电芯的采样会引入下节电芯的共模电压,需要电阻分压网络做衰减。
我实际用下来,两节电芯的场景推荐单端加分压的方案。上节电芯电压经过精密电阻分压后接入ADC,分压比取1:1,即两个等值电阻串联,中点接ADC。这样上节电芯的3.7V被分到1.85V,落在ADC参考电压3.3V以内。分压电阻取100kΩ对100kΩ,静态电流37μA,对电池自放电的影响可以忽略。
采样端必须加RC滤波,电阻取1kΩ,电容取100nF,截止频率约1.6kHz。这个频率远高于电池电压的变化频率,但能有效滤掉开关噪声和工频干扰。ADC采样时间设为480个时钟周期,配合12位分辨率,实际有效位数能到11位以上,电压分辨率约0.8mV,足够判断均衡需求。
2.3 均衡开关的驱动与保护
MP2642GR-Z内部集成了均衡MOSFET,但栅极驱动电压需要外部提供。芯片的VCC引脚接电芯正极,GND接电芯负极,这样每颗芯片的供电就来自它所管理的电芯本身。两节电芯需要两颗MP2642GR-Z,分别跨接在各自电芯两端。
这里有个关键点:两颗芯片的GND参考点不同。下节芯片的GND是系统地,上节芯片的GND是下节电芯的正极。所以MCU发出的控制信号不能直接驱动上节芯片,必须经过电平转换。常用的方案是用光耦或者数字隔离器,把MCU的3.3V逻辑电平转换成上节芯片参考地对应的电平。
我试过用光耦做隔离,响应速度慢,但均衡控制对速度要求不高,完全够用。光耦的LED限流电阻取1kΩ,输出端上拉电阻取10kΩ,确保逻辑电平干净。如果追求更快的响应和更小的体积,可以用电容隔离型数字隔离器,但成本会高一些。
保护方面,MP2642GR-Z自带过温保护,芯片结温超过150℃时会自动关断均衡。但芯片表面温度和结温有差距,实际布板时要把芯片放在通风位置,周围不要有大功率器件。如果系统环境温度可能超过60℃,建议在芯片附近加一颗NTC热敏电阻,由MCU监测温度,超过阈值时主动关闭均衡。
3. 软件架构与均衡策略实现
3.1 采样任务与DMA配置
STM32F745ZG的ADC配置成扫描模式,DMA循环搬运。采样序列里放三个通道:下节电芯电压、上节电芯分压后电压、NTC热敏电阻电压。DMA缓冲区定义三个uint16_t变量,ADC每完成一轮转换,DMA自动把数据搬到缓冲区,CPU完全不用干预。
采样频率设为100Hz,即每10ms采一轮。这个频率对电池电压监测来说绰绰有余,电池电压的变化时间常数在秒级以上。100Hz的采样率还能有效捕捉负载突变时的电压波动,为保护逻辑提供快速响应。
DMA传输完成中断里置一个标志位,主循环检测到标志位后读取缓冲区数据,做滑动平均滤波。滑动窗口取16个点,滤波后的电压值用于均衡判断。滑动平均能有效抑制随机噪声,但会引入约80ms的延迟,对均衡控制来说完全可以接受。
3.2 均衡判断逻辑与滞回设计
均衡判断的核心是比较两节电芯的电压差。如果电压差超过阈值,就开启电压高的那节的均衡;如果电压差小于阈值,就关闭均衡。但直接用单阈值判断会导致均衡频繁开关,因为电压差在阈值附近波动时,均衡一开一关,电压差也跟着上下跳。
解决办法是加滞回。开启阈值设为50mV,关闭阈值设为20mV。也就是说,电压差超过50mV时开启均衡,均衡过程中电压差逐渐缩小,当缩小到20mV以下时才关闭。这样在20mV到50mV之间,均衡状态保持不变,避免了频繁开关。
滞回窗口的大小要根据均衡电流和采样噪声来定。均衡电流200mA,电芯容量20Ah,均衡时电压下降速率约为:
dV/dt = I_bal / C = 0.2A / 20Ah = 0.01V/h = 10mV/h
也就是说,均衡一小时电压才降10mV。采样噪声经过滤波后大约在5mV以内,所以20mV的滞回窗口足够覆盖噪声,不会误触发。
3.3 均衡状态机的实现
用状态机来管理均衡过程比较清晰。定义四个状态:IDLE、BALANCING_HIGH、BALANCING_LOW、COOLDOWN。
IDLE状态下,MCU持续采样,计算电压差。如果电压差超过开启阈值,根据哪节电压高,跳转到BALANCING_HIGH或BALANCING_LOW。
BALANCING_HIGH状态下,MCU拉高对应均衡控制引脚,开启上节电芯的均衡。同时继续采样,如果电压差降到关闭阈值以下,跳转到COOLDOWN;如果温度超过保护阈值,也跳转到COOLDOWN。
COOLDOWN状态下,均衡关闭,等待一段时间让电芯电压稳定。因为均衡刚关闭时,电芯电压会有短暂的恢复过程,立即判断可能误判。冷却时间取30秒,30秒后跳回IDLE重新判断。
状态机的每个状态都有超时保护。比如BALANCING_HIGH状态持续超过4小时,强制跳转到COOLDOWN,防止均衡电路长时间工作导致过热。
3.4 通信上报与参数配置
STM32F745ZG通过UART或CAN把电池状态上报给上位机。上报内容包括:两节电芯电压、电压差、均衡状态、芯片温度、累计均衡时间。上报周期取1秒,既能及时反映状态变化,又不会占用太多带宽。
参数配置方面,开启阈值、关闭阈值、冷却时间、过温阈值这些参数存在Flash里,可以通过通信接口在线修改。这样不同批次的电池组可以根据实际电芯特性调整参数,不需要重新烧录固件。
我习惯在Flash里划两个区域做参数备份,一个主区一个备区。写入时先擦备区,写入新参数,校验通过后再擦主区写入。这样即使写入过程中断电,至少有一个区的参数是完整的。
4. 实操调试与问题排查实录
4.1 上电前的静态检查
焊接完成后不要急着上电,先做静态检查。用万用表测各关键点的对地阻抗,确认没有短路。重点检查MP2642GR-Z的VCC和GND之间阻抗,正常应该在几十kΩ以上。如果阻抗很低,说明芯片可能焊接不良或者已经损坏。
然后不接电池,用稳压电源模拟电芯电压,分别给两节电芯的输入端供电。先给下节供3.7V,测下节芯片的VCC引脚电压,应该是3.7V。再给上节供3.7V,测上节芯片的VCC对下节电芯正极的电压,也应该是3.7V。如果电压不对,检查供电回路和电平转换电路。
4.2 采样精度的校准
ADC采样存在增益误差和偏移误差,需要用高精度万用表做两点校准。先给一个已知电压,比如3.000V,读取ADC值;再给另一个电压,比如4.000V,再读ADC值。用这两组数据算出增益和偏移,写入MCU的校准参数区。
校准后,采样精度能到±5mV以内。如果不做校准,STM32F745ZG的内部参考电压误差可能有±1%,对应3.7V电芯就是±37mV,这个误差已经接近均衡阈值了,会导致均衡判断不准。
分压电阻的精度也影响采样精度。1%精度的电阻,分压比误差约2%,对应上节电芯电压误差约74mV。所以分压电阻必须用0.1%精度的,或者用软件校准补偿。
4.3 均衡功能实测与波形分析
接上两节电芯,人为制造电压差。比如给下节充到3.9V,上节放到3.6V,电压差300mV。上电后观察均衡状态。
正常情况下,MCU应该在1秒内检测到电压差超过阈值,开启上节电芯的均衡。用示波器测上节电芯的均衡控制引脚,应该看到电平从低变高。同时测均衡电阻两端的电压,应该有一个稳定的直流压降,对应均衡电流。
如果均衡控制引脚有电平变化,但均衡电阻两端没有压降,说明MP2642GR-Z没有正常工作。检查芯片的使能引脚、供电电压、检测电阻连接。如果均衡电阻有压降但电流偏小,检查检测电阻的阻值是否准确。
实测中我发现一个现象:均衡开启瞬间,电芯电压会有几十毫伏的跳变。这是因为均衡电流在电芯内阻上产生了压降。电芯内阻假设50mΩ,200mA均衡电流产生10mV压降。这个跳变会影响电压差的计算,所以均衡开启后要等一段时间再判断电压差,或者用滤波后的电压值做判断。
4.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不开启 | 电压差未超阈值 | 测实际电压差 | 调整阈值或检查采样 |
| 均衡不开启 | 控制信号未到达 | 测MCU引脚和芯片引脚 | 检查电平转换电路 |
| 均衡电流偏小 | 检测电阻偏大 | 测检测电阻阻值 | 更换精度更高的电阻 |
| 均衡电流偏大 | 检测电阻偏小 | 测检测电阻阻值 | 更换电阻并检查散热 |
| 采样值跳动大 | 滤波不足 | 观察原始ADC值 | 增大RC滤波或滑动窗口 |
| 采样值偏差大 | 未校准或分压电阻精度低 | 对比万用表测量值 | 做两点校准或换0.1%电阻 |
| 芯片发热严重 | 均衡电流过大或散热不良 | 测芯片表面温度 | 降低均衡电流或改善散热 |
| 上节芯片不工作 | 电平转换失效 | 测光耦输出电平 | 更换光耦或调整限流电阻 |
4.5 几个容易踩的坑
第一个坑是光耦的响应速度。有些光耦的上升沿和下降沿时间在几十微秒,均衡控制信号变化频率低,这个速度够用。但如果用光耦做故障反馈信号,需要快速关断均衡时,光耦的延迟可能导致关断不及时。所以故障保护信号最好走硬件通路,直接拉低芯片的使能引脚,不要经过MCU和光耦。
第二个坑是分压电阻的功耗。100kΩ对100kΩ的分压网络,上节电芯3.7V,分压电阻上的电流37μA,功耗0.14mW,完全没问题。但如果为了降低噪声把电阻改小到10kΩ,电流变成370μA,功耗1.4mW,虽然电阻本身能承受,但长期运行会加速电池自放电。储能系统待机时间长,这个电流必须控制住。
第三个坑是ADC参考电压的选择。STM32F745ZG可以用内部参考电压,也可以用外部参考。内部参考电压温漂较大,在0℃到60℃范围内可能有几十毫伏的变化。如果对采样精度要求高,建议用外部基准芯片,比如2.5V或3.0V的精密基准,温漂控制在10ppm/℃以内。
第四个坑是均衡状态下的电压采样时机。均衡开启时,电芯内阻上的压降会叠加到采样值上。如果此时判断电压差,可能误判为电压差已经缩小而提前关闭均衡。正确的做法是均衡开启后等待一段时间,让电压稳定,或者用均衡关闭期间的采样值做判断。我的做法是均衡开启后前10秒不做判断,10秒后用滤波值判断。
5. 系统集成与长期运行考量
5.1 静态功耗的优化
储能和备用电源系统大部分时间处于待机状态,静态功耗直接影响电池的自放电率。整个均衡控制板的静态功耗要控制在1mA以内。
STM32F745ZG在待机模式下可以降到几十微安,但待机时ADC和均衡控制都停止了,无法监测电池状态。所以不能用深度待机模式,要用低功耗运行模式。把主频降到16MHz,关闭不用的外设时钟,ADC采样率降到10Hz,这样MCU电流可以降到2mA左右。
分压电阻的静态电流37μA,光耦的静态电流取决于限流电阻和LED压降,大约1mA。光耦是静态功耗的大头。如果系统对静态功耗要求极严,可以用数字隔离器替代光耦,数字隔离器的静态电流通常在几百微安。
MP2642GR-Z本身的静态电流很小,数据手册标称几十微安。均衡关闭时,芯片基本不耗电。
5.2 电磁兼容与布板要点
均衡电路工作时,均衡电流在PCB走线上产生磁场,可能干扰ADC采样。布板时要注意:
均衡电流回路面积尽量小,走线短而粗。检测电阻靠近芯片放置,走线对称。ADC采样线远离均衡功率线,最好用地平面隔开。光耦放在芯片和MCU之间,输入输出走线分开。
电源入口加TVS管和共模电感,抑制外部浪涌和共模干扰。TVS管的钳位电压要低于芯片的绝对最大额定电压,共模电感的额定电流要大于系统最大工作电流。
5.3 长期运行的数据记录
储能系统运行周期长,记录均衡历史数据对分析电池健康状态很有价值。STM32F745ZG的1MB Flash可以划出一块区域做数据记录,记录每次均衡的开始时间、结束时间、均衡前后的电压差、均衡持续时间。
数据记录用环形缓冲区,写满后覆盖最旧的数据。每条记录16字节,1MB可以存6万多条,按每天均衡一次算,可以存160多年,完全够用。
记录的数据可以通过通信接口导出,用上位机软件做趋势分析。如果发现均衡越来越频繁,或者均衡时间越来越长,说明电芯一致性在变差,可能需要更换电芯。
5.4 扩展性设计
两节电芯的均衡方案可以扩展到多节。每增加一节电芯,就增加一颗MP2642GR-Z和一套电平转换电路。STM32F745ZG的ADC通道足够多,可以同时采样多节电芯电压。
软件上,把均衡状态机改成数组形式,每节电芯一个状态变量。均衡判断逻辑改成遍历所有电芯,找出电压最高和最低的,判断电压差是否超阈值。这样从两节扩展到八节,代码改动量很小。
通信协议也要预留扩展字段,比如电芯数量、每节电压、每节均衡状态。上位机根据电芯数量解析数据,不需要为不同节数的电池组写不同的解析代码。
我在实际项目中用这套方案做过四节电芯的均衡控制,硬件上就是两节方案的简单复制,软件上把状态机改成数组后运行稳定。均衡电流200mA,四节电芯从500mV电压差拉到50mV以内用了大约6小时,电芯温度上升不到5℃,整体表现符合预期。