首页 / 资讯中心 / 文章详情

基于MP2642GR-Z与STM32F405ZG的储能电池被动均衡设计与实现

基于MP2642GR-Z与STM32F405ZG的储能电池被动均衡设计与实现 ★ FEATURED ARTICLE
1. 储能电池均衡的工程背景与方案选型1.1 为什么串联电池组必须做均衡做储能和备用电源的兄弟都清楚单节锂电池的标称电压一般在3.6V到3.7V之间满电4.2V放空大概3.0V。但实际系统里无论是48V的通信基站备电、还是高压储能堆都不可能只用一节电池必须串联升压。问题就出在这里串联回路里电流是同一个但每节电池的容量、内阻、自放电率、老化程度不可能完全一致。举个实际例子。两节标称5000mAh的电芯串联一节实际容量4900mAh另一节4700mAh。充电时容量小的那节先到4.2V截止充电器如果只监测总压就会继续给整串充电结果就是容量小的那节被过充容量大的那节还没充满。放电时反过来容量小的先到3.0V整串被迫停止放电容量大的那节还剩一堆电没放出来。长期这么搞容量小的那节加速衰减整组可用容量被最弱的那节拖死这就是典型的“木桶效应”。所以均衡电路的核心任务就一句话让串联的每节电池在充放电过程中尽量保持荷电状态一致。均衡方式分两大类被动均衡和主动均衡。被动均衡就是给每节电池并一个电阻电压高的那节通过电阻放电把多余的电以热量形式耗掉。优点是电路简单、成本低、可靠性高缺点是能量白白浪费均衡电流一般只有几十到几百毫安适合小容量、对成本敏感的场合。主动均衡则是把高电压电池的能量搬到低电压电池去效率高、均衡电流大但拓扑复杂、成本高、控制难度大。这次的项目标题里用的是MP2642GR-Z这颗芯片本身就是一颗被动均衡的电池管理前端配合STM32F405ZG做主控针对两节串联电池做均衡。这个组合在中小功率储能和备用电源里非常典型下面我把整个设计思路、参数计算、实操细节和踩坑经验完整拆一遍。1.2 MP2642GR-Z 与 STM32F405ZG 的角色分工先明确这两颗器件在系统里各干什么。MP2642GR-Z 是一颗多节电池管理前端芯片支持多节串联电池的电压采集、过压欠压保护、以及内置的被动均衡开关。它内部集成了均衡MOSFET可以通过外部电阻对单节电池进行放电均衡。芯片通过通信接口把每节电池的电压、状态上报给主控同时接收主控下发的均衡指令。它的均衡电流由外部电阻决定典型值可以做到几十毫安到一两百毫安具体看散热和电阻选型。STM32F405ZG 是主控MCUCortex-M4内核带FPU主频最高168MHz外设资源丰富有多个USART、SPI、I2C、CAN接口还有12位ADC。在这个系统里它负责三件事第一通过通信接口读取MP2642GR-Z上报的各节电池电压和状态第二根据均衡策略决定对哪节电池开启均衡、开多久第三管理整个系统的充放电逻辑、保护动作、以及与上位机的通信。这个分工的好处是安全相关的电压采集和保护由专用前端芯片硬件完成响应快、可靠性高均衡策略和系统逻辑由MCU软件实现灵活可调。两者通过通信接口解耦MCU即使跑飞了前端芯片的硬件保护依然有效这是功能安全设计的基本思路。1.3 为什么选被动均衡而不是主动均衡很多人一上来就想上主动均衡觉得效率高才高级。但实际项目里选型要看场景。储能和备用电源系统尤其是中小功率的电池容量通常在几安时到几十安时均衡电流需求不大。被动均衡几十到一百多毫安的电流配合合理的均衡策略完全能把电池一致性维持在可接受范围内。主动均衡的优势在大容量、高串数、对能量效率极度敏感的场景才明显比如电动汽车动力电池包。那种场景动辄几百安时、上百串被动均衡那点电流根本不够看而且散热也是大问题。但代价是主动均衡的变压器、电感、驱动电路一大堆成本和故障率都上去了。这个项目用MP2642GR-Z做被动均衡我认为是务实的选择。芯片集成度高外围只需要均衡电阻和少量电容PCB面积小BOM成本低可靠性经过大量量产验证。对于两节串联这种低串数场景主动均衡的复杂度完全不划算。当然被动均衡的代价是均衡时发热这个后面会讲怎么处理。2. 硬件设计核心细节与参数计算2.1 均衡电阻的选型与功耗计算均衡电阻是MP2642GR-Z被动均衡的核心外围器件它的阻值直接决定均衡电流大小进而影响均衡速度和发热。这个电阻不是随便选的要算。假设单节电池满电4.2V均衡时电池电压大概在4.0V到4.2V之间。MP2642GR-Z内部均衡开关导通时电池电压几乎全部加在外部均衡电阻上内部MOSFET导通电阻很小通常几十毫欧可以忽略。那么均衡电流 I Vbat / Rbal。如果选Rbal 33Ω电池4.1V时I 4.1 / 33 ≈ 124mA。这个电流在被动均衡里算中等偏上均衡速度可以接受。功耗 P Vbat × I 4.1 × 0.124 ≈ 0.51W。注意这个功耗是持续加在电阻上的电阻必须能承受。如果选Rbal 100ΩI 41mA功耗约0.17W。均衡慢但发热小。如果选Rbal 10ΩI 410mA功耗1.7W发热很大对电阻封装和PCB散热要求高。我的经验是两节串联的中小容量储能系统均衡电流选80到150mA比较平衡。对应电阻33Ω到51Ω。电阻封装至少0805建议1206或2512功率裕量留够。比如0.5W的功耗选1W的2512电阻表面温升可控。这里有个细节均衡电阻的功耗是持续的还是间歇的取决于均衡策略。如果一直开着电阻持续发热PCB局部温度会很高。如果采用PWM间歇均衡平均功耗下降但峰值功耗不变。我一般建议电阻功率按峰值功耗的2倍以上选留足裕量。2.2 电池电压采集精度与滤波MP2642GR-Z的电压采集精度直接影响均衡判断的准确性。如果采集有偏差可能把电压正常的电池误判为需要均衡或者该均衡的没均衡。芯片本身的采集精度在数据手册里有标通常在±10mV到±25mV量级具体看型号和配置。但实际系统里采集精度不只取决于芯片还取决于外围电路。电池到芯片输入引脚之间的走线、滤波电容、以及地线布局都会影响。我的做法是每节电池输入引脚就近放一个0.1μF到1μF的陶瓷电容做高频滤波再并一个10μF左右的电容做低频滤波。走线尽量短远离功率回路。另外采集时机也很关键。充电和放电时电池内阻上的压降会影响端电压测量。如果在大电流充放电时采集测到的端电压不能真实反映电池的开路电压OCV。所以均衡判断最好在静置状态或者小电流状态下做或者用带电流补偿的算法修正。这个后面在软件策略里会展开。2.3 通信接口与隔离设计MP2642GR-Z和STM32F405ZG之间的通信接口常见的是I2C或SPI。具体用哪个看芯片型号和系统需求。I2C走线少但速率低适合轮询采集SPI速率高适合快速读取多节数据。不管用哪个都要注意电平匹配。MP2642GR-Z的IO电平可能和STM32的3.3V不完全一致需要确认。如果前端芯片供电是5VIO也是5V那STM32的3.3V IO直接连可能有问题需要电平转换。如果前端芯片IO也是3.3V那就直连。还有一个容易被忽略的点通信隔离。储能和备用电源系统里电池组的地和系统主控的地可能不是同一个地尤其在高串数系统里前端芯片的地是电池组的负极主控的地可能是系统公共地。如果两者之间有电位差通信线直接连会烧芯片。这种情况下需要数字隔离器比如电容隔离或磁隔离。两节串联的低串数系统如果主控和电池组共地可以省掉隔离但设计时一定要确认清楚。2.4 PCB布局与散热处理PCB布局对均衡电路的影响很大尤其是散热。均衡电阻在均衡时发热如果布局不当热量会传导到电池或温度敏感器件上。我的布局原则是均衡电阻尽量远离电池连接器和温度传感器放在PCB边缘或通风好的位置。电阻下方铺铜但不要铺太大否则热量散不出去反而积在局部。可以用多个过孔把热量导到背面铜层增加散热面积。如果功耗大可以考虑在电阻下方开窗让热量直接散到空气中。另外均衡电阻的走线要够宽。124mA的电流1oz铜厚走线宽度至少0.3mm以上留够裕量。如果走线太细压降和发热都会增加。还有一点均衡电阻和电池之间的走线要尽量短且粗减少寄生电感和电阻。因为均衡开关切换时会有di/dt寄生电感会产生电压尖峰可能干扰采集或损坏开关。必要时可以在电阻两端并一个TVS或RC吸收。3. 均衡策略与软件实现3.1 均衡触发条件与阈值设定均衡不是一直开着的要有策略。最基础的策略是电压差触发当最高节电压和最低节电压之差超过某个阈值时对最高节开启均衡。阈值设多少太小了频繁均衡浪费能量还发热太大了均衡效果差。我的经验是对于磷酸铁锂和三元锂静置状态下电压差超过30mV到50mV就可以考虑均衡。充电过程中由于内阻和极化电压差会拉大这时候阈值可以放宽到80mV到100mV避免误均衡。放电过程中同理。但光看电压差不够还要看电池是否在充电或放电。充电末期电压高的那节可能已经接近满电这时候均衡最有效因为多余的能量本来就要靠均衡泄放。放电过程中均衡意义不大因为电压低的节已经拖后腿了均衡高电压节也放不出更多电。所以均衡主要集中在充电阶段和静置阶段。还有一个细节均衡开启后被均衡的电池电压会因为放电而下降这时候电压差可能暂时缩小但停止均衡后电压又会回升因为极化消失。所以不能一看到电压差缩小就立刻停均衡要有滞回。比如开启阈值50mV关闭阈值20mV中间留30mV的滞回带避免频繁开关。3.2 均衡时序与占空比控制均衡电阻持续通电会发热尤其是多节同时均衡时。为了控制温升可以用PWM方式间歇均衡。比如1秒周期50%占空比均衡电流有效值减半发热也减半但均衡时间拉长。占空比怎么定看热设计。如果电阻和PCB散热能力够可以100%占空比连续均衡。如果温升太高就降占空比。我一般先用100%跑测电阻和PCB温度如果超过60度就降占空比或者换更大功率的电阻。还有一个时序问题多节同时均衡时不要所有节一起开可以轮流开。比如两节串联最多两节同时均衡但实际很少两节都需要均衡因为均衡的是高电压节通常只有一节最高。如果多节电压都偏高可以分时均衡每次只开一节轮流来。这样峰值发热分散电源和地线上的电流冲击也小。3.3 STM32F405ZG的软件架构STM32F405ZG这边的软件我一般分成三层底层驱动、均衡控制、系统管理。底层驱动负责和MP2642GR-Z通信读取电压、状态下发均衡指令。这部分要处理好通信超时和错误重试。如果通信失败不能一直卡死要有超时机制超时后关闭均衡保证安全。均衡控制层实现均衡策略包括阈值判断、滞回、时序控制、占空比调节。这部分是核心逻辑要写得清晰可调方便后期根据实际电池特性调参。系统管理层负责充放电管理、保护动作、与上位机通信。均衡只是其中一部分要和充电逻辑配合。比如充电时如果某节电池先到截止电压充电器应该降低电流或者暂停等均衡把电压拉下来再继续充。这个协调逻辑很重要做不好会出现反复启停。代码上我建议用状态机实现均衡控制。状态包括空闲、检测、均衡中、冷却。检测状态周期性读取电压判断是否需要均衡均衡状态开启对应通道的均衡开关计时冷却状态关闭均衡等待电压稳定后再检测。状态机的好处是逻辑清晰不会出现竞态。3.4 电压采集的滤波与补偿前面提到充放电时采集的端电压受内阻影响。如果直接用端电压做均衡判断大电流充电时内阻大的电池端电压会偏高可能被误判为需要均衡但实际上它的SOC可能并不高。这时候均衡反而会把它多余的能量放掉导致它更亏。解决办法有两个一是尽量在静置或小电流时采集二是用电流补偿。补偿公式OCV ≈ Vterminal - I × Rinternal。内阻Rinternal可以事先测量或者在线估算。STM32F405ZG有ADC可以采集充放电电流然后做补偿计算。但内阻不是常数随温度和SOC变化。所以补偿只能粗略修正不能完全依赖。我的做法是均衡判断主要用静置电压充电时如果要用端电压阈值放宽并且结合充电电流大小动态调整。比如充电电流1A时阈值加50mV充电电流0.2A时阈值加10mV。这样能减少误判。软件滤波方面ADC采集的电压会有噪声用滑动平均或者一阶低通滤波。滑动平均窗口取8到16个点既能滤噪又不至于响应太慢。一阶低通滤波的系数根据采样率和噪声特性调一般截止频率设在几赫兹。4. 实操过程与关键环节实现4.1 硬件搭建与上电检查拿到板子后不要急着上电池。先做静态检查用万用表测各路电源对地阻抗确认没有短路。然后只上主控电源不接电池测STM32的3.3V是否正常晶振是否起振SWD能否连接。确认主控正常后接前端芯片电源测MP2642GR-Z的供电电压是否在范围内。然后用可调电源模拟电池从低到高慢慢加电压测前端芯片的通信是否正常读到的电压值是否和电源设定一致。这一步能提前发现焊接问题和通信问题。模拟电池测试时注意可调电源的地要和板子的地连在一起。如果前端芯片和主控不共地要用隔离电源或者隔离通信否则读数会飘。4.2 均衡电阻温升实测硬件确认无误后接上真实电池或者大容量模拟电池开启均衡测电阻温升。我用红外测温枪或者贴片热电偶测电阻表面温度。环境25度时0.5W功耗的2512电阻表面温度大概会到60到70度。如果超过80度就要考虑降功耗或者加强散热。实测时还要注意均衡电阻的温升会传导到旁边的器件。如果旁边有温度传感器NTC要确保它测的是电池温度而不是电阻温度。布局时NTC要远离均衡电阻或者做热隔离。如果温升太高几个办法换更大封装比如2W的电阻、降低均衡电流增大电阻值、降低占空比、增加散热铜箔面积。这几个办法可以组合用。我一般优先降占空比因为不改硬件软件调一下就行。4.3 均衡效果验证均衡效果怎么验证最直接的方法是故意把两节电池做成不一致比如一节充到4.1V另一节充到3.9V然后开启均衡记录两节电压随时间的变化。正常情况下高电压节的电压会逐渐下降低电压节因为没被均衡电压基本不变或者因为自放电略微下降。当两节电压差缩小到关闭阈值以内均衡停止。但要注意均衡停止后高电压节的电压会有一个回升极化恢复所以最终静置电压差会比均衡停止时略大。这是正常的。判断均衡是否有效要看静置后的电压差是否比均衡前明显缩小。另一个验证方法是容量测试。把两节电池充满然后放电到截止记录放电容量。均衡前放电容量受最弱节限制均衡后如果一致性改善放电容量应该有所提升。这个方法更接近实际使用但测试周期长。4.4 充放电联动测试均衡不是孤立的要和充放电联动测试。充电时观察均衡是否在合适的时机开启是否会影响充电电流和充电时间。放电时观察均衡是否关闭因为放电时均衡意义不大系统是否正常保护。联动测试中容易发现的问题充电末期均衡开启后充电器可能因为总压达到截止而停止充电但此时均衡还在进行电池电压被拉低充电器又重新启动出现反复启停。解决办法是充电器检测到某节电池达到截止电压后先暂停充电等均衡把电压拉下来再继续充。或者充电器降低电流到很小的值让均衡慢慢耗掉多余能量。这个逻辑要在STM32软件里和充电器协调好。如果充电器是独立的MCU要通过通信或者IO信号控制充电器的启停。如果充电器是MCU控制的那就直接在软件里做状态机。5. 常见问题与排查技巧实录5.1 均衡不开启或开启后无效果这是最常见的问题。排查思路从软到硬先看软件均衡使能条件是否满足电压差是否超过阈值是否在允许均衡的状态比如充电中或静置通信是否正常有没有读到正确的电压值这些可以用调试器在线看变量或者打印日志。如果软件没问题看硬件均衡电阻是否焊接良好阻值是否正确用万用表测电阻两端均衡开启时应该有电压。如果没电压可能是前端芯片的均衡开关没打开或者通信指令没下发成功。如果电阻两端有电压但电池电压不降可能是均衡电流太小或者电池容量太大均衡效果不明显。算一下5000mAh电池100mA均衡电流要放掉500mAh需要5小时。如果只均衡几分钟电压变化很小看不出来。这时候要延长均衡时间或者加大电流。还有一个坑有些前端芯片的均衡开关有温度保护温度过高会自动关闭。如果芯片附近温度高均衡可能被内部保护关掉。这时候要改善散热。5.2 电压采集跳变或不准电压采集跳变先看电源和地。前端芯片的供电是否稳定地线是否有大电流流过导致地弹电池到芯片的走线是否太长引入了噪声用示波器看采集引脚的波形如果有尖峰或振荡加RC滤波。如果跳变是周期性的可能是通信干扰或者开关电源的开关噪声耦合进来了。检查开关电源的频率和采集时机避开开关时刻采集。如果采集值整体偏高或偏低检查参考电压。前端芯片的内部参考是否准确如果用的是外部参考参考电压是否稳定还有分压电阻的精度如果用了分压电阻误差会直接反映到采集值上。5.3 均衡时通信中断或复位均衡开启后通信中断或者MCU复位这通常是电源或地线问题。均衡电流流过地线如果地线阻抗大会产生地电位差导致通信电平异常。解决办法是加粗地线或者把均衡地和信号地分开走单点连接。另一个可能是电源跌落。均衡时电流增大如果电源容量不够或者去耦不足电压会跌落导致芯片复位。检查电源的负载调整率增加去耦电容尤其是前端芯片和MCU的电源引脚附近。如果通信线没有隔离而均衡时地电位差很大通信芯片可能损坏。这种情况下必须加隔离或者确保共地良好。5.4 常见问题速查表现象可能原因排查方法解决措施均衡不开启阈值未满足、通信失败、状态不允许在线调试看变量、查通信日志调整阈值、修复通信、修改状态逻辑均衡无效果电流太小、时间太短、电池容量大测均衡电阻电压、算均衡电量加大电流、延长时间、换策略电压采集跳变滤波不足、地弹、开关噪声示波器看波形加RC滤波、改布局、避开开关时刻均衡时复位电源跌落、地电位差测电源和地波形加去耦、加粗地线、加隔离电阻过热功耗大、散热差、占空比高测温、算功耗换大封装、降占空比、加散热充电反复启停均衡拉低电压、充电器逻辑冲突观察充电电流和电压协调充电和均衡时序5.5 几个容易踩的坑第一个坑均衡电阻选太小功耗超标。有人为了均衡快选10Ω电阻结果0.4A电流1.7W功耗2512电阻都烫手长期跑可靠性堪忧。均衡速度不是唯一指标可靠性更重要。第二个坑忽略电池内阻对采集的影响。大电流充电时内阻大的电池端电压高被误均衡结果越均衡越不一致。这个坑很隐蔽因为静置时看不出来一充电就出问题。第三个坑通信线没做保护。前端芯片和MCU之间的通信线如果走线长、没有TVS或者串联电阻静电或者浪涌容易打坏IO。加个22Ω到100Ω的串联电阻再并个小电容成本很低但能救命。第四个坑均衡策略太激进。一看到电压差就均衡频繁开关电阻反复热胀冷缩长期可靠性下降。加滞回、加最小均衡时间、加冷却时间让均衡动作平滑。第五个坑忘记考虑自放电。电池自放电会导致静置时电压缓慢下降如果均衡阈值设得太小可能把正常自放电误判为需要均衡。阈值要留够裕量或者结合自放电率动态调整。6. 系统集成与长期可靠性考量6.1 与充电器的协调逻辑均衡和充电器的配合是系统集成的关键。理想情况下充电器应该支持“均衡充电”模式充电到某节电池达到截止电压后充电器降低电流到很小的值比如0.05C同时开启均衡让高电压节慢慢放电低电压节继续小电流充电直到所有节都达到截止电压。但很多现成充电器不支持这个模式只认总压或者最高节电压。这时候MCU要介入检测到某节到截止电压通过IO或者通信让充电器暂停开启均衡等电压降下来再恢复充电。这个逻辑要做得平滑避免频繁启停。如果充电器完全不可控那只能在充电结束后做均衡。充电结束后静置一段时间让电压稳定然后开启均衡把高电压节放掉一些。这种方式均衡时间有限效果不如充电中均衡但总比不均衡好。6.2 温度保护与降额策略均衡电阻和前端芯片都有温度限制。前端芯片内部通常有温度保护结温超过一定值会关闭均衡。但芯片表面温度和结温有差距不能完全依赖内部保护。我的做法是在均衡电阻附近放一个NTCMCU采集温度。当温度超过60度时降低均衡占空比超过75度时暂停均衡等温度降下来再恢复。这样既能保护器件又能维持一定的均衡能力。温度降额策略要写成表或者公式方便调整。比如温度50度占空比100%50到60度占空比50%60到70度占空比25%70度暂停。这个表根据实测温升调整。6.3 长期运行的数据记录与健康评估储能和备用电源系统通常要长期运行均衡效果和电池健康状态需要记录。STM32F405ZG有足够的Flash和RAM可以记录每次均衡的起止时间、均衡电量、电压变化等数据。这些数据可以用来评估电池一致性趋势提前发现异常。比如如果发现某节电池越来越频繁地需要均衡而且均衡后电压很快又跑偏说明这节电池可能老化或者自放电异常需要更换。这种预警功能对备用电源系统很有价值能避免关键时刻掉链子。数据记录要注意Flash的擦写寿命。不要频繁写可以攒一批数据一起写或者用EEPROM、FRAM等外部存储。如果数据量不大用MCU内部的备份寄存器或者RTC备份域也行。6.4 电磁兼容与安规考虑储能和备用电源系统通常有安规要求比如绝缘耐压、漏电流、电磁兼容等。均衡电路虽然功率不大但开关动作会产生高频噪声可能影响EMC测试。降低EMC风险的措施均衡走线尽量短回路面积小均衡电阻两端并小电容吸收高频通信线加共模电感或者磁珠PCB分层信号线和功率线分开。如果系统有金属外壳均衡电路的地要和外壳良好连接减少辐射。安规方面电池组和系统之间要有足够的爬电距离和电气间隙尤其是高压系统。两节串联电压不高但如果是多组串联总压可能上百伏这时候均衡电路的绝缘要求就上来了。设计时要查相关安规标准留够裕量。7. 个人实操体会与扩展思路这个方案我前后做过几版从最初的分立元件搭均衡电路到后来用专用前端芯片再到MCU软件策略的不断优化踩的坑不少。最大的体会是均衡不是孤立的电路而是电池管理的一部分必须和采集、保护、充电逻辑一起考虑。单独把均衡做得很强但采集不准、充电不配合整体效果照样拉胯。另一个体会是被动均衡的发热问题必须在设计初期就重视。我见过不少板子均衡电阻选得小PCB布局又紧凑结果一均衡就局部烫手长期跑下来电阻焊点开裂、PCB变色。后来我养成习惯均衡电阻的功耗按实际计算值的两倍选封装PCB上留足散热铜箔实测温升控制在40度以内可靠性明显提升。扩展思路方面这个两节串联的方案可以扩展到更多节。MP2642GR-Z本身支持多节STM32F405ZG的资源也够。扩展到多节后均衡策略要更复杂比如优先级排序、分时均衡、全局优化。另外可以加入电池模型和SOC估算让均衡更精准而不是只看电压。再进一步可以把均衡数据上传到云端或者上位机做远程监控和健康管理这对备用电源系统的运维很有价值。最后分享一个小技巧调试均衡时用电子负载或者可调电源模拟电池比用真实电池方便得多。可以精确设定每节电压快速验证各种工况下的均衡逻辑。等逻辑调通了再上真实电池做长期测试。这样能省很多时间也能避免真实电池被反复折腾。
阅读完成 · 觉得有帮助?
咨询建站