资讯详情

资讯详情

两节串联电池被动均衡方案:MP2642GR-Z与PIC18F85J10实战

1. 项目背景与核心需求拆解1.1 为什么串联电池组必须做均衡但凡接触过储能系统或者备用电源设计的人心里都清楚一件事串联电池组里最怕的不是某一节电池坏掉而是两节电池“跑偏”。两节标称容量一致的电池出厂时电压可能都是3.7V内阻也接近但经过几十上百次充放电循环之后由于制造公差、温度分布不均、自放电率差异等因素两节电池的荷电状态会逐渐拉开差距。这个差距一旦形成就会进入一个恶性循环——容量低的那节在充电时先到达上限电压保护电路切断充电导致容量高的那节永远充不满放电时容量低的那节又先到达下限电压系统被迫停机容量高的那节还有大量能量没放出来。长此以往整组电池的可用容量会被最弱的那节电池拖死寿命也急剧缩短。我见过不少做备用电源的团队初期为了省成本省空间直接两节锂电串联使用不加均衡电路。结果半年不到原本设计能撑4小时的备电系统实际只能撑2小时出头。拆开一测两节电池的电压差已经超过300mV内阻差了一倍还多。所以串联电池单元的均衡不是可选项而是必选项。1.2 被动均衡与主动均衡的取舍均衡方案大致分两条路线被动均衡和主动均衡。被动均衡说白了就是给每节电池并联一个耗能电阻谁电压高就让谁多放一点电把多余的能量以热量形式消耗掉。这种方式电路简单、成本低、可靠性高缺点是能量白白浪费均衡电流一般只能做到几十到几百毫安均衡速度慢。主动均衡则是把高电压电池的能量通过电感、电容或者变压器转移到低电压电池能量利用率高均衡电流可以做到安培级但电路复杂、成本高、体积大而且引入的开关器件本身也会带来可靠性和EMI问题。对于储能和备用电源系统来说均衡电流不需要太大因为这类系统通常有较长的静置时间或者恒压充电阶段均衡电路可以慢慢把两节电池拉平。而且这类系统对成本、体积和可靠性往往有硬性要求所以被动均衡反而是更务实的选择。这次的项目就是基于这个思路用一颗专用的电池管理前端芯片配合一颗低功耗MCU实现两节串联电池的被动均衡控制。1.3 为什么选 MP2642GR-Z 和 PIC18F85J10 这个组合MP2642GR-Z 是一颗多节电池管理前端支持2到4节串联电池的电压监测、过压欠压保护以及被动均衡驱动。它内部集成了高精度的电压ADC每节电池的电压测量误差可以控制在毫伏级别这对于判断两节电池是否需要均衡至关重要。芯片本身通过I2C或者SPI接口与主控通信均衡开关是内置的MOSFET可以直接驱动外部均衡电阻不需要额外加驱动电路。封装是QFN体积小适合嵌入到电池包内部或者靠近电池的PCB区域。PIC18F85J10 是一颗经典的8位MCU自带LCD驱动、多路PWM、I2C和SPI接口工作电压范围宽低功耗模式下电流可以做到微安级。在这个项目里MCU的角色是“大脑”定期通过I2C读取MP2642GR-Z采集到的两节电池电压根据预设的均衡策略决定是否开启均衡、开启哪一路、均衡占空比设多少同时还要处理按键输入、状态指示和与上位机的通信。PIC18F85J10的LCD驱动能力可以直接驱动段码屏显示两节电池的电压和均衡状态省掉一颗显示驱动芯片这在成本敏感的备用电源产品里很有吸引力。这个组合的核心逻辑是MP2642GR-Z负责高精度的模拟测量和功率开关PIC18F85J10负责策略运算和人机交互。分工明确各司其职既保证了测量精度和均衡能力又保留了策略调整的灵活性。1.4 适用场景与目标读者这套方案主要面向中小型储能系统、UPS备用电源、便携式电站、医疗设备备用电池等场景。这些场景的共同特点是电池串数不多2到4节对成本敏感对可靠性要求高均衡电流需求不大但必须要有。目标读者是嵌入式硬件工程师、电池管理系统开发者、以及正在做备用电源产品定义的方案工程师。如果你手头正好有一个两节锂电串联的备电项目正在纠结均衡电路怎么搭那这篇内容可以直接拿去参考。2. 硬件设计与关键参数计算2.1 MP2642GR-Z 外围电路设计要点MP2642GR-Z 的外围电路不算复杂但有几个地方容易踩坑。先看电池电压采样部分。芯片的每节电池输入引脚比如VC1、VC2、VC3内部有分压电阻网络但为了滤除开关噪声和电池引线电感带来的尖峰建议在每个输入引脚靠近芯片端加一颗100nF的陶瓷电容到地再串联一颗10Ω到100Ω的电阻。这个RC时间常数不用太大截止频率设在1kHz左右就够了目的是把均衡开关动作时产生的干扰挡在ADC外面。均衡电阻的选择是重点。MP2642GR-Z 内部均衡开关的导通电阻典型值是几欧姆外部均衡电阻一般取几十欧姆到一百多欧姆。假设我们选100Ω的均衡电阻单节电池电压按3.7V算均衡电流就是37mA功耗是0.137W。这个功耗用0603封装的电阻勉强能扛但长期工作温升会比较明显建议用0805或者1206封装留足余量。如果两节电池同时均衡总功耗就是0.274WPCB布局时要注意均衡电阻周围不要放温度敏感器件比如NTC或者电解电容。注意均衡电阻的功率计算不能只看标称电压。锂电池充满时电压可以到4.2V这时候均衡电流是42mA功耗是0.176W。选电阻功率时至少留2倍余量也就是0.5W起步。2.2 PIC18F85J10 最小系统与接口分配PIC18F85J10 的最小系统包括主时钟可以用内部振荡器省掉外部晶振、复位电路、去耦电容、以及调试接口。如果对时序精度要求不高内部16MHz振荡器完全够用均衡策略的运算周期是秒级甚至分钟级不需要高精度时钟。去耦电容每对电源引脚配一颗100nF再在电源入口加一颗10uF的钽电容或者MLCC。接口分配上I2C接口用RC3和RC4这是PIC18F85J10的MSSP模块默认引脚。LCD段码屏用PORTB和PORTD的部分引脚具体分配要看屏的段位定义。按键输入用RB0和RB1配上拉电阻和RC滤波。状态指示LED用RA0和RA1一个表示系统运行一个表示均衡进行中。如果还需要和上位机通信可以用UART用RC6和RC7。这里有个细节PIC18F85J10的I2C引脚是开漏输出必须外接上拉电阻。上拉电阻取4.7kΩ到10kΩ之间具体看总线电容和通信速率。如果MP2642GR-Z和MCU在同一块PCB上走线很短4.7kΩ没问题。如果电池包和主板是分开的通过排线连接总线电容可能超过100pF这时候上拉电阻要减小到2.2kΩ左右否则波形上升沿会变缓通信容易出错。2.3 均衡电流与热设计计算均衡电流的设定需要权衡三个因素均衡速度、功耗、以及电池允许的最大均衡电流。假设两节电池容量是2000mAh初始电压差是100mV我们希望在一个完整的充电周期内把电压差拉到20mV以内。粗略估算一下电压差80mV电池的微分容量在3.7V附近大约是0.8到1.2F法拉这个值跟电池化学体系和具体型号有关。用80mV乘以1F得到80mC的电荷量如果均衡电流是40mA需要2秒就能转移完。但实际均衡不是这么简单因为电池电压在均衡过程中会动态变化而且均衡只在充电末期或者静置时进行所以实际均衡时间可能是几十分钟到几个小时。热设计方面两路均衡同时开启时均衡电阻总功耗约0.35W按4.2V算。如果PCB是FR4材质铜厚1oz均衡电阻周围铺铜面积建议不小于100mm²通过过孔连接到内层地平面散热。实测下来0805封装的100Ω电阻在0.35W功耗下表面温度会比环境温度高40到50度。如果环境温度是40度电阻表面就到80到90度了虽然没超过额定值但长期可靠性会打折扣。所以如果空间允许用两颗200Ω电阻并联功耗分摊温升会好很多。2.4 电压采样精度与校准MP2642GR-Z 的电压ADC精度是±0.5%左右对于均衡判断来说足够了。但要注意芯片的电压测量是相对于每节电池的负端而电池串联时第二节电池的负端是第一节的正端这个节点上会有均衡电流流过产生压降。如果均衡电阻和采样走线共用一段路径采样值就会偏。正确的做法是采样走线从电池正负极直接引出单独走一对差分线到芯片引脚不要和均衡电流路径共用。在PCB布局时先布采样线再布均衡线两者保持一定距离避免耦合。如果对精度要求更高可以在软件里做两点校准。用高精度万用表测出两节电池的实际电压和芯片读数对比算出增益误差和偏移误差在MCU里做线性补偿。校准点选在3.0V和4.2V附近覆盖工作范围。校准之后电压测量误差可以压到±10mV以内均衡判断会更准。3. 均衡策略与软件实现3.1 均衡触发条件与阈值设定均衡不是随时都在做的得有明确的触发条件。最常见的策略是只在充电末期或者静置阶段开启均衡。充电时当任意一节电池电压超过均衡阈值比如4.0V并且两节电池压差超过死区比如30mV就开启电压高的那一路均衡。放电时一般不均衡因为放电时电压下降快均衡意义不大而且可能加剧不均衡。阈值设定需要结合电池类型。磷酸铁锂的充电截止电压是3.65V均衡阈值可以设在3.45V左右。三元锂的充电截止电压是4.2V均衡阈值设在4.0V比较合适。死区电压不能太小否则电压采样噪声会导致均衡频繁开关反而加速电阻老化。30mV到50mV是比较稳妥的范围。还有一个细节均衡开启后电压高的那节电池电压会下降压差缩小。当压差小于死区时关闭均衡。但关闭之后由于电池弛豫效应电压又会回升可能再次触发均衡。为了避免这种振荡可以加一个滞回开启阈值是30mV关闭阈值是10mV。这样压差降到10mV以下才关关了之后即使回升到20mV也不会立刻再开。3.2 状态机设计与代码框架软件用一个简单的状态机来管理均衡过程。状态包括IDLE空闲、MEASURE测量、EVALUATE判断、BALANCE均衡、FAULT故障。上电后进入IDLE定时器每500ms触发一次MEASURE读取两节电池电压。然后进入EVALUATE判断是否满足均衡条件。如果满足进入BALANCE开启对应的均衡开关并设置一个最长均衡时间比如30分钟。在BALANCE状态下每5秒重新测量一次电压如果压差降到关闭阈值以下或者最长均衡时间到就回到IDLE。如果测量过程中发现电压超过过压保护阈值或者低于欠压阈值直接跳到FAULT关闭所有均衡开关点亮故障指示灯。代码框架用C语言写基于PIC18F85J10的XC8编译器。I2C读写MP2642GR-Z的寄存器关键寄存器包括电压数据寄存器每节电池一个16位寄存器、均衡控制寄存器、状态寄存器。读取电压时先发寄存器地址然后连续读两个字节高字节在前。注意MP2642GR-Z的I2C地址是7位的具体值看数据手册一般是0x0B或者0x0C取决于ADDR引脚的接法。// 伪代码示例读取两节电池电压 uint16_t read_cell_voltage(uint8_t cell) { uint8_t buf[2]; i2c_start(); i2c_write(MP2642_ADDR 1); // 写地址 i2c_write(VOLTAGE_REG_BASE cell * 2); i2c_restart(); i2c_write((MP2642_ADDR 1) | 1); // 读地址 buf[0] i2c_read_ack(); buf[1] i2c_read_nack(); i2c_stop(); return (buf[0] 8) | buf[1]; }3.3 均衡占空比控制与软启动直接让均衡开关一直开着电流是连续的对电池和电阻的冲击比较小。但如果想进一步降低平均功耗可以用PWM控制均衡开关比如50%占空比均衡电流减半功耗也减半。不过PWM频率不能太低否则电池电压会跟着波动影响采样。建议PWM频率设在1kHz以上占空比从50%开始根据压差大小动态调整。压差大时占空比高压差小时占空比低。软启动也很有必要。均衡开关突然导通电池电压会有一个瞬间的跌落因为电池有内阻和引线电感。这个跌落可能触发欠压保护导致系统误动作。解决办法是在开启均衡之前先把PWM占空比从0慢慢加到目标值比如用100ms的时间从0%线性加到50%。这样电压跌落会平缓很多。3.4 与上位机的通信协议设计如果备用电源系统需要上报电池状态可以用UART和上位机通信。协议不用太复杂自定义一个简单的帧格式就行帧头0xAA 0x55、命令字、数据长度、数据载荷、校验和。命令字包括上报电压0x01、上报均衡状态0x02、设置均衡阈值0x03、查询系统状态0x04。数据载荷用大端格式校验和用累加和取低8位。上位机可以是一个简单的串口助手也可以是嵌入式Linux上的应用程序。如果只是调试用串口助手就够了。如果要集成到产品里建议用Modbus RTU协议通用性好很多组态软件都支持。Modbus的寄存器映射可以这样定保持寄存器0x0000存第一节电池电压单位mV0x0001存第二节电池电压0x0002存均衡状态bit0表示第一节均衡开启bit1表示第二节均衡开启0x0003存故障码。4. 实操调试与问题排查4.1 上电调试步骤与验证方法第一次上电不要直接接电池先用直流电源模拟两节电池。电源1设3.7V电源2设3.7V分别接到MP2642GR-Z的电池输入引脚。注意电源的地要共地而且电源的负端要接到电池组的最负端。上电后先测MP2642GR-Z的VCC引脚电压应该是3.3V或者5V看具体供电设计。然后测I2C总线的空闲电平应该是高电平。如果I2C被拉低说明有器件把总线拉死了检查上拉电阻和器件地址。用示波器抓I2C波形确认MCU能正常读写MP2642GR-Z。如果读出来的电压值全是0或者全是0xFFFF先检查I2C地址对不对再检查寄存器地址对不对。MP2642GR-Z的电压寄存器地址在数据手册里有详细说明不同版本的芯片可能不一样一定要以手头的数据手册为准。电压读数正常之后把电源1调到4.1V电源2保持3.7V模拟压差400mV。观察MCU是否触发均衡用示波器测均衡电阻两端的电压波形应该能看到PWM信号。如果没有PWM检查均衡控制寄存器的配置位确认均衡功能已经使能。4.2 常见问题速查表现象可能原因排查方法解决措施I2C通信失败上拉电阻缺失或阻值过大测总线空闲电平抓波形看上升沿加4.7kΩ上拉缩短走线电压读数偏差大采样走线与均衡线共用对比万用表实测值和芯片读数重新布线采样线单独走均衡不触发阈值设置过高或死区过大检查代码中的阈值参数降低阈值减小死区均衡频繁开关死区太小噪声干扰观察均衡状态切换频率增大死区加软件滤波均衡电阻过热电阻功率余量不足测电阻表面温度换更大封装或并联电阻系统复位均衡瞬间电压跌落触发欠压抓复位时的电池电压波形加软启动增大欠压滤波电容4.3 实测经验与避坑技巧第一个坑MP2642GR-Z的均衡开关有最小导通时间限制。如果PWM占空比设得太低比如1%开关可能还没完全导通就关了均衡效果很差。实测下来占空比不要低于10%否则不如直接关掉。第二个坑电池引线电感会导致电压尖峰。均衡开关关断瞬间引线电感会产生反向电动势叠加在电池电压上可能超过芯片的绝对最大额定值。解决办法是在电池输入引脚加TVS管或者RC吸收电路。TVS管的钳位电压要选比电池最高电压高一点比如6V的TVS不能选太低否则正常充电时就会漏电。第三个坑LCD刷新和I2C通信会互相干扰。PIC18F85J10的LCD驱动和I2C共用一些端口资源如果LCD刷新频率太高可能影响I2C时序。建议LCD刷新率设在60Hz左右I2C通信放在LCD刷新的间隙里做。如果实在冲突可以把I2C速率降到100kHz牺牲一点速度换稳定性。第四个坑均衡电阻的温漂会影响均衡电流。普通厚膜电阻的温度系数是100ppm/°C温度升高50度阻值变化0.5%均衡电流也跟着变。如果对均衡精度要求高可以用合金电阻或者低温漂电阻但成本会上去。对于备用电源来说0.5%的电流变化完全可以接受不用花这个钱。4.4 长期运行可靠性验证产品做出来之后不能只测几个小时就出货。均衡电路的长期可靠性需要专门验证。我的做法是做一组加速老化测试把两节电池的初始压差设成200mV然后让系统连续运行72小时每隔1小时记录一次电压和均衡状态。正常情况下压差应该在前几个小时快速缩小然后进入缓慢收敛阶段最终稳定在10mV以内。如果压差缩到一定程度就不动了说明均衡电流不够或者电池本身的自放电率差异太大需要换电池。温度循环测试也很重要。把整个电池包放进温箱从-20度到60度循环每个温度点保持2小时循环5次。观察均衡功能是否正常电压采样是否漂移。低温下电池内阻增大均衡时电压跌落会更明显如果软启动没做好很容易触发欠压保护。高温下均衡电阻温升更高要确认电阻和PCB没有变色或者变形。最后再分享一个小技巧在均衡电阻旁边放一颗NTC用来监测电阻温度。如果电阻温度超过设定阈值比如100度MCU主动关闭均衡等温度降下来再开。这个保护逻辑用ADC读NTC电压就能实现不需要额外芯片。虽然增加了软件复杂度但对于无人值守的备用电源系统来说这个保护很有必要。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →