资讯动态

两串锂电池主动均衡方案:MP2642GR-Z与STM32F373VC实战

发布时间:2026/10/17 13:10:01 来源:尧图企业网站定制
1. 为什么串联电池组的均衡绕不开MP2642GR-Z这颗芯片两串锂电池在储能和备用电源系统里是最常见的架构之一。无论是小型光伏储能包、通信基站的后备电源还是便携式储能电源只要电压平台落在7.4V到8.4V这个区间两串结构几乎是默认选择。但很多人第一次做两串BMS时会发现一个反直觉的现象明明两颗电芯出厂容量一致、内阻接近用了几个月之后两颗电芯的电压差却能拉到100mV以上容量衰减速度也明显不一致。这个问题的根源在于串联回路里电流是共用的但每颗电芯的自放电率、库仑效率、温度分布不可能完全一致。时间一长充电时容量小的那颗先到4.2V放电时它又先掉到3.0VBMS为了保护它提前切断整组回路结果就是整组可用容量被最弱的那颗电芯拖死。被动均衡用电阻放电把高的那颗拉下来能量全变成热效率低还发热主动均衡把电荷从高电压电芯搬到低电压电芯效率能到90%以上这才是两串系统真正需要的方案。MP2642GR-Z就是为这种场景设计的双向主动均衡芯片。它内部集成了双向升降压变换器配合外部电感就能在相邻电芯之间搬运电荷不需要额外的隔离电源也不需要复杂的变压器绕组。和STM32F373VC搭配前者负责功率级的能量搬运后者负责采样、逻辑判断和通信分工非常清晰。STM32F373VC这颗MCU在这个方案里有几个别人替代不了的优势它内置了16位Sigma-Delta ADC做电池电压和电流采样时分辨率足够高不需要外挂高精度ADC它带CAN控制器储能系统里和上位机或PCS通信可以直接走CAN它还带16位定时器做PWM互补输出和死区控制很方便。我见过不少团队一开始想用通用MCU加分立MOS搭主动均衡结果卡在死区控制、电流采样精度和环路稳定性上调试周期拉得很长。MP2642GR-Z把功率级和控制逻辑封装好了STM32只需要通过I2C或SPI配置寄存器、读状态开发难度下降一个数量级。这篇文章就把这套方案从芯片选型、外围电路、寄存器配置到均衡策略的完整链路拆开讲适合正在做两串储能BMS的硬件和嵌入式工程师参考。2. MP2642GR-Z的功率级原理与外围元件取值逻辑2.1 双向升降压拓扑在两串场景下的工作方式MP2642GR-Z内部是一个四开关的Buck-Boost功率级外接一个电感和少量电容就能工作。它的两个端口分别接在两串电芯的节点上一端接Cell1的正极和Cell2的负极之间另一端接Cell2的正极。当Cell1电压高于Cell2时芯片工作在Buck模式把Cell1的能量通过电感储放搬到Cell2当Cell2电压高于Cell1时芯片自动切到Boost模式反向搬运。整个过程芯片自己判断方向MCU只需要告诉它“开始均衡”和“目标电压差阈值”。这里有个容易被忽略的细节MP2642GR-Z的均衡电流不是恒定的它和两颗电芯的压差成正比。压差越大搬运电流越大压差接近零时电流自然衰减到很小。这个特性其实很符合电池均衡的需求——初期压差大时快速拉平后期压差小时精细收敛不需要MCU频繁调整PWM占空比。但这也意味着如果你把均衡电流上限设得太高压差大的瞬间电感电流会冲得很猛电感和MOS的应力都会上去。2.2 电感取值与均衡电流的对应关系电感是这套方案里最关键的被动元件。MP2642GR-Z的开关频率可以通过寄存器配置常见范围在200kHz到500kHz之间。电感值直接决定纹波电流和最大均衡电流。我一般用下面这个经验公式先估算L (Vcell × (1 - D)) / (fsw × ΔIL)其中Vcell是电芯电压D是占空比fsw是开关频率ΔIL是允许的电感纹波电流。对于两串锂电电芯电压按3.7V标称算如果开关频率设400kHz希望纹波电流控制在均衡电流的30%以内均衡电流目标1A那么L (3.7 × 0.5) / (400000 × 0.3) ≈ 15.4μH实际选型时我会取标准值15μH或22μH饱和电流至少要能扛住均衡电流峰值加上纹波的一半也就是1.5A以上。电感的直流电阻DCR也很关键DCR每增加10mΩ1A电流下就多10mW的损耗效率会掉一点。我实测用DCR在20mΩ以内的屏蔽电感整体均衡效率能到92%左右换成DCR 50mΩ的普通电感效率掉到87%以下发热也明显。2.3 输入输出电容与自举电容的选型MP2642GR-Z的两个端口都需要就近放陶瓷电容。Cell1侧和Cell2侧各放一颗10μF的X5R或X7R陶瓷电容耐压选10V以上。这两颗电容的作用是吸收开关瞬间的电流尖峰如果放得离芯片太远走线电感会让尖峰电压冲高长期运行容易打坏芯片。我习惯把电容放在芯片引脚2mm以内走线尽量短粗。自举电容是另一个容易出问题的地方。MP2642GR-Z的高侧MOS需要自举电容来驱动典型值100nF耐压16V以上。这个电容必须用X7R材质不能用Y5V因为Y5V的容值随电压和温度变化太大低温下容值可能掉一半导致高侧MOS驱动不足开关损耗剧增。我冬天在户外储能柜里测过用Y5V自举电容的板子在零下10度时效率掉了5个百分点换成X7R就恢复正常。3. STM32F373VC的采样链路与16位ADC的实际表现3.1 为什么不用通用12位ADC而选STM32F373VC很多两串BMS方案用STM32F103加外置12位ADC成本看起来低但实际调试时会发现电压采样分辨率不够。两串锂电的均衡阈值通常设在10mV到30mV之间12位ADC在3.3V参考下1LSB约0.8mV理论上够用但实际有效位数受噪声影响往往只有10位左右1LSB变成3mV以上判断10mV的压差就很勉强。STM32F373VC内置的16位Sigma-Delta ADC在差分模式下有效位数能到14位以上1LSB远小于1mV判断压差从容得多。STM32F373VC的SDADC有几个配置要点。它支持差分输入做电芯电压采样时可以把每颗电芯的正负极分别接到SDADC的正负输入端直接测出差分电压省掉外部差分放大器。SDADC的增益可以设成1x、2x、4x、8x电芯电压最高4.2V如果参考电压用内部2.4V增益设2x满量程就是4.8V刚好覆盖。增益设太高会浪费动态范围设太低又容易饱和2x是两串锂电的甜点值。3.2 分压电阻网络与采样精度的关系虽然SDADC可以差分输入但电芯电压还是需要分压到ADC输入范围内。分压电阻的精度和温漂直接决定采样精度。我用0.1%精度、25ppm温漂的薄膜电阻分压比设成1:1也就是两颗等值电阻这样电芯电压减半后进ADC。分压电阻的阻值不能太小否则会持续耗电两串电池最怕静态功耗大也不能太大否则ADC输入阻抗和电阻分压网络形成误差。STM32F373VC的SDADC输入阻抗在差分模式下大约几十kΩ分压电阻总阻值取100kΩ左右比较合适静态电流约42μA对电池影响可以忽略。这里有个实操坑分压电阻的对称性比绝对精度更重要。如果两颗电阻一个100kΩ一个99kΩ分压比就不是精确的0.5算出来的电压会有固定偏差。我一般用同一批次、同一阻值的电阻实在不行就在固件里做两点校准用高精度万用表测实际电压反推修正系数。3.3 电流采样与库仑计的实现均衡电流的采样用一颗10mΩ的采样电阻串在电感回路里配合STM32F373VC的另一个SDADC通道做差分放大。10mΩ电阻在1A电流下产生10mV压降SDADC增益设8x参考2.4V满量程0.3V10mV对应约3.3%的满量程分辨率足够。采样电阻要选低温漂的合金电阻普通厚膜电阻温漂几百ppm电流一大阻值就变库仑计积分误差会累积。库仑计的实现逻辑是每隔固定周期读一次电流值乘以周期时间得到电荷增量累加到总电荷里。STM32F373VC的SDADC采样率可以设到50ksps但库仑计不需要这么快1ksps足够。我用定时器触发SDADC转换DMA搬运结果CPU只在DMA完成中断里做累加负担很轻。实测下来1A恒流放电库仑计积分1小时误差在0.5%以内主要误差来源是采样电阻温漂和ADC增益误差做一次满量程校准就能压到0.2%以下。4. 均衡策略从阈值判断到状态机的完整实现4.1 压差阈值与均衡启动条件的设定均衡策略的核心是判断什么时候开始均衡、什么时候停止。最简单的做法是设一个固定压差阈值比如20mV超过就启动低于就停止。但实际用下来固定阈值有两个问题一是电芯在充放电过程中电压本身在变压差会被充放电电流掩盖二是静置时压差小但一加负载压差就放大固定阈值会导致均衡频繁启停。我的做法是分状态判断。静置状态电流小于50mA下压差超过15mV启动均衡充电状态下压差超过30mV启动因为充电时电压被拉高压差会被放大阈值要相应放宽放电状态下压差超过25mV启动。这三个阈值不是拍脑袋定的是实测出来的静置时电芯电压最真实15mV对应大约5%的容量差充电时30mV对应约8%容量差放电时25mV对应约6%容量差。超过这个容量差整组容量损失就超过3%值得均衡。4.2 基于STM32F373VC的状态机设计均衡状态机我分成五个状态IDLE、CHECK、BALANCE、COOLDOWN、FAULT。IDLE是空闲态定时器每100ms触发一次CHECKCHECK里读两颗电芯电压和电流判断是否满足均衡条件满足就进BALANCE通过I2C配置MP2642GR-Z启动均衡BALANCE里每50ms读一次电压和电流压差降到阈值以下或电流异常就进COOLDOWNCOOLDOWN里关闭均衡等30秒让电芯电压稳定再回CHECK确认FAULT是过流、过温、通信失败等异常状态进FAULT后关闭均衡并上报。这个状态机的关键是COOLDOWN。均衡刚停止时电芯电压会有回弹如果立刻判断可能压差又超过阈值导致反复启停。等30秒让电芯内部电荷重新分布电压稳定后再判断能避免震荡。我实测过不等COOLDOWN直接判断均衡启停频率能到每分钟好几次电感发热明显加了30秒COOLDOWN启停频率降到几分钟一次电感温度降了15度。4.3 寄存器配置与I2C通信的实操细节MP2642GR-Z通过I2C和STM32F373VC通信地址和寄存器定义要仔细看数据手册。我一般先配置这几个寄存器均衡电流上限、开关频率、使能位、状态读取。均衡电流上限不要一上来就设最大先设500mA跑通再逐步往上加。开关频率设400kHz和电感取值匹配。使能位写1之前先读一次状态寄存器确认芯片没有报故障。I2C通信有个坑MP2642GR-Z的I2C时序对上升沿要求比较严STM32F373VC的I2C默认开漏输出上拉电阻如果取10kΩ上升沿太慢400kHz下可能通信失败。我把上拉电阻换成2.2kΩ通信就稳了。另外I2C走线要远离电感和开关节点否则开关噪声会耦合到通信线上导致偶发NACK。我在PCB上把I2C走线走在底层和功率层隔开中间加地平面屏蔽通信误码率降到零。5. 实测中遇到的三个典型问题与排查过程5.1 均衡启动瞬间电压跌落导致MCU复位第一次跑这套方案时均衡一启动STM32F373VC就复位。用示波器抓电源轨发现均衡启动瞬间3.3V轨上有一个200mV的跌落持续时间约10μs。原因是均衡启动时电感电流从零冲到1A电池内阻和走线电阻上产生瞬时压降MCU的LDO输入跟着掉输出就跌了。解决办法是在LDO输入端加一颗100μF的固态电容靠近LDO放置提供瞬态电流。加了之后跌落降到50mV以内MCU不再复位。这个问题的根因是电池内阻。两串锂电的内阻通常在50mΩ到100mΩ每颗1A电流突变产生50mV到100mV压降加上走线电阻总压降能到150mV以上。如果LDO的输入范围不够宽或者输入电容太小MCU就会复位。选LDO时输入范围要覆盖电池最低电压到最高电压输入电容至少100μF这是硬要求。5.2 电感啸叫与开关频率的关系调试时听到电感有轻微啸叫频率约8kHz。用示波器看开关波形发现开关频率在400kHz附近有周期性抖动抖动频率正好是8kHz。原因是STM32F373VC的定时器触发SDADC采样采样中断优先级高于I2C通信中断导致I2C配置寄存器的时序被拉长MP2642GR-Z的开关频率跟着抖。解决办法是把I2C通信放到DMA里不占CPU中断或者把SDADC采样中断优先级降到I2C以下。我选了后者把SDADC中断优先级设成最低啸叫就消失了。电感啸叫在储能系统里很烦人尤其是户外柜里晚上安静时啸叫很明显。除了中断优先级电感本身的绕线松紧也会影响啸叫。浸漆固定的电感比松绕的电感啸叫小很多选型时优先选浸漆的。5.3 低温下均衡效率下降的排查冬天在零下5度的环境里测均衡效率从92%掉到85%电感温度反而更高。排查发现两个原因一是自举电容用了Y5V低温容值掉了一半高侧MOS驱动不足开关损耗增加二是电感的DCR在低温下虽然会降但磁芯损耗在低温下反而增加尤其是铁氧体磁芯。换成X7R自举电容和低温特性更好的合金粉芯电感后零下5度效率回到90%以上。这个经验说明储能系统的元件选型不能只看常温参数。电芯在低温下内阻增大均衡电流会自然减小但芯片和电感的损耗特性也会变。选电感时看 datasheet 的磁芯损耗曲线要覆盖零下20度到零上60度的范围不能只看25度那一个点。6. 从两串到多串的扩展思路与PCB布局要点6.1 多串系统的级联方式两串方案跑通后如果要扩展到四串或更多MP2642GR-Z可以级联使用。每颗芯片负责相邻两串的均衡比如芯片1管Cell1和Cell2芯片2管Cell2和Cell3芯片3管Cell3和Cell4。STM32F373VC的I2C总线可以挂多颗MP2642GR-Z通过不同的I2C地址区分。地址配置一般通过芯片的ADDR引脚拉高或拉低实现最多能挂8颗覆盖9串电池。级联时要注意均衡的优先级。如果Cell1电压最高Cell4最低芯片1把Cell1的能量搬到Cell2芯片2再把Cell2的能量搬到Cell3芯片3搬到Cell4能量经过三次搬运效率是92%的三次方约78%。如果直接让芯片1和芯片3同时工作能量路径更短效率更高。所以多串系统的均衡策略要优化能量路径优先让压差大的相邻对先均衡避免能量绕远路。6.2 PCB布局中功率地与信号地的处理这套方案的PCB布局有两个关键功率回路要小信号地要干净。功率回路是电池正极到MP2642GR-Z到电感再回电池负极这个环路面积要尽量小走线要短粗。我一般把电感和芯片放在同一层走线宽度至少2mm1A电流下压降和发热都可控。信号地是STM32F373VC的模拟地和SDADC的参考地要和功率地分开最后在电池负极单点连接。如果混在一起开关噪声会串进ADC采样值跳动能到几十mV。SDADC的参考电压要特别处理。STM32F373VC的SDADC参考可以选内部2.4V或外部参考。内部参考的温漂约100ppm外部参考用REF5025能到3ppm但成本高。两串锂电的均衡阈值是10mV级别100ppm的参考温漂在零下20度到零上60度范围内产生约0.5%的误差对应电芯电压约20mV刚好和阈值一个量级会影响判断。所以如果产品要过宽温建议用外部高精度参考或者在做温度补偿。6.3 固件升级与参数存储的考虑储能系统装到现场后均衡阈值可能需要根据实际电芯调整。STM32F373VC的Flash可以存参数但Flash擦写次数有限不能频繁写。我的做法是把参数存在Flash的固定页只在收到升级命令时擦写平时读出来放RAM里用。参数包括静置阈值、充电阈值、放电阈值、均衡电流上限、COOLDOWN时间。这些参数通过CAN总线从上位机下发STM32F373VC收到后先写RAM确认无误再写Flash。CAN通信在储能系统里很常见STM32F373VC的CAN控制器支持标准帧和扩展帧波特率设250kbps或500kbps。我一般用500kbps报文周期100ms上报两颗电芯电压、电流、温度、均衡状态。上位机根据这些数据判断电池健康状态如果发现某颗电芯电压长期偏低就提示维护或更换。7. 几个容易被忽视的细节与个人经验均衡电流不是越大越好。我一开始把均衡电流设到2A想快速拉平结果电感温度到80度电芯局部发热也明显。后来降到1A均衡时间从20分钟变成35分钟但温升控制在30度以内整体更稳。储能系统是长期运行的温升比速度重要。MP2642GR-Z的使能引脚不要直接接VCC。我见过有人把EN引脚直接拉到VCC芯片一直使能上电瞬间电流冲击很大。正确做法是用STM32的GPIO控制EN上电后先配置寄存器确认无误再拉高EN。这样上电冲击小也方便故障时快速关断。SDADC的校准不能省。STM32F373VC的SDADC有出厂校准值但实际板子上的偏移和增益误差需要现场校准。我一般产线做两点校准零点和满量程点把校准系数存Flash运行时用系数修正采样值。不做校准的话采样误差能到1%以上对应电芯电压40mV均衡判断就不准了。电芯电压采样要走开尔文连接。分压电阻的接点要直接接到电芯极耳上不能和均衡电流的走线共用。如果共用均衡电流在走线电阻上的压降会叠加到采样电压上导致采样值偏高或偏低。我一般从电芯极耳单独拉一对细线到分压网络和功率走线完全分开。最后说一个关于COOLDOWN时间的经验。30秒是我在室温下测出来的低温下电芯内部电荷分布更慢COOLDOWN要延长到60秒。如果固件里能根据温度动态调整COOLDOWN时间低温下均衡启停会更稳。这个细节在数据手册里不会写是实际跑出来的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑