1. 项目整体设计与方案选型
1.1 为什么要做串联电池均衡
先把场景放在桌面上:储能箱、小型UPS、后备电池组,很多时候只需要两串电芯串联。两串听起来简单,却是整个BMS行业里最难处理的一种拓扑。原因在于串联回路电流一样,但每颗电芯的容量、内阻、自放电率不可能完全一致。随着循环次数增加,容量偏差会像滚雪球一样放大:充电时容量小的那颗先到截止电压,充电被迫提前终止;放电时同一颗又先跳到欠压保护,整组放电深度被它拖累。两串电池,容量利用率可能连60%都不到。
更麻烦的是储能和备用电源场景的工况:长期浮充、间歇性小倍率放电、温度梯度明显。这种场景下手拉手式的一致性差异不会自己恢复,只会越来越大。所以两串电池必须配均衡电路,把高电量的电芯的能量转移给低电量电芯。
1.2 均衡方案怎么选
市面上的均衡手段,传统做法是电阻被动均衡:高电量电芯通过一颗功率电阻放电,把多余能量以热量形式散掉。优点是电路简单、成本低;缺点是能量白白浪费,均衡电流通常只有50到100mA,只能应对慢速漂移,一旦电芯一致性偏差较大,被动均衡根本拉不回来。
这次做的方案采用主动均衡思路,核心芯片选MP2642GR-Z。这是一个开关电感式的电荷转移方案,把高电量电芯的能量搬到电感里,再切换开关将能量灌入低电量电芯。能量效率远高于电阻放电,均衡电流可以做到几百毫安级别。配合STM32L152RE作为主控,实时采集两串电芯电压、温度、电流,按SOC偏差动态控制均衡方向和占空比,形成闭环。两个芯片的分工很清楚:MP2642GR-Z做功率变换的硬件执行,STM32L152RE做决策和逻辑控制。
实测下来,两串磷酸铁锂(单颗标称3.2V,满电3.65V),在电压差150mV的情况下,一个均衡周期大约80到120分钟能把压差拉回15mV以内。这个结果被动方案给不了。
1.3 主控芯片选型逻辑
STM32L152RE不是随手挑的。它自带12位ADC,三路内部放大通道可以搭配仪表运放直接采集毫欧级采样电阻上的压差;两路DAC可以配合比较器做独立过压保护;丰富的定时器做PWM输出刚刚好。另外它属于超低功耗家族,待机电流微安级,非常贴合备用电源常年待机的场景。
更直接的原因是系统以太网和显示接口都不需要,均衡管理必须低功耗、高可靠性、外设刚好够用。STM32L152RE的性价比在两串均衡这个场景里是合适的:功能冗余少,不会像选用高端系列那样造成资源和成本浪费。
2. 均衡系统核心原理与硬件架构
2.1 电荷转移均衡的基本逻辑
主动均衡的核心可以用一个物理场景来理解:两颗水杯水位不一致,怎么把多的那杯匀到少的那杯?被动方案是在多的那杯底部钻个孔让它漏掉;主动方案则是拿一个水瓢(电感)把多的舀起来,倒进少的那杯。水瓢每次舀的水量是一定的(电感储能),舀的频率由开关管控制(PWM频率和占空比)决定。
MP2642GR-Z内部集成了开关MOS、驱动电路、电流采样比较器和逻辑控制单元,外部只需要一颗功率电感和少量阻容就能工作。芯片工作在双向拓扑中:哪颗电芯作为源、哪颗作为目标,由外部控制引脚决定。内部MOS导通关断的顺序和时间,由芯片根据电感电流峰值自动调节。
这带来一个工程上的巨大优势:环路稳定性和峰值电流控制都在芯片内部闭环,MCU不需要快速响应电流变化,只需要告诉芯片“现在应该把能量从左搬到右,目标电流设多少”,剩下的交给芯片自己处理。控制环复杂度大幅降低,软件实现起来也更可靠。
2.2 均衡电流与效率的权衡
MP2642GR-Z的均衡电流并非越大越好。电流大了,电感体积要变大、开关损耗上升、电池极化电压增大、均衡精度反而变差。我实际设计时的做法是分两档:压差大于100mV时跑大电流档(500mA左右),压差小于50mV时切换到小电流档(200mA左右),压差小于10mV直接停止均衡。
这种分级均衡策略非常重要。因为均衡的目的是把两串电芯电压拉进一个合理窗口,而不是追求绝对相等;过高的均衡电流使高SOC电芯电压在下冲,停均衡后回弹造成新一轮偏差。电流宁小勿大,尤其在均衡接近尾声时,这个原则决定了最终收敛精度。
工作频率选在400kHz。这个频率下电感体积适中,同时避开AM广播频段和MCU采样开关频率的整数倍。电感参数大约4.7uH到10uH,饱和电流需要大于1.5倍最大均衡电流。
2.3 总体硬件架构
主功率环路:BAT+和BAT-之间串联两颗电芯CELL0和CELL1,MP2642GR-Z的两个功率端口分别接CELL0两端和CELL1两端,中间共用电感。STM32L152RE通过GPIO控制MP2642GR-Z的均衡方向选择引脚,通过PWM设置电流目标,通过ADC读取两颗电芯的分压采样值。
采样链路是均衡系统成败的命门。两颗电芯串联后电压范围大约是5.0V到7.4V(磷酸铁锂两串),两串中点电压动态浮动,直接使用电阻分压到ADC输入虽然简单,但精度受限于电阻容差和ADC基准。我采用的是差分采样结构:每颗电芯单独采样,使用仪表放大器将电芯电压变换到适合ADC输入的范围,再配合MCU内部基准源校准。
温度采样直接在每颗电芯表面贴NTC热敏电阻,经过分压后进MCU。均衡过程中电芯温度应该平缓上升不超过2到3摄氏度,如果局部温升过快,多半是均衡电流过大或连接阻抗异常,需要在软件里做降额和报警处理。
3. 软件状态机与均衡策略实现
3.1 系统状态机设计
整个软件采用有限状态机来组织,状态划分如下:
- 待机态:MCU低功耗运行,周期性(例如每30秒)唤醒采集一次电压温度,判断是否需要均衡
- 均衡态:压差超过阈值,启动MP2642GR-Z,按设定方向进行电荷转移
- 暂停态:均衡中途触发过压、欠压、过温等保护条件,暂停均衡等待条件恢复
- 关断态:均衡完成或异常告警,关闭芯片输出并复位均衡错误计数
状态机的好处是每个状态的边界清晰,便于在调试中定位异常。尤其需要注意从均衡态到暂停态的切换时机:不能直接把PWM撤掉,而要先将均衡电流目标逐步降到零,等电感电流归零后再关闭MOS。否则电感会产生高压尖峰,损伤芯片。
3.2 均衡方向的判断与切换
两串电池的判断逻辑看起来很简单:CELL0电压大于CELL1就把能量从CELL0搬到CELL1,反之反向。但直接看瞬时电压会出问题。串联回路中,如果负载电流波动,电芯端电压会因内阻产生ΔV=I×R的压降,瞬时电压差可能是纯欧姆压降造成的,并不代表真实SOC差异。
我的做法是采样后做处理:
- 电压采集需要等负载电流稳定后进行,避免动态压降干扰判断
- 记录同一方向均衡持续的时间,若均衡时间过短(例如小于30秒)就出现反向需求,视为迟滞过小导致误判,锁定当前方向继续均衡
- 以平均电压差代替瞬时电压差参与方向判断
磷酸铁锂平台特性导致电压平台很平,单纯看电压判断方向可能会震荡。因此我在软件里引入库仑计:利用MCU的定时器结合电流采样积分,估算两个电芯的SOC差,以SOC差作为主判据,电芯端电压作为辅助判据。这样均衡方向判断的稳定性提升非常明显。
3.3 目标设定和PID调节
目标电流的控制,我使用了一个非常简化的PID策略。因为MP2642GR-Z内部已有峰值电流环,MCU只需调节电流目标值的给定即可。比例系数很大,积分系数很小,微分项直接不用。调节目标是使压差稳定缩小,压差越小电流越小。
关键参数:
- 设定压差:15mV(收敛参考)
- 分段死区:压差>100mV,I=500mA;50~100mV,I=300mA;15~50mV,I=150mA;<15mV,关闭
- 方向锁定:均衡开始后5分钟内不响应反向请求
- 单次最长均衡时间:4小时,超时强制停止并告警
这些参数不是拍脑袋定的,我在不同电芯初始压差下做过对比测试。大电流档只适合初始大压差阶段,后面如果一直维持大电流均衡,电压会过冲,于是后期直接出现反向压差,来回折腾好几个周期也收敛不了。分级降电流的方式让压差收敛曲线单调递减,效果最好。
3.4 异常保护与故障处理
均衡系统最容易烧芯片的场景是电感电流过流、芯片过热、电芯过放继续均衡。软件里做了这几层保护:
- 过压保护:单体电压超过3.7V立即关闭均衡,只保留采样监控
- 欠压保护:单体电压低于2.8V(磷酸铁锂)禁止启动均衡,放电也提前预警
- 过温保护:芯片温度超过85℃,均衡电流减半;超过100℃,强制关闭
- 通信故障保护:MCU与MP2642GR-Z的控制时序使用PWM握手,若芯片没有预期ACK响应,连续三次失败直接锁机
实际调试中,发生过一次均衡逻辑锁死的情况:电芯压差已经归零,但软件迟滞方向逻辑仍认为需要均衡,结果芯片一直在两个方向间来回切换。后面我在方向切换条件里加上了“当前电压差小于5mV时,必须等待2分钟确认差值为真实差值”的处理,此问题解决,不再复发。
4. 硬件PCB设计实操要点
4.1 布局与布线优先级
MP2642GR-Z的功率回路经过的路径很短:从芯片SW引脚到电感,再到电池,回路面积要尽量小,避免寄生电感在开关切换时引发电压振荡。实际布局时我是这样排的:
- 电感靠近芯片SW脚,使用短粗铜皮连接,不开窗散热
- 芯片的输入去耦电容紧挨电源引脚,使用低ESR陶瓷电容,1uF+100nF并联
- 采样电阻采用开尔文连接,独立走线到MCU ADC,不走功率地回路
- 整个功率地采用单点回流设计,模拟地和功率地在MCU附近汇合
开尔文采样这个细节很多人忽略。如果采样线跟功率电流混在一起,采样点上的铜箔电阻感应的信号叠加在采集电压上,均衡精度直接报废。我用的是四线制:电芯正负极各引一根细线作为采样引线,功率电流走粗铜皮,两个路径物理隔离后再汇聚。
4.2 电感的选型与实测
电感参数选择不是看datasheet额定电流就完事。需要关注的是直流叠加特性,即电感在通过大电流时感值下降的曲线。选了一颗4.7uH的金属粉一体电感,DCR约20mΩ,饱和电流2.2A,实测均衡电流500mA时感值还能保持3.8uH以上,纹波电流可以接受。
还需要留意磁芯噪声。陶瓷电容压电效应加上电感的机械振动,在安静环境中能听到轻微啸叫。这个在储能和备用电源设备中比较在意,因为设备通常放置在室内。解决方法是电感使用聚氨酯灌封一体成型工艺,工作频率不用固定PWM而是小幅抖动(频率扩展),能在不损失效率的前提下显著降低噪声。
4.3 芯片散热设计
MP2642GR-Z的封装底部有散热焊盘,不要把它当作普通GND过孔直接跑线。散热焊盘需要接大铜皮,并且通过阵列过孔连接到背面敷铜辅助散热。均衡电流500mA时芯片表面温度约60摄氏度,如果散热不良能到85摄氏度以上。备用电源机箱内部密闭环境多,热设计一定不能忽略。
我的做法是在PCB背面芯片对应位置额外加了一块10mm×15mm的敷铜区域,涂覆导热硅脂粘在机壳铝板上。实测满载连续工作1小时芯片温度稳定在62摄氏度,而裸板不加散热时达到88摄氏度,差距明显。
5. 调试过程中遇到的常见问题与排查技巧
5.1 压差采样偏差大
首轮测试发现一个怪异现象:静止状态下,软件显示两串电芯压差20mV,但用高精度万用表实测只有3mV。查到最后是采样电路基准偏差所致。STM32L152RE内部基准源精度不如外部基准,差分放大器增益误差在1%量级,两串电芯电压在5到7V范围时,误差积累达到十几mV。
解决方案是软件自动校准:首次上电时,由MCU将两串电芯的采样通道切换到内部基准(或短接外部标准电阻),记录误差系数并在后续所有采样结果中修正。我采用的是三点校准:零点、中间点、满量程各采一组,然后线性拟合。校准后采样误差稳定在3mV以内。
5.2 均衡电流达不到设定值
按照计算,500mA档应该能达到,但实测只有280mA。用示波器看SW节点波形发现,电感电流断续,芯片提前终止了开关周期。查datasheet确认,这是限流保护触发。原因是电池连接线使用了细长导线,导线电阻加上接触电阻导致芯片端的输入电压在负载拉载时明显跌落,电流环勉强工作但达不到目标。
处理方法:把电池连接排线换成粗短导线,并且在线束端并接大容量电解电容,吸收瞬态压降。这件事提醒我,均衡系统的功率路径,不再是信号级设计,必须当作电源设计对待。
5.3 芯片自我保护导致断续均衡
还有一种情况是芯片过热保护间歇性触发。均衡开始后前10分钟工作正常,之后电流突然归零,等待几分钟又恢复,如此反复。用热像仪看芯片表面温度走势才发现,初始温度正常,但随着均衡热量积累,最终突破了保护阈值,芯片进入过温保护状态。
在软件里增加均衡前的温度检查还不够,必须把芯片温度实时纳入控制:温度每升高摄氏度,均衡电流按比例降低2%到5%。连上这个闭环后,均衡过程持续运行,虽然后期电流有所下降,但整体均衡速度反而更快,因为没有了反复重启的等待时间。
5.4 电芯电压回弹导致均衡过冲
压差到了10mV以下才停止均衡,但停止后两串电芯的电压会各自回弹,过一会儿再看,压差反而扩大到30mV。原因在于电芯极化效应:均衡电流流过电芯时会产生极化电压,极化消失需要时间,最终电压不等于停止时刻的瞬时电压。
我调整了停止策略:在压差进入15mV到20mV区间后,不是立即停止均衡,而是切换到一个极低电流(50mA左右)维持15分钟,让电芯内部的锂离子浓度趋于均匀,然后再减小电流分步降档。最终撤掉均衡后放置30分钟,压差保持在10mV以内,不再过冲。
6. 储能与备用电源场景的专属适配
6.1 浮充状态下的均衡策略
备用电源有一个区别于纯储能的特征:大部分时间电池处于浮充状态,电源系统一直在给电池施加一个恒定的小电流。浮充状态下,电池端电压被外部电源钳住,均衡的判断不能只看电芯端电压,因为端电压的变化主要是外部电源在维持。
我在浮充状态下采取的策略是降低采样频次、增大均衡触发阈值。浮充时压差大于40mV才启动均衡,而且均衡方向必须结合历史SOC记录判断,不能看到瞬时电压高就搬能量。因为在浮充状态下搬出能量的电芯会被电源补充,搬入能量的电芯端电压反而不正常抬高,方向很容易搞反。
实测效果:一组初始压差120mV的电池组,浮充运行两周后,压差稳定收敛并保持在20mV以内,电池组的整组充电容量明显提升,比不均衡时高出15%到20%。
6.2 备用电源的定期巡检模式
备用电源长期静置,均衡器不能像储能电站那样持续运行。我设计了一套巡检式均衡策略:系统每24小时自动唤醒一次,采集电压、计算压差;压差超过80mV进入均衡模式;均衡完成后再次待机。这个模式将均衡的介入频率降到最低,延长了整体设备的使用寿命,也让长期静置场景下电池不至于因为过度均衡而损耗循环寿命。
巡检还有一个好处:能通过两次巡检间的电压降落曲线间接判断电池自放电率是否异常。自放电率过大的电芯,巡检时会发现它多次出现在“低电量端”,可以提前生成更换预警。这等于在不增加额外硬件成本的情况下多了一个健康诊断功能。
6.3 与市电断电切换的协同
备用电源有一个重要时间节点:市电断电切换瞬间,负载电流突然拉高,电池端电压瞬时跌落。如果均衡器恰好在此时以较大电流从某颗电芯搬能量,这颗电芯在切换瞬间会更早触底,可能提前中断供电。
处理方案是在软件里设置一个“高功耗负载检测”信号:检测到负载电流超过设定阈值时,立即将均衡目标电流降到零,暂停均衡,优先保证电芯输出能力。负载恢复稳定后延时30秒再逐步恢复均衡。这个改动看着小,但直接关系到备用电源能否顺利完成切换,是不可省略的细节。
7. 最终实测数据与经验总结
7.1 实测过程记录
最后阶段,我对整机做了72小时连续运行测试。测试条件是:
- 电池:两串磷酸铁锂,标称容量50Ah
- 初始压差:约140mV
- 环境温度:25℃恒温
- 放电负载:间歇状态,模拟备用电源空载和轻载
测试过程记录了几个关键时间节点的数据:
| 时间 | 电芯1电压(V) | 电芯2电压(V) | 压差(mV) | 均衡电流(mA) | 备注 |
|---|---|---|---|---|---|
| 0h | 3.412 | 3.272 | 140 | 500 | 启动大电流均衡 |
| 1h | 3.368 | 3.316 | 52 | 300 | 切换中速档 |
| 2h | 3.343 | 3.321 | 22 | 150 | 切换低速档 |
| 3h | 3.334 | 3.327 | 7 | 0 | 达到收敛阈值停止 |
停止均衡后继续静置观察24小时,最终压差稳定在9mV。均衡过程电芯温度最高上升2.1℃,芯片温度最高61℃,均处于安全区域。整个均衡周期约3小时,转移能量约1.2Wh,相比被动均衡方案把能量烧成热的做法,电能几乎全部实现了有效再利用。
7.2 经验教训总结
写这篇文章最大的体会:主动均衡方案在硬件上并不复杂,最难的是软件层面的策略设计和异常处理。MP2642GR-Z这种高度集成的芯片确实简化了功率变换环节,但如果控制策略毛糙,比如用瞬时电压直接判断方向、电流档位不细分、停止均衡不处理极化回弹,最终做出来的均衡效果甚至不如传统的电阻被动方案。
另一个重要教训:均衡精度不能只看均衡控制精度,更要看采样精度。一颗12位ADC配上标准电阻分压,名义分辨率够了,但误差链太长——电阻容差、基准偏差、开尔文连接不良、PCB铜皮走线压降——每一环都在吞噬精度。这一步没做扎实,后面的算法再优秀都会失真。
7.3 后续扩展思路
这套系统目前只支持两串电芯,但架构本身具备扩展空间。MP2642GR-Z的均衡控制思路可以直接推广到多级均衡结构中:每两串之间用一个均衡器,多组级联,由STM32统一管理。软件的状态机和分级电流策略也可以复用到四串、八串场景,主要改动的是拓扑管理和优先级仲裁逻辑。
如果要在工业化量产方向走,建议把均衡策略参数做成可配置项,放在EEPROM里,生产时按电芯类型和容量写入对应参数。这样同一套软硬件就能兼容磷酸铁锂、三元锂、钛酸锂等多种电芯体系,现场运维时直接通过通信接口调整参数,不用改程序重新烧录,维护成本会压下来不少。
从实际项目交付的角度看,这套两串均衡方案最值钱的地方在于:它把低成本、高可靠性、低功耗、可维护性几个看似矛盾的要求,通过合理的芯片分工和软件策略设计统一在了一个系统里。这也是我在同类项目里反复使用这套组合的原因。