1. 储能电池均衡的底层逻辑与方案选型
两串电池的均衡问题,看起来简单,实际踩进去才知道水有多深。我最早接触这类需求是在一个便携式储能电源项目上,当时用两颗18650串联组成7.4V标称的电池包,客户反馈用了一年多之后续航明显缩水,拆开一测,两颗电芯的压差已经到了0.3V以上。这个数字放在单颗电芯上可能不算什么,但在串联结构里,容量小的那颗会先被拉到底,容量大的那颗还没放完,整组就已经触发欠压保护了。充电的时候反过来,容量小的先到4.2V,充电回路被迫截止,另一颗永远吃不饱。来回几次,差距越拉越大,这就是典型的串联电池不均衡问题。
均衡这件事,核心目标就一个:让串联的每一颗电芯在充放电过程中尽量保持荷电状态一致。实现路径分两大类,被动均衡和主动均衡。被动均衡说白了就是给电压高的那颗并一个电阻,把多余的能量以热量形式放掉,成本低、电路简单,但效率低、发热大,而且只能在充电阶段慢慢耗。主动均衡则是把能量从高电压电芯搬到低电压电芯,效率高、速度快,但拓扑复杂、成本上去了。对于两串这种小规模电池组,选哪种方案,取决于你的成本预算、板子空间和均衡电流要求。
我最终选的是MP2642GR-Z这颗芯片来做主动均衡。为什么不用被动方案?因为储能和备用电源场景对能耗敏感,被动均衡那点发热在密闭机壳里是实打实的隐患,而且均衡电流做不大,两串之间0.2V的压差可能要耗上好几个小时才能拉平。MP2642GR-Z是一颗专门针对两串电池管理的均衡芯片,内部集成了双向升降压拓扑,能把高电压侧的能量搬到低电压侧,均衡电流可以做到安培级别,效率也远高于被动方案。更关键的是它自带状态指示和使能控制,配合MCU做逻辑管理非常顺手。
MCU这边选STM32F042C6,理由很直接:Cortex-M0内核,48MHz主频,32KB Flash,6KB RAM,对于均衡控制这种任务绰绰有余。它自带CAN控制器,虽然这个项目里用不上,但意味着后续如果要扩展到多组电池管理,通信接口不用换芯片。封装是LQFP48,引脚间距0.5mm,手焊有点考验手艺,但空间占用小,适合紧凑型BMS板。最关键的是价格便宜,批量拿货成本控制得住,对于储能和备用电源这种对BOM成本敏感的应用来说,选它比选F1系列或者G0系列更划算。
整个方案的思路就是:STM32F042C6负责采集两颗电芯的电压、控制MP2642GR-Z的使能和均衡方向、管理均衡启停条件、通过状态引脚监测均衡芯片的工作状态。MP2642GR-Z负责实际的能量搬运,把高电压电芯的能量转移到低电压电芯。两者配合,实现一个闭环的自动均衡系统。这个架构的好处是MCU不直接参与功率变换,只做逻辑控制和保护判断,软件负担轻,实时性有保障。
注意:均衡芯片的选型不能只看均衡电流这一个参数。要同时确认它的工作电压范围是否覆盖你的电池组电压区间、静态功耗是否满足待机要求、是否支持你需要的均衡方向控制方式。MP2642GR-Z的输入范围覆盖两串锂电的典型工作区间,静态电流在微安级别,适合长期在线的备用电源场景。
2. 硬件设计关键细节与参数计算
2.1 电芯电压采集与分压网络
STM32F042C6的ADC是12位精度,参考电压用VDDA,典型3.3V。两颗串联电芯的总电压最高到8.4V,直接进ADC引脚肯定烧。所以必须做分压。这里有个细节很多人会忽略:分压电阻的精度直接影响电压采集误差。我用的是0.1%精度的薄膜电阻,分压比设成1:3,这样8.4V分压后是2.8V,留了0.5V的余量给ADC参考电压波动。
分压电阻的阻值选择也有讲究。阻值太大,ADC采样保持电容充电不够,采样值会偏低;阻值太小,分压网络持续耗电,对于备用电源这种长期待机的场景,静态功耗会累积成可观的损耗。我最终选的是上臂100kΩ、下臂50kΩ的组合,分压点对地并联一个100nF的滤波电容,截止频率大概在30Hz左右,能有效滤掉开关噪声,又不会影响均衡状态的实时判断。
两颗电芯的电压采集需要分别进行。下电芯的电压直接通过分压网络进ADC通道,上电芯的电压需要先减去下电芯的电压才能得到单颗电芯的实际电压。这个减法在软件里做,但要注意ADC采样时序,两颗电芯的采样要尽量同步,否则在充放电电流波动的时候,计算出来的上电芯电压会有偏差。我的做法是用ADC的扫描模式,两个通道连续转换,转换间隔控制在微秒级,这样电流波动带来的误差可以忽略。
2.2 MP2642GR-Z外围电路配置
MP2642GR-Z的外围电路不算复杂,但有几个关键点必须注意。首先是电感的选择,均衡电流的大小和电感值直接相关。数据手册上给的公式是L = (V_in × (V_out - V_in)) / (f_sw × ΔI_L × V_out),其中f_sw是开关频率,ΔI_L是电感纹波电流。我设定的均衡电流是1A,开关频率500kHz,纹波电流取额定电流的30%即0.3A,代入公式算出来电感值在4.7μH左右。实际选型时我用了5.6μH的屏蔽电感,饱和电流要大于2A,直流电阻要小于50mΩ,否则导通损耗会吃掉效率。
输入输出电容也不能随便放。MP2642GR-Z的输入侧需要至少22μF的陶瓷电容,输出侧同样。这些电容要尽量靠近芯片的VIN和VOUT引脚,走线要短而粗,否则开关噪声会串到采集电路里去。我吃过这个亏,最早布局的时候电容离芯片远了点,结果ADC采集的电压值跳得厉害,均衡逻辑频繁误触发。后来把电容挪到引脚旁边,问题立刻消失。
使能引脚和方向控制引脚直接连到STM32的GPIO,通过MCU输出高低电平来控制均衡的启停和方向。这里要注意电平匹配,MP2642GR-Z的逻辑高电平阈值是1.4V左右,STM32的3.3V输出完全驱动得了,不需要额外电平转换。但GPIO的驱动能力要确认,推挽输出模式下每个引脚可以输出20mA,驱动使能引脚绰绰有余。
2.3 均衡电流路径与热设计
均衡电流走的是芯片内部的功率管,外部只需要电感、电容和电池连接。但电流大了之后,PCB走线的铜箔宽度必须跟上。1A的均衡电流,如果走线宽度只有10mil,温升会很明显。我一般按1A对应40mil的线宽来设计,如果空间允许,直接铺铜更好。MP2642GR-Z的散热焊盘必须可靠接地,并且打过孔到背面的大面积铜皮,利用PCB本身做散热。
热设计这块,实测下来在1A均衡电流下,芯片表面温度大概比环境高25到30度。如果环境温度本来就高,比如储能柜内部夏天能到50度,那芯片结温就可能逼近上限。所以要么降低均衡电流,要么加散热措施。我的做法是在芯片背面贴一块导热垫,把热量导到金属外壳上,这样温升能压下来10度左右。
提示:均衡电流不是越大越好。大电流意味着大电感、大电容、宽走线,成本和空间都上去了。对于两串电池组,0.5A到1A的均衡电流已经能在合理时间内拉平压差。除非你的电池容量特别大,否则没必要追求2A以上的均衡电流。
3. 软件控制逻辑与均衡策略实现
3.1 电压采集与滤波算法
STM32F042C6的ADC配置成12位、单次转换模式,两个通道轮流采样。为了降低噪声,我用了多次采样取平均的方法,每个通道连续采16次,去掉最大最小值后取平均。这样处理之后,电压采集的波动能控制在±5mV以内,对于判断电芯压差已经足够了。
电压计算这块,ADC原始值转电压的公式是V_adc = (ADC_value / 4095) × 3.3V,然后乘以分压比3得到实际电压。下电芯电压直接就是V_adc_low,上电芯电压是V_adc_high - V_adc_low。这里有个细节:分压电阻的误差会直接传递到计算结果里,所以校准环节不能省。我的做法是在产线测试时,用高精度万用表测出实际电压,然后反推一个校准系数存在Flash里,运行时用这个系数修正。这样即使电阻有1%的偏差,校准后也能把误差压到0.1%以内。
滤波算法我用的是滑动平均加一阶低通滤波的组合。滑动窗口长度设8,每次新采样进来就替换最旧的数据,然后算平均。再经过一个截止频率1Hz的低通滤波,进一步平滑。这样处理之后,电压值基本不会跳变,均衡逻辑的判断就稳了。
3.2 均衡启停条件与阈值设定
均衡什么时候开始,什么时候停,这个逻辑直接决定了均衡效果和系统安全性。我的策略是:当两颗电芯的压差超过50mV,并且电池组处于静置状态或者充电状态时,启动均衡。为什么不在放电时均衡?因为放电时电流大,电压波动也大,采集到的电压不能真实反映电芯的荷电状态,这时候均衡容易误判。静置和充电时电流小,电压稳定,均衡效果最好。
压差阈值设50mV是有讲究的。设太小,比如20mV,那均衡会频繁启停,因为电压采集本身就有噪声,而且电芯在充放电过程中的电压波动很容易超过20mV。设太大,比如100mV,那均衡效果就差了,电芯长期在较大压差下工作,寿命会受影响。50mV是一个比较平衡的值,实测下来既能有效拉平压差,又不会频繁触发。
均衡停止条件有两个:一是压差降到10mV以下,说明已经均衡到位了;二是均衡时间超过预设上限,比如2小时,防止因为某种故障导致均衡一直进行。这两个条件满足任意一个,就关闭均衡。另外,如果检测到任何一颗电芯电压低于2.8V或者高于4.25V,立即停止均衡,这是保护电芯的安全底线。
3.3 状态监测与故障保护
MP2642GR-Z有一个状态引脚,可以指示芯片当前的工作状态。我把它接到STM32的另一个GPIO上,配置成输入模式,通过定时器中断定期读取。如果状态引脚显示异常,比如芯片过温或者短路保护触发,MCU就立即关闭使能引脚,并在日志里记录故障码。
故障保护这块,我做了三级保护。第一级是软件保护,就是上面说的电压阈值和均衡时间限制。第二级是硬件保护,在电池和均衡芯片之间串了一个自恢复保险丝,如果电流异常增大,保险丝会断开。第三级是芯片自身的保护,MP2642GR-Z内部有过温保护和过流保护,温度超过150度或者电流超过内部设定值时会自动关断。三级保护层层设防,确保任何单一故障都不会导致安全问题。
注意:故障保护逻辑里,电压采集的可靠性至关重要。如果ADC本身出问题,采集到的电压值可能是错的,那保护逻辑就会失效。所以我在软件里加了一个合理性检查:如果采集到的电压值超过4.5V或者低于1.5V,直接判定为采集故障,关闭均衡并报警。这个检查虽然简单,但能挡住大部分采集异常的情况。
4. 实操调试与常见问题排查
4.1 均衡功能调试步骤
板子焊好之后,先别急着上电池。第一步是检查电源,用可调直流电源给板子供电,确认3.3V和5V(如果有)都正常。然后连上ST-Link,把STM32的固件烧进去,用调试器看一下GPIO输出是否正常,ADC采集值是否合理。这一步可以用信号发生器模拟电芯电压,比如给下电芯通道2.5V,上电芯通道5V,看ADC读出来的值对不对。
第二步是接电池测试。先用两颗电压差不多的电芯,比如都是3.7V,看均衡是否不启动,因为压差没到阈值。然后故意把一颗电芯充到4.0V,另一颗保持3.7V,压差300mV,这时候均衡应该启动。用电流钳表测一下均衡电流,看是否在设定值附近。如果电流偏小,检查电感值和开关频率;如果电流偏大,检查电流检测电阻(如果有)或者芯片的限流设置。
第三步是长时间运行测试。让均衡持续工作,每隔10分钟记录一次两颗电芯的电压,观察压差是否在缩小。正常情况下,1A的均衡电流,两颗3000mAh的电芯,压差从300mV降到10mV大概需要40分钟到1小时。如果时间明显偏长,可能是均衡电流没达到设定值,或者电芯本身内阻差异太大,导致均衡效果被内阻压降抵消了。
4.2 常见问题与排查技巧
调试过程中我遇到过不少问题,这里整理成表格,方便对照排查。
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不启动 | 压差未达阈值 | 用万用表实测两颗电芯电压,确认压差 | 调整阈值或先手动制造压差测试 |
| 均衡电流偏小 | 电感值偏大或开关频率偏低 | 测量电感实际值和驱动波形频率 | 更换合适电感或调整芯片频率设置 |
| ADC采集值跳动 | 分压电容太小或布局太远 | 用示波器看ADC引脚波形 | 加大滤波电容,缩短走线 |
| 芯片发热严重 | 均衡电流过大或散热不足 | 测芯片表面温度,确认均衡电流 | 降低均衡电流或加散热措施 |
| 均衡频繁启停 | 阈值设置太接近噪声水平 | 观察电压采集的波动范围 | 增大阈值或加强滤波 |
| 上电芯电压计算错误 | 分压电阻误差或采样不同步 | 分别测量两个通道的ADC值 | 校准分压系数,确保同步采样 |
除了表格里的问题,还有一个坑我踩过:均衡芯片的使能引脚在上电瞬间可能会有毛刺,导致芯片误启动。解决方法是给使能引脚加一个RC延时电路,或者直接在软件里上电后延时100ms再配置GPIO。这个细节数据手册上不会写,但实际调试中很容易遇到。
4.3 均衡效果评估与优化
均衡效果好不好,不能只看压差有没有缩小,还要看均衡过程中电芯的温升和系统效率。我一般会记录均衡前后的电压、均衡时间、均衡过程中的最高温度。如果温升超过15度,说明均衡电流偏大或者散热不够,需要调整。如果均衡时间明显偏长,可能是均衡电流没达到预期,或者电芯老化严重,内阻差异太大。
优化方向有几个:一是提高电压采集精度,用外部基准电压芯片代替VDDA,能把采集误差再压一个数量级;二是优化均衡策略,比如在充电末期加大均衡电流,因为那时候电压稳定,均衡效果最好;三是增加历史数据记录,把每次均衡的起止时间、压差变化存到Flash里,方便分析电芯的一致性趋势。
提示:均衡只是补救措施,不能解决电芯本身一致性问题。如果两颗电芯的容量差异超过5%,或者内阻差异超过10%,均衡只能暂时拉平电压,用不了多久又会拉开。这种情况下,换电芯比调均衡参数更有效。
5. 方案扩展与多场景适配
5.1 从两串扩展到多串的思路
两串均衡做通了,扩展到三串、四串是自然的想法。但多串均衡的拓扑复杂度不是线性增加的。两串只需要一个均衡芯片,三串就需要两个,四串需要三个,而且芯片之间的能量传递路径需要重新设计。MP2642GR-Z本身是两串专用,多串场景下要么用多颗芯片级联,要么换用支持多串的均衡芯片。
级联方案的好处是每颗芯片独立工作,MCU只需要分别控制每颗芯片的使能和方向,逻辑简单。缺点是芯片数量多,成本和板子面积都上去了。另一种思路是用变压器做能量传递,所有电芯共用一个变压器,通过开关矩阵选择需要均衡的电芯对。这种方案效率高,但控制逻辑复杂,适合电芯数量多、对均衡效率要求高的场景。
对于储能和备用电源系统,如果电池组是固定的两串结构,那MP2642GR-Z的方案已经够用。如果未来可能扩展到四串,建议在PCB设计时就预留级联的接口和空间,这样后续升级不用重新画板。
5.2 不同电池化学体系的适配
锂离子电池、磷酸铁锂电池、钛酸锂电池,它们的电压平台不一样,均衡策略也要相应调整。锂离子电池的电压范围是3.0V到4.2V,均衡阈值设50mV合适。磷酸铁锂的电压平台在3.2V到3.3V之间,充放电曲线非常平坦,电压差本身就小,均衡阈值要设得更小,比如20mV,否则根本触发不了。钛酸锂的电压范围是1.5V到2.8V,均衡芯片的工作电压范围要能覆盖这个区间。
MP2642GR-Z的输入电压范围覆盖2.5V到5.5V每颗电芯,磷酸铁锂和钛酸锂都在范围内。但均衡电流的设定要根据电池容量来调。磷酸铁锂电芯容量通常比较大,均衡电流可以设大一点,1A到2A。钛酸锂电芯容量小,均衡电流设0.5A就够了。这些参数在软件里做成可配置的,换电池类型时只需要改配置,不用改硬件。
5.3 低功耗设计与待机管理
备用电源系统大部分时间是待机的,均衡电路如果一直工作,静态功耗会累积成可观的损耗。MP2642GR-Z的静态电流在微安级别,但STM32F042C6在运行模式下的电流是毫安级别,这个差距很大。所以待机管理的关键是让MCU在不需要均衡的时候进入低功耗模式。
我的做法是:MCU平时处于Stop模式,RTC定时唤醒,每隔10秒采集一次电压,判断是否需要均衡。如果不需要,立刻回到Stop模式。如果需要均衡,就唤醒MP2642GR-Z,启动均衡,同时MCU保持运行以监控状态。均衡结束后,MCU再次进入Stop模式。这样平均功耗可以压到几十微安,对于备用电源来说完全可以接受。
Stop模式下的唤醒源要配置好,RTC唤醒是最常用的。STM32F042C6的RTC精度取决于外部晶振,如果用内部RC振荡器,精度差一些,但唤醒周期10秒的话,误差几秒也无所谓。如果对唤醒时间精度要求高,就外挂一个32.768kHz的晶振,成本增加不多,但精度提升明显。
注意:进入Stop模式之前,要把所有GPIO配置成模拟输入或者低电平输出,避免悬空引脚漏电。MP2642GR-Z的使能引脚要拉低,确保均衡芯片完全关断。这些细节看起来小,但实际测下来,一个悬空的GPIO就能让待机电流翻倍。
6. 实测数据与经验总结
6.1 均衡性能实测记录
我用两颗标称3000mAh的18650电芯做了实测。初始状态:电芯A电压3.65V,电芯B电压3.95V,压差300mV。环境温度25度,均衡电流设定1A。启动均衡后,每隔10分钟记录一次电压。
| 时间 | 电芯A电压 | 电芯B电压 | 压差 |
|---|---|---|---|
| 0min | 3.65V | 3.95V | 300mV |
| 10min | 3.72V | 3.88V | 160mV |
| 20min | 3.78V | 3.82V | 40mV |
| 30min | 3.80V | 3.81V | 10mV |
| 40min | 3.805V | 3.808V | 3mV |
从数据看,前20分钟压差缩小得很快,后面逐渐变慢,这是因为压差小的时候均衡电流也会自然减小。最终压差稳定在3mV左右,均衡效果符合预期。均衡过程中芯片表面温度最高到52度,环境25度,温升27度,在可接受范围内。
6.2 踩过的坑与经验教训
第一个坑是分压电阻的精度。最早我用的是1%精度的普通电阻,结果两颗电芯的电压采集误差不一致,导致计算出来的压差有偏差,均衡逻辑判断不准。后来换成0.1%精度的电阻,问题解决。这个教训是:采集电路的精度决定了均衡策略的上限,省什么都不能省采集电阻。
第二个坑是电感选型。最早我选了一个非屏蔽电感,结果均衡工作时干扰了ADC采集,电压值跳得厉害。换成屏蔽电感后,干扰明显减小。电感的饱和电流也要留足余量,我一开始选的电感饱和电流只有1.2A,均衡电流1A的时候电感已经接近饱和,效率下降明显。后来换成饱和电流2A的,效率提升了5个百分点。
第三个坑是软件滤波的参数。最早我用的是简单的算术平均,窗口长度设4,结果滤波效果不够,电压还是有跳动。后来改成去掉最大最小值再平均,窗口长度加到16,再加上一阶低通滤波,电压才稳定下来。滤波参数没有万能值,要根据实际噪声情况调,我的经验是先用示波器看原始信号的噪声幅度,再决定滤波强度。
6.3 方案优缺点与适用边界
这套方案的优势很明显:主动均衡效率高,均衡电流大,适合对能耗和均衡速度有要求的场景。MP2642GR-Z集成度高,外围电路简单,PCB面积小。STM32F042C6性价比高,资源够用,开发工具链成熟。
缺点也有:主动均衡的成本比被动均衡高,芯片本身加上电感电容,BOM成本增加不少。另外,均衡电流大了之后,PCB布局和散热设计要求高,不是随便画个板子就能稳定工作的。对于成本极度敏感、均衡要求不高的场景,被动均衡可能更合适。
适用边界方面,这套方案适合两串电池组、均衡电流0.5A到2A、对能耗和均衡速度有要求的储能和备用电源系统。如果电池组超过两串,或者均衡电流要求超过2A,就需要考虑其他拓扑。如果只是偶尔需要均衡,对速度没要求,被动均衡也能凑合。
提示:均衡芯片的使能控制最好加光耦隔离或者数字隔离器,尤其是电池组和MCU不共地的时候。我遇到过因为地环路导致均衡芯片误触发的情况,加了隔离器之后彻底解决。这个成本增加不多,但可靠性提升明显。
7. 关键元器件选型对照与替代方案
7.1 均衡芯片的替代选择
MP2642GR-Z不是唯一的选择。市面上做两串主动均衡的芯片还有几款,选型时要对比均衡电流、工作电压范围、静态功耗、控制接口和封装。有的芯片支持I2C配置,参数调整更灵活,但需要MCU有对应的外设。有的芯片均衡电流固定,不能通过外部电阻调整,灵活性差一些。
如果MP2642GR-Z缺货或者价格不合适,可以考虑用分立方案搭一个双向升降压电路,用MCU的PWM直接驱动MOS管。这种方案灵活性最高,但开发工作量大,需要自己写控制算法,调试周期长。对于小批量项目,分立方案可能更划算;对于批量生产,集成芯片方案更稳妥。
7.2 MCU的替代与升级路径
STM32F042C6在这个方案里是够用的,但如果需要更多功能,比如CAN通信、更多ADC通道、更大Flash,可以升级到STM32F072或者STM32G0系列。F072的引脚和F042基本兼容,代码移植工作量小。G0系列是新一代产品,性价比更高,但外设寄存器和F0系列有差异,移植时需要改底层驱动。
如果对功耗要求极致,可以考虑STM32L0系列,Stop模式电流比F0系列低一个数量级。但L0系列的主频低一些,对于均衡控制这种任务来说够用,但如果还要做其他计算,可能就不够了。选型时要把所有功能需求列出来,再对照芯片资源,留20%到30%的余量。
7.3 电感与电容的选型要点
电感选型看三个参数:电感值、饱和电流、直流电阻。电感值按公式算,饱和电流要大于均衡电流的1.5倍,直流电阻要小于50mΩ。屏蔽电感比非屏蔽电感贵,但EMI性能好很多,在电池管理这种对噪声敏感的场景,建议用屏蔽电感。
电容选型看容值和ESR。输入输出电容用陶瓷电容,容值22μF以上,ESR要低。陶瓷电容的容值会随直流偏压下降,所以实际选型时要看偏压特性曲线,不能只看标称容值。比如标称22μF的电容,在8V偏压下可能只剩10μF,那就要选更大容值的或者多个并联。
注意:电感和电容的温度特性也要考虑。电感在高温下饱和电流会下降,电容在低温下容值会减小。如果产品要在宽温范围内工作,选型时要留足余量,最好在高温和低温下都实测一下均衡性能。