ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于MP2642GR-Z与PIC18F55K42的两串锂电被动均衡方案设计与实战

基于MP2642GR-Z与PIC18F55K42的两串锂电被动均衡方案设计与实战

1. 从两个串联电芯的电压差说起:为什么被动均衡在储能场景里依然能打

储能和备用电源系统里,两串电芯的电压不均衡是个绕不开的问题。你只要用过两节锂电串联给设备供电,就会遇到一个很典型的现象:充放电循环几十次之后,两节电芯的开路电压开始出现肉眼可见的差距,可能一节3.9V,另一节3.7V。这个差距看起来不大,但它会随着循环次数累积,最终导致容量小的那节先到过充或过放保护点,整组电池的可用容量被拖垮。

很多人一提到均衡就想到主动均衡,觉得能量转移效率高、发热小、看起来更高级。但实际在中小功率的储能和备用电源产品里,被动均衡的出货量远远大于主动均衡。原因很直接:成本、可靠性和静态功耗。主动均衡需要电感、电容、隔离驱动和复杂的控制逻辑,BOM成本和PCB面积都上去了,而且静态时如果控制不当还会持续耗电。被动均衡就是给每节电芯并联一个耗能电阻,通过开关控制把电压高的那节电芯的多余能量以热的形式放掉,电路简单到几乎不会坏。

这次要聊的方案,是用一颗MP2642GR-Z配合PIC18F55K42单片机,对两个串联电芯做被动均衡。MP2642GR-Z是一颗带均衡功能的电池管理前端,内部集成了均衡开关和驱动,PIC18F55K42负责采集电压、判断均衡条件、控制均衡时序,同时兼顾系统其他任务。这个组合的特点是:前端芯片把模拟侧的脏活累活干了,单片机只做逻辑判断和状态机,分工清晰,固件写起来不绕。

适合谁看这篇内容?如果你正在做两串锂电的BMS方案,或者手头有个备用电源项目需要加均衡功能,又或者你之前用分立MOS加电阻搭过均衡电路但被一致性和温升问题折腾过,这篇内容应该能给你一些可以直接落地的参考。我会把选型逻辑、硬件连接、固件状态机、参数计算和实测中踩过的坑都摊开讲,尽量让你看完就能动手。

2. MP2642GR-Z在均衡回路里到底扮演什么角色

2.1 前端芯片与单片机的分工边界

先把这个方案的分工说清楚,不然后面看电路和代码会乱。MP2642GR-Z的核心职责是模拟前端,它负责电芯电压的采集通道切换、均衡开关的导通与关断、以及过压欠压的硬件级保护。PIC18F55K42是数字控制器,它通过通信接口读取前端采集到的电压数据,运行均衡判断算法,然后把均衡开关的控制命令写回前端芯片。

这个分工的好处在于,均衡开关的驱动电流和导通电阻由前端芯片保证,单片机不需要直接驱动功率管,也不用担心IO口驱动能力不够导致MOS管工作在放大区发热。同时,前端芯片内部通常有均衡定时器和过温保护,即使单片机固件跑飞,硬件层面也能在超时后自动关断均衡,避免电阻持续耗电把电芯放空。

注意:不要把均衡开关直接挂在单片机的GPIO上驱动。我见过有人用PIC的IO口直接推一个NPN三极管去控制均衡电阻,结果三极管基极电流不够,工作在放大区,均衡电流只有设计值的三分之一,而且三极管烫得厉害。前端芯片集成的均衡驱动是经过设计的,饱和压降和开关速度都有保证。

2.2 均衡通道的电气连接方式

两串电芯的均衡通道连接方式需要特别注意参考地的问题。两节电芯串联后,底部电芯的负极是系统地,顶部电芯的负极是两节之间的中点。MP2642GR-Z的均衡输出通道通常是开漏或者内部MOS对地导通的结构,每个通道对应一节电芯的正负极。

具体连接上,底部电芯的均衡电阻一端接底部电芯正极,另一端接前端芯片的均衡通道引脚,芯片内部开关导通时把电阻拉到地,形成放电回路。顶部电芯的均衡电阻一端接顶部电芯正极,另一端接另一个均衡通道引脚,芯片内部开关导通时把电阻拉到顶部电芯的负极,也就是中点。这里的关键是前端芯片的均衡通道耐压必须覆盖顶部电芯的电压加上可能的瞬态尖峰。

MP2642GR-Z的均衡通道耐压规格需要查数据手册确认,但通常这类前端芯片的均衡引脚耐压会做到电芯满充电压以上再加一定裕量。如果你选的芯片耐压不够,顶部电芯均衡时引脚会被拉到高于绝对最大额定值的电压,芯片会损坏。这一点在选型阶段就要确认,不要等板子回来才发现。

2.3 均衡电阻的取值与功耗计算

均衡电阻的取值直接决定了均衡电流和发热量。假设我们希望在顶部电芯电压4.2V时产生大约50mA的均衡电流,那么电阻值大约是4.2V除以50mA,等于84欧姆,取标准值82欧姆。实际电流会略大一点,约51mA。这个电流下电阻的功耗是电压平方除以电阻,4.2乘4.2除以82,约0.215W。所以电阻封装至少要选0805以上,稳妥一点用1206或者两个0805并联。

但这里有个容易被忽略的点:均衡电流并不是恒定的。随着均衡进行,电芯电压会下降,均衡电流也会减小。如果电芯从4.2V降到4.0V,82欧姆电阻上的电流从51mA降到49mA,变化不大,因为电压变化范围有限。但如果你的均衡终止条件设得比较低,比如降到3.9V就停,那平均电流会明显低于初始值。计算平均功耗时要用平均电压来算,不能直接用满充电压。

还有一个实际约束是前端芯片内部均衡开关的导通电阻。如果开关导通电阻有几十欧姆,那它和外部均衡电阻串联后总阻值变大,实际均衡电流会比计算值小。MP2642GR-Z的内部开关导通电阻需要查手册,如果偏大,外部电阻就要相应减小来补偿。我一般会在设计时留20%的电流裕量,避免因为导通电阻和电阻精度导致均衡太慢。

3. PIC18F55K42的固件状态机:均衡不是一直开着就行

3.1 电压采集与滤波:为什么不能直接用单次采样值

PIC18F55K42通过通信接口从前端芯片读取电压数据,但读回来的原始值不能直接拿来做均衡判断。原因有两个:一是ADC采样本身有噪声,单次采样可能偏高或偏低几十毫伏;二是均衡开关导通和关断的瞬间,电芯电压会因为负载跳变产生瞬态波动,如果在这个时刻采样,读到的值不能反映真实开路电压。

我的做法是在固件里做一个滑动平均滤波,对每节电芯的电压连续采样8次,去掉最大值和最小值,剩下6个取平均。这样处理之后,电压数据的抖动可以控制在正负5mV以内。采样时机上,均衡开关关断后至少等待100ms再采样,让电芯电压从负载状态恢复到接近开路状态。这个等待时间取决于电芯的极化特性和均衡电流大小,50mA的均衡电流下,100ms通常够了,如果均衡电流更大,等待时间要相应加长。

提示:滑动平均的窗口大小需要权衡。窗口太小滤波效果不够,窗口太大响应变慢,均衡判断会滞后。8次采样在大多数应用里是个比较平衡的选择,采样间隔10ms的话,一个滤波周期80ms,加上100ms恢复等待,均衡判断周期大约200ms,对储能系统来说完全够用。

3.2 均衡启动与停止的阈值设计

均衡启动和停止的阈值设计是固件里最需要仔细考虑的部分。最朴素的做法是设定一个固定压差阈值,比如两节电芯电压差超过30mV就启动均衡,低于10mV就停止。但实际用下来,固定阈值在充放电不同阶段表现差异很大。

充电阶段,电芯电压整体上升,压差容易被充电电流和电芯内阻差异放大,这时候如果阈值设得太低,均衡会频繁启停。放电阶段,压差又会被负载电流影响。所以更稳妥的做法是引入状态相关的阈值:充电时压差阈值设高一些,比如50mV启动、20mV停止;静置和放电时阈值设低一些,比如30mV启动、10mV停止。

另外,均衡的对象是电压高的那节电芯,但判断哪节高哪节低需要在滤波后的数据上做比较。如果两节电芯电压差在阈值附近来回跳,均衡通道会反复切换,这会导致前端芯片的均衡开关频繁动作,既增加功耗又影响寿命。解决办法是加一个滞回区间,启动阈值和停止阈值之间留出足够的间隔,同时均衡一旦启动,至少持续一个最小均衡周期,比如30秒,期间即使压差暂时缩小也不停止。

3.3 均衡时序与温度监控的联动

均衡电阻发热是绕不开的问题。两节电芯同时均衡时,两颗82欧姆电阻的功耗加起来约0.43W,如果板子空间小、散热不好,电阻周围温度会明显上升。PIC18F55K42需要定期读取板载温度传感器或者前端芯片内部的温度数据,当温度超过设定上限时暂停均衡,等温度降下来再恢复。

温度监控的采样周期可以和电压采样错开,比如每1秒读一次温度,每200ms做一次电压判断。温度上限我一般设在60摄氏度,超过就暂停,降到50摄氏度以下再恢复。这个滞回区间防止温度在阈值附近波动导致均衡反复启停。

均衡时序上,还有一个细节是两节电芯不要同时长时间均衡。如果两节电芯压差都很大,同时开启均衡会让总发热量翻倍。更好的策略是交替均衡:先均衡电压最高的那节,持续一段时间后重新评估,如果另一节变成最高再切换。这样任意时刻只有一颗电阻在发热,热管理压力小很多。当然,如果压差方向明确,只有一节电芯持续偏高,那就一直均衡它,不需要交替。

4. 硬件布局与热设计:那些数据手册不会告诉你的细节

4.1 均衡电阻的摆放位置与铜箔面积

均衡电阻的摆放位置对温升影响很大。我试过把两颗82欧姆电阻并排放在一起,间距只有1mm,结果均衡时两颗电阻互相加热,表面温度比单独放置时高了将近20摄氏度。后来改成间距至少5mm,并且在电阻下方铺了铜箔帮助散热,温升明显改善。

铜箔面积方面,1206封装的电阻下方铺10mm乘10mm的铜箔,温升可以降低10到15摄氏度。如果板子空间允许,铺更大面积的铜箔效果更好。但要注意铜箔不能和敏感信号线靠太近,均衡电阻下方的铜箔是接地的,如果旁边有高阻抗的电压采样线,铜箔上的噪声可能耦合过去。我的做法是在均衡电阻和采样线之间留至少3mm的间距,中间用地线隔开。

还有一个细节是均衡电阻的走线宽度。50mA的电流不需要很宽的走线,1mm宽的铜箔在1盎司铜厚下载流能力远超50mA。但走线电阻会分压,如果走线太长太细,实际加在均衡电阻上的电压会降低,均衡电流减小。我一般用0.5mm以上的走线宽度,长度尽量短,把走线电阻控制在0.1欧姆以内,相对于82欧姆的均衡电阻可以忽略。

4.2 前端芯片的电源去耦与参考电压稳定性

MP2642GR-Z的电源去耦直接影响电压采集精度。前端芯片通常从电芯取电,顶部电芯的正极是芯片的供电正极,底部电芯的负极是芯片的地。这个供电方式下,芯片的电源引脚上会有电芯电压的纹波和噪声,必须加去耦电容。

去耦电容的选型上,我一般用1微法陶瓷电容加100纳法陶瓷电容并联,1微法的放在芯片电源引脚附近,100纳法的放在更靠近引脚的位置。如果芯片有单独的参考电压引脚,参考电压的去耦同样重要,参考电压不稳会直接导致电压采集值跳动。参考电压引脚通常接一个100纳法电容到地,电容要尽量靠近引脚,走线尽量短。

注意:前端芯片的供电来自电芯,如果电芯电压在均衡时被拉低,芯片供电也会跟着波动。虽然MP2642GR-Z的工作电压范围通常比较宽,但如果电芯电压接近芯片的最低工作电压,均衡时供电跌落可能导致芯片复位。这种情况下要么降低均衡电流,要么在芯片电源引脚加大电容储能,保证均衡瞬间供电不跌落。

4.3 通信接口的抗干扰处理

PIC18F55K42和MP2642GR-Z之间的通信接口通常是I2C或者SPI,具体取决于前端芯片的支持。不管哪种接口,在储能和备用电源这种有功率电感的场景里,通信线都容易受到干扰。我遇到过I2C通信在均衡开启时偶尔出错的情况,后来在SCL和SDA线上各串了一个33欧姆电阻,并且在靠近单片机端加了100皮法电容到地,通信稳定性明显提升。

串阻的作用是抑制反射和限流,电容的作用是滤除高频噪声。33欧姆和100皮法的组合对I2C的上升沿影响很小,在400kHz速率下完全可用。如果通信速率更高,电容值要相应减小,否则上升沿会被拖慢导致通信失败。SPI接口的话,时钟线更容易受干扰,串阻和电容的处理方式类似,但电容值要更小,一般22皮法到47皮法。

另外,通信线的走线要尽量远离均衡电阻和功率电感,如果实在避不开,中间用地线隔离。通信线也不要和电压采样线平行走太长距离,避免串扰。这些布局细节在原理图阶段就要考虑,等PCB回来再改就麻烦了。

5. 实测中遇到的三个典型问题与排查过程

5.1 均衡电流只有设计值的一半:从导通电阻查到电阻精度

第一批板子回来之后,我测了均衡电流,发现只有25mA左右,设计值是50mA,差了一半。排查过程是这样的:先确认电芯电压正常,4.1V左右;然后测量均衡电阻两端的电压,发现只有2.0V左右,而不是预期的4.1V。这说明均衡回路上有额外的压降。

顺着回路查,均衡电阻一端接电芯正极,另一端接前端芯片的均衡引脚。测量均衡引脚对地的电压,发现均衡开启时引脚电压是2.1V,而不是接近0V。这说明前端芯片内部均衡开关的导通电阻比较大,分掉了将近2.1V的电压。查数据手册,内部开关导通电阻在典型条件下是40欧姆左右,而我用的外部电阻是82欧姆,总阻值122欧姆,电流约33mA,再加上电阻精度和电压差异,实测25mA就说得通了。

解决办法是把外部均衡电阻从82欧姆改成43欧姆,这样总阻值约83欧姆,均衡电流回到50mA左右。但要注意,外部电阻减小后,电阻自身的功耗增加了,43欧姆电阻在4.1V下的功耗约0.39W,需要换用更大封装的电阻,我最后用了两个0805电阻并联,每个承担约0.2W,温升可以接受。

5.2 均衡开启后电压采集跳变:采样时机不对

第二个问题是均衡开启后,电压采集值会跳变几十毫伏,导致均衡判断逻辑误判。一开始以为是ADC噪声,加了滤波电容也没改善。后来用示波器看电芯电压波形,发现均衡开关导通的瞬间,电芯电压会有一个向下的台阶,幅度约30mV,然后慢慢恢复。这个台阶是电芯内阻和均衡电流共同作用的结果,50mA电流乘以电芯内阻约0.6欧姆,产生30mV的压降。

问题根源是采样时机。原来的固件在均衡开启状态下也进行电压采样,采到的值包含了内阻压降,不能反映真实开路电压。修改后的逻辑是:均衡开启后,先关断均衡,等待100ms让电压恢复,再采样,采样完成后重新开启均衡。这样虽然均衡占空比略有降低,但电压数据准确了,均衡判断不会误判。

这个等待时间需要根据电芯特性调整。内阻大的电芯恢复慢,等待时间要加长。我试过用200ms等待,均衡效率下降约10%,但电压数据更稳。实际产品里我用了150ms作为折中,效果可以接受。

5.3 高温环境下均衡频繁暂停:温度阈值和散热要一起调

第三个问题出现在高温老化测试中。环境温度升到45摄氏度后,均衡电阻表面温度很快超过60摄氏度,固件触发过温保护暂停均衡,温度降下来又恢复,如此反复,均衡效率很低。排查发现两个问题:一是温度阈值设得偏低,60摄氏度对于电阻来说其实还有余量;二是电阻的散热设计不够,铜箔面积偏小。

调整方案分两步:先把过温暂停阈值从60摄氏度提高到75摄氏度,恢复阈值从50摄氏度提高到65摄氏度。电阻的额定工作温度通常到125摄氏度以上,75摄氏度暂停是安全的。然后加大均衡电阻下方的铜箔面积,从10mm乘10mm增加到15mm乘15mm,并且在电阻周围多打过孔到背面铜层帮助散热。调整后,45摄氏度环境下均衡电阻表面温度稳定在70摄氏度左右,不再频繁触发暂停。

提示:温度阈值不能只看电阻的额定温度,还要考虑PCB板材的玻璃化转变温度。普通FR-4的玻璃化转变温度在130到140摄氏度,长期工作在75摄氏度对板材寿命没有影响。但如果你的产品有更严格的高温要求,比如环境温度60摄氏度以上,那均衡电阻的散热设计要更激进,甚至考虑用金属箔电阻或者把电阻移到板边借助外壳散热。

6. 均衡策略的进阶优化:从固定阈值到自适应

6.1 根据电芯老化程度动态调整均衡阈值

固定阈值在电芯新鲜的时候工作得很好,但随着电芯老化,两节电芯的容量差异和内阻差异都会变大,固定阈值可能变得过于敏感或者过于迟钝。我后来加了一个简单的自适应逻辑:记录每次充电过程中两节电芯到达满充截止电压的时间差,如果时间差持续增大,说明电芯不一致性在加剧,适当放宽均衡停止阈值,避免均衡频繁启停。

具体实现上,PIC18F55K42的EEPROM里存一个老化系数,每次完整充放电循环后更新。老化系数初始为1.0,如果两节电芯满充时间差超过10分钟,老化系数增加0.05,上限1.5。均衡停止阈值乘以老化系数,这样电芯越老,停止阈值越宽,均衡不会因为压差始终降不到很低而一直开着。

这个逻辑不是必须的,但对于需要长期运行的备用电源系统来说,能减少后期维护时的均衡异常告警。实现成本很低,就是几个字节的EEPROM读写和简单的乘法运算,PIC18F55K42完全能胜任。

6.2 均衡与充电阶段的配合:什么时候均衡最有效

均衡最有效的时机是充电末期和静置阶段。充电末期电芯电压接近满充,压差最能反映容量差异,这时候均衡可以把高电压电芯的多余容量放掉,让两节电芯同时到达满充。静置阶段没有充放电电流干扰,电压采集最准确,均衡判断也最可靠。

放电阶段均衡的效果相对有限,因为放电时压差主要来自内阻差异而不是容量差异,均衡放掉的那点能量对放电过程影响很小。所以我的策略是:充电阶段均衡阈值设得积极一些,静置阶段正常,放电阶段如果压差不大就暂停均衡,把均衡机会留给充电和静置阶段。

这个策略在固件里通过状态机实现,PIC18F55K42检测到充电器接入就进入充电均衡模式,充电器拔掉后进入静置均衡模式,检测到负载电流就进入放电模式。模式切换时均衡参数跟着切换,逻辑清晰,调试起来也方便。

6.3 低功耗待机下的均衡处理

备用电源系统很多时候处于待机状态,系统功耗要求很严。均衡电阻即使不开启,前端芯片的静态电流和单片机的待机电流也要控制。MP2642GR-Z在待机模式下的静态电流通常在几十微安级别,PIC18F55K42可以进入休眠模式,定时唤醒做一次电压采集和均衡判断,判断完继续休眠。

唤醒周期我设的是10秒一次,每次唤醒工作约200ms,平均电流增加很少。如果判断需要均衡,就开启均衡并保持一段时间,均衡期间单片机可以继续休眠,由前端芯片的均衡定时器控制均衡时长,超时后自动关断。这样即使单片机在休眠中出了什么问题,均衡也不会无限持续。

待机均衡的阈值要设得比正常工作模式更宽松,比如压差超过100mV才启动,因为待机时均衡电流小,均衡速度慢,频繁启动没有意义。而且待机时系统散热条件可能更差,均衡电阻的温升要留更多余量。

7. 关键参数速查与选型对照

7.1 均衡电阻选型对照表

目标均衡电流电芯电压外部电阻计算值标准电阻取值电阻功耗推荐封装
30mA4.2V140欧姆130欧姆0.136W0805
50mA4.2V84欧姆82欧姆0.215W1206或两个0805并联
80mA4.2V52.5欧姆51欧姆0.346W两个1206并联或2512
100mA4.2V42欧姆43欧姆0.410W2512或两个1206并联

这个表里的外部电阻计算值没有扣除前端芯片内部开关的导通电阻。实际选型时,如果内部导通电阻不可忽略,外部电阻要相应减小。比如内部导通电阻40欧姆,目标总阻值84欧姆,外部电阻就选43欧姆左右。

7.2 均衡参数配置速查

参数推荐值说明
电压采样滤波窗口8次去掉最大最小值后取平均
均衡关断后采样等待100到150ms让电芯电压从负载状态恢复
充电均衡启动阈值50mV充电阶段压差容易被放大
充电均衡停止阈值20mV留出滞回区间
静置均衡启动阈值30mV静置时电压采集最准
静置均衡停止阈值10mV滞回区间20mV
最小均衡持续时间30秒防止压差在阈值附近反复启停
过温暂停阈值75摄氏度根据电阻和板材额定温度调整
过温恢复阈值65摄氏度滞回区间10摄氏度
待机唤醒周期10秒平衡功耗和响应速度

这些参数不是一成不变的,需要根据具体电芯特性、散热条件和产品要求调整。比如电芯内阻大的,采样等待时间要加长;散热条件差的,过温阈值要降低;待机功耗要求严的,唤醒周期可以加长到30秒甚至更长。

8. 写在最后:几个让我少走弯路的习惯

做这类均衡方案,我最大的体会是不要等到板子回来才验证均衡回路。在原理图阶段就可以用仿真工具算一下均衡电流和功耗,确认电阻封装和散热方案。我现在的习惯是在画PCB之前,先用Excel把均衡电流、电阻功耗、温升估算都算一遍,把参数定死再画板,比板子回来再飞线改电阻省事得多。

另一个习惯是固件里一定要留调试接口。PIC18F55K42的UART或者I2C从机模式都可以,把电压数据、均衡状态、温度数据实时输出出来,调试的时候用串口工具一看就知道均衡在干什么。没有这个接口,你只能靠万用表猜,效率差很多。

最后一个习惯是均衡电阻不要用太小的封装。0805是底线,能用1206就用1206,空间允许的话两个0805并联比一个1206更灵活,功耗分摊后温升更低。我早期用过0603的均衡电阻,50mA下表面温度直接冲到90摄氏度,虽然没坏但心里不踏实,后来全部换成1206,再也没为均衡电阻的温度操过心。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进