资讯详情

资讯详情

两串电池也要均衡:用MP2642GR-Z和PIC18F4455实现

1. 两个串联电池的“压差债”为什么小系统也得做均衡1.1 容量、内阻与自放电不一致是常态不是故障上个月我在调试一套24V备用电源的电池管理板两个12V电池串联实际用了一年后静置压差从几十毫伏涨到了将近200mV。带载半小时后低压侧那颗先到截止电压整组容量掉了一大截。换新电池不是长久之计我干脆把手头的PIC18F4455和MP2642GR-Z组合起来做了一套针对两个串联电池单元的均衡方案。这套东西用在储能和备用电源系统里原理不算复杂但调试过程中踩了不少坑值得拿出来说一说。先解释一下为什么两个电池串联也会有均衡需求。两串电池放电时流过每一颗电池的电流完全相同但每颗电池的容量、内阻、自放电率不可能一致。容量小的那颗在同样的电流下会更快消耗“可用电量”端电压下降更快内阻大的那颗在负载电流下极化压降更大放电末端电压更容易跌穿自放电率高的电池即使静置也在悄悄丢电。这些差异叠加在一起每次循环都会在电池之间制造出新的“压差”不是电池坏了是“不一致”本身就是电池的常态。用数字算一笔账更直观。假设两颗电池的可用容量差1%对100Ah的电芯来说就是1Ah的差异。系统以10A电流放电时容量小的电池会比容量大的早约6分钟到达截止电压即便负载降到5A也只有约12分钟。看起来时间不长但如果长期不纠正每一次循环都在加重小电池的负担它会老化得更快容量差继续扩大最终变成压差越来越大的死循环。所以均衡不是“大电池组专属”两串电池同样需要。1.2 储能和备用电源的特殊工况浮充与长期待机最伤电芯储能和备用电源的工作节奏跟动力电池完全不同。备用电源多数时间挂在浮充线上充电器给整组电池一个恒定总电压两颗电池各自分到多少电压完全取决于它们的端电压特性。容量偏低或自放电偏大的那一颗浮充时端电压会偏高长期顶在高电压下会加速正极腐蚀和电解液损耗另一颗又长期处于相对欠压状态内部化学反应慢慢“饿着”。这种慢性损伤平时看不出来等市电掉电、电池需要立刻顶上去带载时短板效应会瞬间放大。光伏储能场景又是另一种情况。日照好就充一会儿阴雨天就闲置电池经常在40%—70%SOC之间小幅徘徊。这个区间里磷酸铁锂和铅酸的电压曲线都非常平缓容量差异不太容易从端电压上看出来但差异一直存在。我在测试这套均衡系统时专门模拟过“市电正常时浮充3天然后突然断电带载10分钟”的工况没有均衡的对照组在第三轮就出现了近120mV的压差带载末期低压侧电压已经跌破放电截止线。做了均衡之后同样的工况跑了一个多月压差始终维持在20mV以内。这个结果让我明确了观点不管电池包是两串还是二十串只要工作在储能和备用场景均衡都应当是一个长期服役策略而不是一次性维修动作。2. MP2642GR-Z与PIC18F4455分工均衡执行器和系统大脑各管什么2.1 主动均衡、被动均衡和“折中方案”的选型对比先交代我为什么盯上MP2642GR-Z这颗料。常规的电池均衡做法有两条路被动均衡是在电压偏高的电池上并联放电电阻把多出来的能量直接烧掉电路极其简单但均衡电流小、发热严重适合对效率不敏感的小系统主动均衡则是用电感、电容或反激变压器把高压电池的能量搬运到低压电池效率高但控制复杂一个双向DC-DC就要占不少板面积。MP2642GR-Z在我手头的这套样片里是一颗带I2C接口的电源管理芯片。它的工作逻辑是由单片机通过I2C下发均衡指令芯片负责内部功率级的开关控制和电流限制外部配合少量电感电容就能在两串电池之间做能量转移。相比纯被动电阻均衡它多了完整的可编程控制能力相比自建双向DC-DC又省掉了一大半模拟设计工作。我把它叫“折中方案”因为它在BOM成本和均衡效率之间找到了一个工程上可接受的位置。方案均衡原理电流能力发热/效率控制复杂度成本被动电阻均衡高压电池并联电阻放电0.1—1A发热大效率低最低比较器即可低电感/变压器主动均衡能量搬运至低压电池1—5A效率高高需要PWM与闭环高MP2642GR-Z方案芯片内部功率级转移能量0.3—0.5A实测可调发热可控效率中上中I2C控制中需要说明不同批次、不同封装后缀的料在寄存器定义、电流范围和保护功能上可能有差异我下面讲的是基于手头这套样片和数据手册的通用设计流程。实际做项目时第一件事仍然是翻官方数据手册确认I2C地址、均衡电流量程和推荐外围电路别拿网上的Demo图直接开板。2.2 MP2642GR-Z在电路里承担的任务这套系统里MP2642GR-Z不负责“思考”负责“干活”。它的核心任务有三个检测电池电压、执行均衡电流控制、把状态回传给单片机。电压检测这块芯片通过内部采样通道拿到两串电池各自的电压再通过I2C把结果写到寄存器里。PIC18F4455不需要自己去直接采样两颗串联电池的电压这在共模处理和地线设计上能省很多事。均衡执行则是把高压电池的能量用小电流释放到低压电池内部功率开关按照单片机设定的电流目标工作外部接一个储能电感构成典型的升降压拓扑。我实际调试时设定的均衡电流在0.3A到0.5A之间对两串电池来说温升完全可控。这里有一个经验芯片只能做到“按指令执行”它并不理解系统的运行阶段。如果单片机在电池带载状态下下发均衡指令芯片照样会跑但这个时候端电压里混着极化分量均衡工作等于在和负载打架。所以MP2642GR-Z是很好的执行器但策略判断必须交给外面的MCU。2.3 PIC18F4455承担的采样与控制职责选PIC18F4455纯粹是因为这板子之前就在用它做系统管理和USB调试口属于复用而不是专门选型。它的工作有五块读取MP2642GR-Z上报的电压和状态、执行均衡状态机、控制外部保护继电器和散热风扇、通过UART/USB和上位机通信、保存均衡历史参数。PIC18F4455的ADC是10位如果直接拿来采电池分压网络2.5V参考下分辨率只有约2.4mV勉强够用。所以我让它通过I2C读MP2642GR-Z内部的电压寄存器而不是自己直接测电池电压。这样既绕开了模拟采样误差也让单片机的资源得到合理利用。在控制层面单片机不参与功率回路的实时调整只负责“什么时候开启均衡、开启多大电流、什么时候停止”。我把这套逻辑写成状态机后单片机压力很小连看门狗喂狗都带了时间富余。这也是我对类似方案的一个建议让电源芯片处理高频模拟细节让单片机只做低频策略决策两边都轻松出问题也好定位。3. 硬件搭建的关键细节采样精度和均衡电流路径3.1 两串电池的电压采样电路怎么做硬件上最容易出错的地方不是均衡功率级而是电压采样。两串电池的中间点通常是系统地的参考电位电池1的负极在系统地上电池1的正极同时是电池2的负极电压大约12V电池2的正极是24V。如果单片机直接拿ADC脚去测24V正极显然超过允许输入范围必须做分压。我用的方式是精密分压电阻加电压跟随器。分压比的选择要考虑两边分压电阻不能太小否则静态功耗太大也不能太大否则ADC输入源阻抗过高读数会带偏置误差。以前图省事用过两个10kΩ分压电池24V时静态电流约1.2mA常年浮充状态下一直在耗电对系统效率不友好。后来改成1MΩ和100kΩ的比例再串一个电压跟随器进ADC源阻抗问题解决静态电流也降下来了。这里有一条很重要的经验分压电阻一定要用低温漂和低初始精度的电阻尤其是两颗电池共用的一组采样网络。两个分压电阻的温漂方向如果不一致温度一变电压差读数就跟着偏均衡逻辑很容易误判。我在这个问题上栽过一次后来统一换成0.1%精度、25ppm温漂的金属膜电阻静置压差读数才稳定下来。3.2 均衡电流路径与功率落地均衡电流虽然只有几百毫安但PCB走线不注意照样出问题。我把功率部分单独划了一个区域MP2642GR-Z的开关节点、储能电感、续流二极管都放在远离采样放大器的位置均衡电流从电池正极到芯片再经电感回到电池负极整个回路尽量短而粗。均衡大电流的回路和采样线在PCB上严禁平行走线必须单点汇接到电池组端否则负载电流在地线上形成的压降会被采样参考拾取造成读数跳变。还有一个容易被忽略的细节两串电池连接处的端子长期氧化后接触电阻可能到几十毫欧。均衡电流流过这个连接点时会产生一个压降如果采样参考点恰好取在这个连接点的前端或后端电压读数会偏向一侧误差范围可能超过10mV。解决方法是把采样线直接从电池极柱引出不要从接线鼻子后面取也就是所谓的四线制接线。我后来在电池组上专门做了采样端子压差读数稳定了很多。4. 固件状态机与控制逻辑4.1 均衡启动判据不能只看差值固件部分是我花时间最多的地方。最原始的版本非常简单电压差大于阈值就开均衡。结果实测时发现充电刚结束时电压差会短暂偏大均衡一开电压差反而抖动有时候还越均越乱。后来我把启动判据改成一组条件同时满足才允许动作。我最终实现的启动条件是这样的系统不处于大电流充电或放电状态电池电压在安全窗口内我设定为每串10.5V到14.6V环境温度在5摄氏度到45摄氏度之间静置时间超过30秒压差大于10mV并持续10秒。把这些条件写成代码后误启动明显减少。另一个关键点是均衡必须在电池处于静置或者极小载荷时进行不能在带载和充电过程里均衡。原因很简单带载时测得的端电压包含极化分量反映的是“有人拉着它”的状态不是电池真实的电量差。备用电源场景里电池多数时间闲着天然有执行窗口这也是为什么这套方案在储能和备用系统里特别好用。4.2 阈值、迟滞与时间保护阈值设定直接决定均衡会不会反复启停。我给的启动阈值为10mV停止阈值设为3mV中间带一个迟滞带。压差超过10mV启动均衡等它回落到3mV以下才停止。如果只设一个5mV的阈值系统会在5mV附近反复启动和停止每几秒开关一次功率管对器件寿命和电磁干扰都不好。均衡时间也要做上限保护。我的固件里有一个累计均衡时长变量每次均衡最多连续运行4小时累计时间超过24小时后强制置为“维护提醒”状态必须通过上位机人工确认才能继续。这个设计不是为了改进电压模型而是防止“均衡器失效时默默一直运行”。有一次MP2642GR-Z的I2C通信异常导致芯片内的参数没有写进去单片机以为它在均衡实际没有动作就是靠时间上限发现了通信异常重启通信链路后系统才恢复正常。固件状态机的核心结构大致是这样的enum { IDLE, MEASURE, BALANCING, PAUSE, FAULT } bal_state; switch (bal_state) { case IDLE: if (all_conditions_ok()) bal_state MEASURE; break; case MEASURE: if (delta_v START_THRESHOLD) { set_balance_current(bal_current); bal_state BALANCING; } else { bal_state IDLE; } break; case BALANCING: if (delta_v STOP_THRESHOLD || balance_timeout()) { set_balance_current(0); bal_state IDLE; } break; case FAULT: set_balance_current(0); report_fault(); bal_state IDLE; // 通过上位机确认后恢复 break; }4.3 故障保护与通信报文故障保护分两层。芯片层级MP2642GR-Z自身有过流、欠压和过温保护状态寄存器会给故障码系统层级PIC18F4455在发现均衡超时、电压读数异常或温度超限时会切断均衡通路并点亮故障灯。这里我做了一个额外的安全措施均衡指令必须每隔1秒重发一次如果芯片超过3秒没有收到有效指令自动停止均衡。这个方案类似安全看门狗可以有效防止单片机死机后功率级还在傻乎乎地工作。通信报文我用了简单固定的帧格式一个字节命令代码、一个字节参数、两个字节CRC。别小看这个结构后期调参和故障定位都靠它。我习惯把均衡阈值、均衡电流、时间上限都做成可配置参数通过串口写入EEPROM。批量生产时同一份固件对应不同电池组只需要下载不同的参数表不用为每个项目单独改代码。5. 实测遇到的三个坑及排查方法5.1 压差读数漂移导致的误均衡第一个坑是均衡逻辑“没人叫它动它自己动了”。现象是电池静置了一晚上万用表量出来压差只有0.006V系统却判定为0.035V然后启动了均衡。排查分了三步走先用精密万用表分别测两颗电池电压排除真实电池偏差再单独测分压网络的输出发现跟随器输出有约0.02V的偏移最后检查PCB发现分压电阻附近有一颗大功率电阻发热把分压电阻烤热后阻值发生微变导致增益漂移。解决办法是把分压网络移出热源区用热风枪加热附近区域做温度循环实验确认读数不再跟着温度走同时在ADC采样端做了32次均值滑动滤波。改完之后静置压差的离散度从±20mV降到了±3mV左右。这个案例让我养成了一个习惯所有和“压差判断”有关的模拟前端都先做温漂和热源隔离检查再做软件滤波。5.2 均衡电流借道采样地线电压瞬间跳变第二个坑更隐蔽。均衡电流一开启电池2的电压读数立刻跳低0.2V均衡结束又弹回来。从现象看像是均衡动作把电池电压拉低了实际不是电池电压变化而是均衡电流回流的路径和采样参考地共享了同一条窄走线。电流在地线上形成压降直接把参考地电位抬高采样值自然全乱。处理方法是重新规划地线信号地和功率地在钽电容汇合处单点连接均衡回流的电源地单独走线采样线改成双绞线直接压接到电池端子。改版之后均衡开启时电压读数波动小于5mV。这个坑也提醒我在地线设计上永远不要抱侥幸心理尤其是有功率开关的板子一个小电流均衡就能把采样搞崩换成更大电流的主动均衡只会更明显。5.3 I2C通信偶发卡死与恢复策略第三个坑是I2C总线偶发卡住。系统连续运行两三天后偶尔出现PIC18F4455读MP2642GR-Z超时SCL被拉低。最初的恢复手段是整机断电重启不太优雅后来分析应该是芯片在某种异常状态下把总线上拉死了SCL卡在低电平。我在固件里加了总线恢复流程检测到通信超时后先把SCL线拉低再手动产生最多9个时钟脉冲同时监视数据线状态总线释放后再重新初始化外设如果连续3次恢复失败就通过使能引脚复位MP2642GR-Z。上拉电阻也做了调整从10kΩ换成4.7kΩ总线电容控制在合理范围。这套机制加上之后两个月内没有再现过需要人工断电的场景。6. 方案的适用边界和后续演进6.1 为什么这套组合适合两串不适合大电芯组这套方案的边界非常清晰适合两串电池适合备用电源和中小型储能但不要随便往18串、24串上套。原因在于两颗电池的“中间点”天然就是整个系统的地参考这给了MP2642GR-Z一个理想的共地条件均衡器可以非常简单地跨接在两颗电池之间。一旦电池节数变多芯片孤岛、地平面分割、均衡路径隔离、多片芯片级联同步这些问题都会冒出来成本和风险成倍上升。真遇到大电池组老老实实走隔离通信加专用模拟前端芯片的架构更划算。MP2642GR-Z加PIC18F4455的组合优势恰恰在于“小、简单、可控”。我在设计之初就用这个边界约束了需求范围没有试图做一个通用均衡板事实证明这是对的。6.2 还能往哪些方向扩展PIC18F4455自带USB这个端口被我做成了调试和日志口用一个简单协议把每轮均衡的起始电压、结束电压、均衡时长、温度记录都导出来。后期想加蓝牙或Wi-Fi模块也很容易芯片的USART是现成的挂一个透传模块就能把数据送到手机或云端。另外这套均衡策略还可以引入“容量学习”功能。记录每次完整充放电循环中两颗电池各自的累计充放电量用一段时间的数据估算相对容量差再反过来修正均衡目标而不是死盯着瞬时电压差。相比只看压差这种方式能更准确地处理老化程度不同的电池。我目前已经在下一版固件里加了这个功能的原型实测效果比固定阈值均衡稳定一些。最后再分享一个个人习惯我把均衡阈值设计成可配置参数后批量出货前都会先用一台样机跑一轮48小时浮充加带载测试把阈值和电流调到实际电池组的最优值再固化成量产配置。这个方法不复杂但对“均衡到底有没有用”这类质疑能给出最直观的回应。
觉得有用,分享给同行:

为您的企业打造数字门面

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

立即咨询 →