1. 为什么串联电池组的均衡不是可选功能而是生存刚需两节锂电池串联标称电压7.4V满电8.4V截止6.0V——这个配置在便携储能、备用电源、小型UPS里太常见了。很多人第一次做双串电池包的时候会觉得两节电池买同一批次、同一容量串起来用不就行了。我当初也是这么想的直到连续烧了两组电池。问题的根源在于串联回路里电流处处相等但每节电池的实际容量、内阻、自放电率不可能完全一致。充电时容量小的那节先到4.2V如果继续按总电压8.4V充这节就会被过充放电时容量小的那节先到3.0V如果继续放到总电压6.0V这节就会被过放。过充和过放对锂电来说都是不可逆的损伤轻则容量衰减重则鼓包、热失控。所以均衡电路要干的事很明确在充电和放电过程中让两节电池的电压尽量保持一致或者至少让任何一节都不越过安全边界。被动均衡靠电阻放电把电压高的那节泄掉一点主动均衡靠电感或电容把能量从高电压那节搬到低电压那节。前者简单便宜但发热、效率低后者复杂但能量利用率高。这次选用的方案是MP2642GR-Z PIC18F97J94的组合。MP2642GR-Z是一颗带均衡功能的电池管理前端PIC18F97J94是一颗带LCD驱动和丰富外设的8位MCU。这个搭配的逻辑是MP2642GR-Z负责模拟端的电压采集、过压欠压保护和被动均衡驱动PIC18F97J94负责数字端的逻辑控制、状态机管理、LCD显示和通信。两者通过I2C或SPI交互形成一个完整的双串BMS。注意均衡功能不是锦上添花在双串系统里它是安全底线。没有均衡的双串电池包循环寿命通常只有带均衡方案的一半甚至更短。2. MP2642GR-Z 的均衡机制与外围电路设计要点2.1 这颗芯片到底怎么泄掉多余的电MP2642GR-Z内部集成了两路独立的均衡开关分别对应CELL1和CELL2。当MCU通过通信接口告诉它CELL1电压偏高时芯片会打开CELL1对应的内部MOSFET把CELL1正极和一个外部均衡电阻连通电流从CELL1正极流经电阻到CELL1负极也就是CELL2正极从而让CELL1放电。这里有个关键点均衡电阻的选型和功耗计算。假设均衡电流设定为50mACELL1电压4.2V那么电阻值R 4.2V / 50mA 84Ω取标准值82Ω。功耗P 4.2V × 50mA 0.21W所以至少要选0805封装以上的电阻最好用1206或2010封装留足余量。但实际设计中均衡电流不能太大。原因有两个一是电阻发热会局部烤热PCB影响旁边电芯的温度一致性二是均衡电流太大会导致边充边放充电器提供的电流被均衡电阻分流充电时间变长。我一般把均衡电流控制在30mA到80mA之间具体看电池容量。容量2000mAh以下的电池包50mA足够容量5000mAh以上的可以做到100mA但电阻功耗就要重新算。2.2 电压采集精度决定了均衡的准头MP2642GR-Z的电压采集精度典型值是±15mV。这个精度意味着什么如果两节电池实际压差只有10mV芯片可能读出来是0mV也可能读出来是25mV。所以均衡的启动阈值不能设得太低否则会在压差很小的时候反复启停造成振荡。我的经验是均衡启动阈值设在30mV到50mV之间。比如CELL1比CELL2高40mV启动均衡当压差降到10mV以内停止均衡。这个启动阈值和停止阈值之间的差值叫迟滞迟滞的存在是为了防止均衡开关在阈值附近频繁抖动。外围电路上每节电池的采集引脚必须加RC滤波。典型值是100Ω电阻串联 0.1μF电容到地截止频率约16kHz能有效滤掉开关噪声和充电器的纹波。但电阻不能太大否则采集引脚的输入偏置电流会在电阻上产生额外压降影响精度。100Ω以内是安全的。2.3 均衡路径上的PCB布局禁忌均衡电流流过的路径是电芯正极 → 芯片内部MOSFET → 外部均衡电阻 → 电芯负极。这条路径上的走线电阻会直接吃掉一部分均衡电流而且走线电阻不一致会导致两节电池的均衡电流不对称。我踩过的坑第一版PCB把均衡电阻放在芯片旁边走线到电池连接器的距离有3cm线宽只有0.3mm。结果CELL1的均衡电流实测45mACELL2只有38mA差了15%。后来把均衡电阻移到电池连接器附近线宽加到0.8mm两路电流差降到3%以内。实操建议均衡电阻尽量靠近电池连接器放置走线宽度按每安培1mm估算50mA虽然很小但为了对称性两路走线长度和宽度必须尽量一致。3. PIC18F97J94 在均衡状态机里的角色拆解3.1 为什么不用纯模拟方案而要多加一颗MCU有人会问MP2642GR-Z本身就有过压保护为什么还要加PIC18F97J94答案在于**保护和管理是两回事**。MP2642GR-Z的过压保护是硬件级的电压超过4.25V就切断充电MOSFET这是最后一道防线。但均衡策略、充电阶段判断、温度补偿、LCD显示、故障记录这些都需要可编程逻辑。PIC18F97J94的优势在于它有24路12位ADC、LCD驱动模块、多个UART/SPI/I2C接口而且功耗控制得不错。在备用电源系统里MCU需要长期在线休眠电流要低。PIC18F97J94的休眠电流可以做到几百nA级别配合看门狗定时唤醒非常适合这种场景。3.2 均衡状态机的四个阶段我在固件里把均衡逻辑拆成四个状态状态一空闲监测。MCU每500ms通过I2C读取MP2642GR-Z的电压寄存器计算两节压差。如果压差小于停止阈值比如10mV保持空闲如果大于启动阈值比如40mV进入状态二。状态二均衡启动。MCU向MP2642GR-Z写入均衡配置寄存器打开高压那节的均衡开关。同时启动一个软件定时器记录均衡持续时间。状态三均衡进行中。每200ms重新读取电压如果压差降到停止阈值以下进入状态四如果均衡持续时间超过预设上限比如30分钟强制进入状态四防止电阻过热。状态四均衡停止与冷却。关闭均衡开关等待至少10秒再允许下一次均衡启动。这个冷却时间是为了让均衡电阻降温也是为了防止状态机在边界条件下振荡。这个状态机的关键参数是均衡持续时间上限和冷却时间。我试过把上限设成10分钟结果在电池压差很大的时候10分钟根本均衡不完反复启停反而效率低。后来改成30分钟配合温度监测如果板温超过60°C就提前终止。3.3 温度补偿与安全联锁锂电池的电压和温度强相关。冬天0°C时4.2V对应的实际SOC可能只有90%夏天40°C时4.15V就可能对应100%。所以均衡阈值不能是固定值必须做温度补偿。我的做法是在电池包上贴一颗NTC热敏电阻接到PIC18F97J94的ADC引脚。固件里维护一张温度-阈值查找表温度区间均衡启动阈值均衡停止阈值过压保护阈值0°C以下60mV20mV4.15V0~15°C50mV15mV4.20V15~35°C40mV10mV4.25V35~45°C35mV10mV4.20V45°C以上禁止均衡禁止均衡4.10V45°C以上禁止均衡是因为高温下锂电本身就不稳定再叠加均衡电阻的局部加热风险太大。这个联锁逻辑必须做在固件里不能只靠硬件。4. 从寄存器配置到实测波形一次完整的均衡调试记录4.1 上电后的第一轮寄存器配置MP2642GR-Z上电后默认均衡功能是关闭的。需要通过I2C写入配置寄存器。以下是我用的初始化序列伪代码// 初始化I2C速率100kHz I2C_Init(100000); // 配置均衡启动阈值40mV WriteReg(MP2642_ADDR, REG_BAL_THRESH, 0x28); // 配置均衡停止阈值10mV WriteReg(MP2642_ADDR, REG_BAL_HYST, 0x0A); // 使能均衡功能使能过压保护 WriteReg(MP2642_ADDR, REG_CTRL, 0x03); // 读取初始电压 uint16_t cell1_mv ReadReg16(MP2642_ADDR, REG_CELL1_V); uint16_t cell2_mv ReadReg16(MP2642_ADDR, REG_CELL2_V);这里有个细节REG_BAL_THRESH的单位是mV还是LSB一定要看数据手册。我一开始以为是mV直接写了40结果实际阈值变成了40×5200mV均衡一直不启动。后来查手册发现单位是5mV/LSB写8才是40mV。4.2 用示波器抓均衡开关的瞬间均衡开关打开时均衡电阻两端的电压波形能告诉你很多信息。我用示波器探头夹在均衡电阻两端抓到的波形是这样的开关打开瞬间电压从0跳变到CELL电压约4.0V上升时间约2μs说明内部MOSFET的开关速度很快。稳态时电压有约50mV的纹波频率和充电器的开关频率一致约100kHz这是充电器纹波通过电池内阻耦合过来的。开关关闭瞬间电压从4.0V跌到0下降时间约1μs但有一个约-0.5V的负尖峰这是走线电感引起的。这个负尖峰不能忽视。如果尖峰幅度超过芯片内部MOSFET的耐压长期下来会损伤芯片。我在均衡电阻两端并联了一个肖特基二极管阴极接CELL正极阳极接CELL负极把负尖峰钳位到-0.3V以内。加了二极管之后尖峰明显被抑制。4.3 实测数据均衡前后的压差变化用两节标称2000mAh的电池故意把一节充到4.15V另一节放到3.95V压差200mV。然后启动均衡记录压差随时间的变化时间分钟CELL1电压CELL2电压压差04.15V3.95V200mV54.12V3.97V150mV104.09V3.99V100mV204.05V4.02V30mV304.03V4.03V0mV均衡电流实测约48mA和设计值50mA基本吻合。30分钟把200mV压差均衡到0这个速度对于备用电源系统来说是可以接受的。但如果压差更大比如500mV就需要更长时间这时候可以考虑提高均衡电流到100mA但电阻功耗会翻倍需要重新评估散热。5. 那些数据手册不会告诉你的踩坑实录5.1 均衡电阻的热耦合问题第一版设计我把两路均衡电阻并排放在一起间距只有1mm。结果均衡CELL1的时候CELL2的均衡电阻也被烤热了导致CELL2的电压采集出现漂移——电阻温度升高采集引脚的RC滤波电阻阻值变化分压比改变读出来的电压偏高约15mV。解决方法是两路均衡电阻拉开至少5mm间距并且在电阻下方铺铜散热。如果空间允许把两路电阻放在PCB的不同区域避免热耦合。这个坑在数据手册里完全不会提但实际调试时非常致命。5.2 I2C通信在均衡开启时的误码均衡开关打开后电池回路上有50mA的脉冲电流会在I2C走线上感应出噪声。我遇到过I2C通信偶尔NACK的情况概率大概每1000次读写出现1次。虽然MP2642GR-Z有重试机制但频繁NACK会导致状态机卡死。解决办法有两个一是I2C走线远离均衡电流路径至少保持5mm间距最好中间加地线隔离二是在I2C的SDA和SCL上各加一个100Ω的串联电阻配合芯片内部的寄生电容形成低通滤波抑制高频噪声。加了串联电阻之后NACK概率降到万分之一以下。5.3 休眠唤醒后的均衡状态丢失备用电源系统要求低功耗PIC18F97J94大部分时间在休眠定时唤醒读电压。但MP2642GR-Z的均衡配置寄存器在休眠期间不会保持——如果MCU休眠时均衡是开启的唤醒后需要重新配置。我一开始没注意这个结果MCU休眠后均衡开关自动关闭压差又慢慢变大。后来在唤醒中断里加了一段状态恢复代码每次唤醒先读MP2642GR-Z的状态寄存器如果发现均衡被意外关闭就重新写入配置。这段代码增加了约200μs的唤醒时间但保证了均衡的连续性。5.4 电池连接器接触电阻的隐形杀手双串电池包的连接器如果接触电阻不一致比如一节电池的接触电阻是5mΩ另一节是15mΩ那么在1A放电时两节电池的端电压差就是10mV。这个压差会被电压采集电路读到导致均衡误启动。我实测过用同一批次的连接器插拔50次之后接触电阻从3mΩ涨到12mΩ而且两路不一致。所以连接器的选型不能省要用镀金触点、双触点结构的连接器并且定期检查接触电阻。如果发现均衡频繁启动但压差始终降不下来首先要怀疑连接器。6. 双串均衡方案的扩展思路与选型对比6.1 被动均衡 vs 主动均衡什么时候该换方案被动均衡的优点是简单、便宜、可靠缺点是能量全部变成热效率为零。对于2000mAh以下的小电池包被动均衡的50mA电流已经够用成本优势明显。但对于10000mAh以上的大电池包被动均衡的电流显得杯水车薪均衡一次可能要几个小时这时候就该考虑主动均衡。主动均衡用电感或电容做能量搬运效率可以做到80%以上均衡电流可以做到1A甚至更大。但代价是电路复杂、成本高、EMI难处理。我的建议是电池容量5000mAh以下被动均衡足够5000mAh以上评估主动均衡。6.2 从双串扩展到多串的注意事项MP2642GR-Z是双串专用芯片如果要扩展到三串或四串需要换芯片或者级联。级联方案里每颗芯片负责两节通过通信接口串联。但级联会带来两个问题一是通信延迟增加均衡响应变慢二是高压侧的芯片需要隔离通信成本上升。如果项目一开始就规划了多串建议直接选支持多串的前端芯片不要用双串芯片级联。级联方案在实验室能跑通但量产时的一致性问题和隔离问题会让人头疼。6.3 固件升级与参数存储的设计PIC18F97J94有自编程Flash可以把均衡阈值、温度补偿表、故障记录存在Flash里。这样即使断电参数也不会丢失。但要注意Flash的擦写次数有限典型10万次不要频繁写入。我的做法是参数只在出厂标定时写入一次运行时的故障记录存在EEPROM或外部Flash里定期批量写入。故障记录的内容包括均衡启动次数、均衡总时长、过压保护触发次数、最高温度记录。这些数据对售后分析和电池健康度评估非常有价值。我遇到过一组电池包均衡启动次数异常高后来发现是连接器接触不良换了连接器就正常了。如果没有故障记录这个问题很难定位。7. 实测验证均衡功能对电池循环寿命的实际影响7.1 对比测试的设计为了验证均衡的实际效果我做了两组对比测试A组带均衡功能B组不带均衡均衡电阻不焊接固件关闭均衡。两组都用同批次的两节2000mAh电池同样的充放电循环1A充电到8.4V转恒压到电流小于50mA然后1A放电到6.0V。7.2 循环200次后的容量保持率循环次数A组容量保持率B组容量保持率A组压差B组压差5098%96%8mV45mV10095%89%12mV90mV15092%81%15mV140mV20089%72%18mV200mVB组在第150次循环后压差已经达到140mV放电时容量小的那节先到3.0V导致整组提前截止实际可用容量大幅下降。A组因为有均衡压差始终控制在20mV以内容量保持率明显更好。7.3 均衡功能的功耗代价均衡功能不是免费的。A组在充电末期的均衡阶段均衡电阻消耗约0.2W持续约20分钟额外消耗约0.067Wh。对于总容量约15Wh的电池包这个损耗约占0.45%。但换来的是循环寿命从72%提升到89%这笔账怎么算都划算。经验总结均衡的功耗代价远小于电池提前报废的代价。在备用电源系统里电池更换的成本包括人工和停机损失通常是均衡电路成本的几十倍。8. 写在最后几个容易被忽视的细节均衡阈值不要设得太激进。我见过有人把启动阈值设成10mV结果均衡开关一直在抖电阻温度居高不下。30mV到50mV是比较稳妥的范围。均衡电阻的功率余量至少留2倍。算出来0.2W就选0.5W的电阻。电阻长期工作在额定功率的80%以上阻值会漂移均衡电流就不准了。固件里一定要加均衡超时保护。不管什么原因均衡持续时间超过上限就强制关闭。我遇到过因为电压采集异常导致均衡一直开启的情况如果没有超时保护电阻会烧掉。温度监测不能省。NTC热敏电阻几毛钱一颗但能防止高温下的危险。45°C以上禁止均衡这个逻辑必须做。I2C通信要有重试机制。均衡开启时的噪声可能导致通信失败重试3次还失败就报故障不要无限重试。最后均衡只是BMS的一部分。过压保护、欠压保护、过流保护、短路保护这些一个都不能少。均衡解决的是一致性问题保护解决的是安全性问题两者不能互相替代。
阅读完成 · 觉得有帮助?