资讯动态

基于MP2642GR-Z与PIC18F55K42的2串电池主动均衡方案设计

发布时间:2026/10/17 2:06:33 来源:尧图企业网站定制
1. 项目缘起与核心需求拆解储能和备用电源系统里串联电池组的均衡问题是每个做BMS的工程师都绕不开的一道坎。我接触过不少中小型储能项目从户用储能柜到通信基站备电再到一些便携式电源设备只要电池是串联使用的几乎都会遇到单体电压不一致的问题。这次要聊的就是针对两个串联电池单元做均衡的一个具体方案核心器件选用了MP2642GR-Z这颗双向升降压充电管理芯片配合PIC18F55K42这颗带丰富外设的8位单片机来做控制。先说清楚这个项目要解决什么问题。两个串联的电池单元比如两节磷酸铁锂或者两节三元锂在出厂时容量和内阻就有微小差异使用过程中由于温度分布、自放电率不同差异会逐渐拉大。串联放电时容量小的那节先到截止电压整组就得停止放电容量大的那节还有余量放不出来串联充电时容量小的那节先到充满电压整组停止充电容量大的那节又吃不饱。长此以往木桶效应越来越明显整组可用容量快速衰减。均衡的目的就是把电压高的那节多余的能量搬到电压低的那节去让两节尽量保持一致。为什么选MP2642GR-Z这颗芯片本质上是一个同步双向升降压变换器支持Buck、Boost以及Buck-Boost模式输入输出范围宽特别适合单节锂电到多节锂电之间的能量转移。它的开关频率可编程峰值效率在典型工况下能到95%以上静态电流也控制得不错对于备用电源这种长期在线但负载很轻的场景很友好。而PIC18F55K42这颗MCU带12位ADC、硬件CWG互补波形发生器、比较器、DAC还有丰富的定时器资源用来做电压采样、PWM生成、保护逻辑绰绰有余而且价格亲民供货稳定适合成本敏感的储能产品。这个方案适合谁参考如果你是做BMS硬件或者嵌入式固件的工程师手头正好有2串电池的均衡需求又不想用复杂的专用均衡芯片或者隔离电源方案那这套“MCU双向DCDC”的主动均衡架构就很值得一看。它不依赖变压器能量直接在两个相邻电池之间搬运效率高、发热小、静态功耗低而且通过固件可以灵活调整均衡阈值和策略。下面我会从整体设计思路、核心器件选型、硬件细节、固件实现、实测问题排查几个维度把整个项目拆开来讲。2. 整体方案设计与关键选型考量2.1 为什么选主动均衡而不是被动均衡被动均衡就是给每节电池并一个电阻电压高的那节通过电阻放电把多余能量以热量形式消耗掉。优点是电路简单、成本极低、可靠性高。但缺点也很明显均衡电流通常只有几十毫安均衡速度慢能量全部变成热对于备用电源这种密闭机箱热积累是个隐患而且只在充电末期才起作用放电和静置时的电压差异它管不了。主动均衡则是把能量从高电压单元搬到低电压单元效率高、发热小、均衡电流可以做得更大。对于两串电池主动均衡的实现方式有好几种飞渡电容、电感储能、变压器隔离、双向DCDC。飞渡电容适合小电流均衡速度受电容容量和开关频率限制电感方案需要复杂的时序控制EMI不好处理变压器隔离适合多串但体积大、成本高。双向DCDC方案尤其是用MP2642GR-Z这种集成度高的芯片外围元件少控制逻辑清晰均衡电流可以做到安培级特别适合两串这种相邻单元之间的能量转移。我选主动均衡还有一个实际原因这个项目对静态功耗要求苛刻。备用电源系统大部分时间处于待机状态均衡电路如果一直有漏电流时间长了会把电池拖垮。MP2642GR-Z有使能引脚可以在不需要均衡时完全关断静态电流降到微安级这一点被动均衡做不到——被动均衡的电阻网络即使不主动均衡也有持续的漏电流路径。2.2 MP2642GR-Z的核心特性与工作模式MP2642GR-Z是一颗双向同步升降压控制器注意它是控制器不是带集成MOS的转换器所以外部需要配四个MOS管组成H桥。它的输入电压范围宽具体参数我建议以最新数据手册为准但典型应用里支持从单节锂电到多节锂电的电压范围。它支持三种工作模式Buck、Boost、Buck-Boost模式切换由内部逻辑根据输入输出电压关系自动判断也可以通过外部引脚强制。在这个均衡应用里我们把两节电池的中点作为公共参考高电压那节的正极和低电压那节的负极分别接到变换器的两端。当需要把能量从高电压节搬到低电压节时变换器工作在Buck模式把高电压节的能量降压后充入低电压节反过来如果低电压节电压反超变换器切到Boost模式把低电压节能量升压后送回高电压节。因为两节电池电压差通常不大变换器大部分时间工作在Buck-Boost过渡区这时候四个MOS管的时序控制很关键死区时间设置不好会导致直通或者效率骤降。MP2642GR-Z的开关频率可以通过外部电阻编程我一般设在300kHz到500kHz之间。频率太低电感和电容体积大频率太高开关损耗增加EMI也难处理。对于均衡电流2A左右的应用400kHz是个比较平衡的选择。芯片还带电流检测放大器可以实时监测均衡电流配合MCU做恒流或者限流控制。2.3 PIC18F55K42在系统中的角色分配PIC18F55K42是一颗8位MCU主频最高64MHz带12位ADC、5位DAC、比较器、CWG、多个16位定时器、UART、SPI、I2C。在这个项目里它要干这几件事第一电压采样。用ADC轮流采集两节电池的电压以及中点电压。采样精度直接决定均衡阈值的准确性所以ADC参考电压要稳我一般用外部基准或者MCU内部的FVR固定电压参考。采样时要注意分压电阻的精度和温漂1%精度的电阻是底线条件允许用0.1%的。第二均衡策略控制。根据两节电压差和当前工作状态充电、放电、静置决定是否启动均衡、均衡方向、均衡电流大小。比如充电时电压高的那节先到均衡阈值就启动均衡把能量搬到低电压节放电时如果压差超过阈值也可以启动均衡但要注意不要影响放电截止判断。第三PWM生成与变换器控制。用CWG或者PWM模块生成互补的PWM信号驱动MP2642GR-Z的四个MOS管。死区时间要仔细调我一般设在50ns到100ns之间具体看MOS管的开关速度和驱动电路。第四保护逻辑。过压、欠压、过流、过温保护都要在固件里实现。比如均衡电流超过设定值立刻关断PWM电池电压低于欠压阈值禁止均衡芯片温度超过85度降额或者停止均衡。第五通信与状态上报。通过UART或者I2C把电池电压、均衡状态、故障信息上报给上位机或者主控板。对于储能系统这个通信接口很重要运维人员要能远程看到每节电池的状态。2.4 关键参数计算与元件选型电感选型是重点。假设均衡电流2A开关频率400kHz两节电池电压差最大1V工作在Buck-Boost模式。电感纹波电流一般取额定电流的30%到40%也就是0.6A到0.8A。根据公式L (Vin × D) / (fsw × ΔI)在Buck-Boost模式下占空比D接近0.5Vin取3.7Vfsw取400kHzΔI取0.7A算出来L大约是6.6μH。实际选型取标准值6.8μH或者10μH饱和电流要大于均衡电流加上纹波峰值至少3A以上。电感的直流电阻要小DCR大的话效率会明显下降我一般选DCR小于20mΩ的。输入输出电容也不能马虎。变换器输入端和输出端都需要低ESR的陶瓷电容容量根据纹波电压要求算。假设纹波电压要求50mV均衡电流2A开关频率400kHz占空比0.5那么C (I × D) / (fsw × ΔV) (2 × 0.5) / (400k × 0.05) 50μF。实际要留余量用两颗22μF或者47μF的X5R或X7R陶瓷电容并联注意直流偏压效应标称22μF的电容在3.7V偏压下可能只剩一半容量。MOS管选型看导通电阻和栅极电荷。均衡电流2A导通电阻10mΩ的MOS管导通损耗只有40mW可以接受。栅极电荷要小否则驱动损耗大。我一般选Vds 30V、Rds(on)小于15mΩ、Qg小于10nC的N沟道MOS管。四个管子要配对参数尽量一致否则容易偏磁。采样电阻用10mΩ的合金电阻精度1%温漂50ppm/℃。配合MP2642GR-Z内部的电流放大器增益一般是10倍或者20倍具体看数据手册。采样信号送到MCU的ADC做电流环控制。3. 硬件设计与实操要点3.1 原理图设计关键节点原理图设计有几个地方容易出错我一个个说。第一个是MP2642GR-Z的供电。这颗芯片的VIN引脚要接高电压那节电池的正极但芯片内部逻辑供电可能来自VIN或者单独的VCC引脚。如果VIN电压范围覆盖两节电池的总电压那直接接就行如果不够需要从两节电池总正极取电通过LDO降到芯片的VCC范围。具体接法一定要看数据手册的典型应用图不同版本可能有差异。第二个是自举电容。MP2642GR-Z驱动高侧MOS管需要自举电容一般0.1μF到1μF耐压要大于VIN。自举二极管要用快恢复的反向恢复时间短的否则高侧驱动会出问题。自举电容的走线要短靠近芯片的BST和SW引脚。第三个是电流采样。采样电阻放在低侧还是高侧取决于芯片的电流放大器输入范围。MP2642GR-Z的电流检测通常是差分输入采样电阻放在电感回路里检测电感电流。采样走线要差分走线尽量短远离功率回路否则噪声会干扰采样精度。第四个是MOS管驱动。四个MOS管的栅极驱动电阻要选好太小了开关速度快但EMI大太大了开关损耗大。我一般用4.7Ω到10Ω的栅极电阻具体看MOS管的Qg和驱动能力。死区时间由MCU的PWM模块插入硬件上不需要额外的死区电路。3.2 PCB布局与EMI抑制PCB布局对变换器的效率和EMI影响巨大。我踩过的坑里至少一半跟布局有关。功率回路要最小化。输入电容、高侧MOS管、低侧MOS管、采样电阻、电感这个回路的面积要尽可能小。电流换流时回路寄生电感会产生电压尖峰尖峰高了会击穿MOS管也会辐射EMI。我一般把输入电容放在高侧MOS管的漏极和低侧MOS管的源极之间距离不超过5mm。电感的摆放有讲究。电感是辐射源不要放在敏感信号线旁边比如ADC采样线、晶振线。电感下方不要走信号线如果必须走用地平面隔开。电感的磁芯方向也要注意避免磁场耦合到采样回路。采样线的处理。电池电压采样线从电池端子直接拉到MCU的ADC引脚中间加分压电阻和滤波电容。滤波电容用0.1μF放在ADC引脚附近。采样线要远离功率回路如果实在避不开用地线包围。分压电阻的接地点要单点接地回到MCU的模拟地不要跟功率地混在一起。地平面分割。功率地和模拟地要分开最后在芯片的GND引脚处单点连接。MP2642GR-Z的GND引脚是功率地MCU的VSS是模拟地两者之间用0Ω电阻或者磁珠连接。如果地平面处理不好ADC采样值会跳均衡阈值判断就会出错。散热处理。MP2642GR-Z和四个MOS管都有损耗虽然效率高但2A均衡电流下总损耗也有几百毫瓦。芯片底部的散热焊盘要接到地平面地平面铺铜面积要大必要时加过孔到背面铜层。MOS管如果温度高可以加小散热片或者用铜箔散热。3.3 关键元件参数与选型表元件参数要求推荐值备注电感6.8μH饱和电流3ADCR20mΩ6.8μH/3A屏蔽式减少辐射输入电容22μFX7R25V2颗并联注意直流偏压降容输出电容22μFX7R25V2颗并联同上自举电容0.1μF50V0.1μFX7R靠近芯片自举二极管快恢复100mA50V1N4148反向恢复时间短MOS管Vds 30VRds(on)15mΩQg10nC四个配对N沟道采样电阻10mΩ1%50ppm/℃10mΩ合金电阻栅极电阻4.7Ω到10Ω4.7Ω根据EMI调整分压电阻1%精度低温漂100k/100k根据ADC量程选注意以上参数是基于2A均衡电流、400kHz开关频率的典型应用估算的实际项目要根据电池电压范围、均衡电流要求、效率目标做调整。尤其是电感和电容不同厂家的元件特性差异大建议先用仿真工具验证再打样实测。4. 固件架构与均衡策略实现4.1 固件整体框架固件用C语言写基于PIC18F55K42的XC8编译器。整体框架分三层底层驱动、中间件、应用层。底层驱动包括ADC采样、PWM初始化、定时器中断、GPIO控制、UART通信。ADC采样用中断方式定时器触发保证采样周期稳定。PWM用CWG模块生成互补输出死区时间在CWG配置寄存器里设置。定时器用一个16位定时器做系统时基1ms中断一次用于任务调度和超时计数。中间件包括电压计算、电流计算、温度计算、保护逻辑。电压计算把ADC原始值转换成实际电压考虑分压比和参考电压。电流计算把采样电阻电压转换成电流值考虑放大器增益。温度计算用NTC或者芯片内部温度传感器查表或者用公式换算。应用层就是均衡策略。根据电压、电流、温度、工作状态决定均衡的启动、停止、方向、电流大小。均衡策略用状态机实现状态包括待机、充电均衡、放电均衡、静置均衡、故障保护。4.2 电压采样与滤波算法电压采样精度直接影响均衡效果。PIC18F55K42的ADC是12位的参考电压用内部FVR典型值2.048V或者4.096V。假设用4.096V参考12位ADC的分辨率是1mV。两节电池电压通过分压电阻降到ADC量程内分压比1:1的话3.7V电池电压分压后是1.85V在量程内。但分压电阻会引入误差1%精度的电阻导致的分压比误差也是1%对应电压误差37mV这个误差在均衡阈值判断时不能忽略。我的做法是用0.1%精度的分压电阻并且在固件里做校准。校准方法用高精度万用表测实际电池电压同时读ADC值算出一个校准系数存在MCU的EEPROM里。每次上电读取校准系数对ADC值做修正。这样可以把电压采样误差控制在5mV以内。滤波算法用滑动平均加中值滤波。滑动平均窗口取8个点中值滤波取5个点。滑动平均平滑随机噪声中值滤波消除脉冲干扰。采样周期10ms8个点就是80ms的窗口对于电池电压这种慢变量足够了。滤波后的电压值用于均衡判断原始值用于过压欠压快速保护。实操心得ADC采样时如果MCU的电源有噪声采样值会跳。我一般在ADC参考引脚加一个1μF的陶瓷电容靠近引脚。另外采样的时候关掉PWM输出避免开关噪声耦合到ADC。如果均衡不能中断那就等PWM的谷底时刻采样这时候开关噪声最小。4.3 均衡策略状态机设计均衡策略的核心是状态机。我设计的状态机有五个状态待机状态两节电压差小于均衡启动阈值比如30mV不均衡。MCU定期采样电压如果压差超过阈值根据当前工作状态跳转到充电均衡或者放电均衡。充电均衡状态充电过程中如果压差超过阈值启动均衡。能量从高电压节搬到低电压节。均衡电流设定为恒流比如1A。如果压差降到停止阈值比如10mV停止均衡回到待机。如果充电结束也回到待机。放电均衡状态放电过程中如果压差超过阈值启动均衡。但放电时均衡要谨慎因为均衡本身也消耗能量如果均衡电流太大会加速放电。我一般把放电均衡电流设小一点比如0.5A或者只在压差很大时才启动。如果电池电压接近放电截止电压禁止均衡优先保证放电。静置均衡状态电池既不充电也不放电如果压差超过阈值启动均衡。静置均衡最安全因为不影响充放电判断。均衡电流可以设大一点比如1.5A尽快把压差拉平。故障保护状态任何保护触发比如过流、过温、过压、欠压立刻停止PWM跳转到故障状态。故障排除后需要手动复位或者自动恢复取决于系统要求。状态切换的条件用表格整理如下当前状态切换条件目标状态动作待机压差30mV且充电中充电均衡启动PWM方向高到低待机压差30mV且放电中放电均衡启动PWM方向高到低限流0.5A待机压差30mV且静置静置均衡启动PWM方向高到低限流1.5A充电均衡压差10mV待机停止PWM充电均衡充电结束待机停止PWM放电均衡压差10mV待机停止PWM放电均衡电压欠压阈值待机停止PWM禁止均衡静置均衡压差10mV待机停止PWM任意过流/过温/过压/欠压故障保护停止PWM记录故障4.4 PWM生成与死区时间配置PWM用PIC18F55K42的CWG模块生成。CWG可以生成两路互补输出带可编程死区时间。MP2642GR-Z需要四路PWM驱动四个MOS管所以用两个CWG模块或者一个CWG加两个普通PWM。我一般用两个CWG模块一个控制高侧和低侧MOS管对另一个控制另一对。死区时间配置很关键。死区时间太短上下管直通烧管子死区时间太长体二极管导通损耗大效率下降。我一般从100ns开始调用示波器看SW节点的波形如果看到明显的体二极管导通平台就减小死区如果看到直通尖峰就增大死区。最终死区时间设在50ns到100ns之间。PWM频率和MP2642GR-Z的开关频率一致400kHz。CWG的时钟源用系统时钟分频确保频率准确。占空比根据均衡电流环的输出调整电流环用PI控制器采样电流和设定电流比较误差经过PI运算后调整占空比。注意PWM初始化时先把输出关掉配置好CWG和死区再使能输出。否则上电瞬间可能产生错误的PWM波形导致MOS管直通。另外MP2642GR-Z的使能引脚要单独控制故障时拉低使能比关PWM更可靠。5. 实测调试与常见问题排查5.1 上电调试步骤第一次上电不要直接接电池。先用直流电源模拟两节电池电压设成3.7V和3.6V限流设小一点比如100mA。上电后先测MP2642GR-Z的VCC电压是否正常用示波器看SW节点有没有PWM波形。如果没有波形检查使能引脚、PWM配置、自举电容。然后逐步加大限流观察均衡电流。用电流探头或者采样电阻上的电压算电流。如果电流方向反了说明PWM相位或者MOS管接法有问题调换一下。如果电流上不去检查电感是否饱和、MOS管驱动是否足够、采样电阻是否接对。最后接真实电池。接电池前确保电池电压在均衡电路的工作范围内不要接反。接上后先静置观察看静态电流是否在微安级。如果静态电流大检查使能引脚是否拉低、MOS管是否漏电。5.2 常见问题速查表现象可能原因排查方法解决方法上电无PWM使能引脚未拉高测使能引脚电压拉高使能检查MCU配置上电无PWM自举电容失效测BST引脚电压更换自举电容检查自举二极管均衡电流小电感饱和测电感电流波形换更大饱和电流的电感均衡电流小MOS管驱动不足测栅极电压波形减小栅极电阻检查驱动电路效率低死区时间太长测SW节点波形减小死区时间效率低电感DCR大测电感两端压降换低DCR电感ADC采样跳地平面噪声测ADC参考电压分割地平面加滤波电容ADC采样跳PWM噪声耦合在PWM谷底采样调整采样时刻加RC滤波过流保护误触发采样电阻噪声测采样电阻波形加RC滤波调整保护阈值温度高散热不足测芯片和MOS管温度加散热片铺铜散热均衡方向反PWM相位错测两节电压变化调换PWM输出或者MOS管接法静态电流大使能未关断测电池电流拉低使能检查MOS管漏电5.3 独家避坑经验第一个坑自举电容的耐压。我一开始用16V的自举电容结果上电就炸了。后来发现VIN电压最高到8.4V自举电容上的电压是VIN加上驱动电压可能超过16V。换成50V耐压的电容就没问题了。所以自举电容的耐压要大于VIN最大值加上驱动电压留足余量。第二个坑采样电阻的温漂。我用普通厚膜电阻做采样温度一高阻值变化电流采样就不准了。后来换成合金电阻温漂50ppm/℃问题解决。采样电阻的功率也要够2A电流在10mΩ上产生40mW0603封装够用但如果是5A电流就要用0805或者1206。第三个坑MOS管的体二极管。在Buck-Boost模式下死区时间里体二极管导通产生反向恢复损耗。我一开始用普通MOS管效率只有85%。后来换成快恢复体二极管的MOS管效率提到92%。如果对效率要求高可以选带肖特基并联的MOS管或者调整死区时间减少体二极管导通时间。第四个坑ADC参考电压的噪声。PIC18F55K42的内部FVR噪声比较大采样值跳得厉害。后来改用外部基准芯片比如2.5V的精密基准采样稳定性大幅提升。如果成本敏感可以在FVR引脚加一个1μF电容也能改善。第五个坑均衡阈值的回差。一开始我只设了一个阈值比如压差30mV启动10mV停止。结果在30mV附近来回切换均衡频繁启停。后来加了回差启动阈值30mV停止阈值10mV中间20mV的回差避免了频繁切换。回差大小根据电池特性和均衡电流决定一般20mV到50mV。第六个坑电池电压采样的分压电阻。我用100k100k分压结果ADC输入阻抗不够采样值偏低。PIC18F55K42的ADC输入阻抗有限分压电阻太大会导致采样误差。后来改成10k10k误差就小了。但10k10k的静态电流是3.7V/20k185μA对于备用电源来说有点大。折中方案是用100k100k但在ADC输入加一个电压跟随器用运放缓冲。或者用MCU的内部采样保持电容延长采样时间。5.4 均衡效果实测数据我用两节18650电池做测试一节容量2000mAh一节容量1900mAh初始电压都是3.7V。静置均衡均衡电流1.5A压差从30mV降到10mV用了大约8分钟。均衡过程中高电压节电压从3.715V降到3.705V低电压节从3.685V升到3.695V两节电压趋近。均衡效率实测约91%电感温度40℃MOS管温度45℃芯片温度50℃都在可接受范围。充电均衡测试充电电流1A均衡电流1A压差从40mV降到10mV用了12分钟。充电结束时两节电压差小于5mV。放电均衡测试放电电流2A均衡电流0.5A压差从35mV降到15mV用了20分钟。放电均衡速度慢因为均衡电流小而且放电本身也在拉大压差。所以放电均衡只适合压差很大的情况日常维护还是靠静置均衡和充电均衡。实操心得均衡电流不是越大越好。电流大了发热大效率低而且对电池寿命可能有影响。我一般把均衡电流设在0.5C到1C之间对于2000mAh电池就是1A到2A。静置均衡可以用大一点充电均衡用中等放电均衡用小一点。另外均衡阈值不要设得太小10mV以内其实没必要均衡电池自放电和采样误差都可能超过这个值。6. 方案扩展与个人体会这套方案目前是针对两串电池的如果要扩展到三串或者四串思路可以这样每相邻两节之间放一个MP2642GR-Z均衡电路MCU用多个PWM模块分别控制。比如三串电池需要两个均衡电路一个管第一节和第二节一个管第二节和第三节。MCU轮流控制两个均衡电路或者同时控制取决于均衡策略。四串就需要三个均衡电路。这种分布式均衡的优点是每个均衡电路独立工作互不干扰缺点是元件多成本高PCB面积大。另一种扩展思路是用一颗MP2642GR-Z配合多路开关分时复用。比如四串电池用多路模拟开关切换均衡电路的两端轮流对相邻两节做均衡。这种方案元件少但开关的导通电阻和漏电流会影响均衡精度而且分时复用导致均衡速度慢。适合对成本敏感、均衡速度要求不高的场景。固件方面可以增加SOC估算功能。用电压查表加安时积分估算每节电池的剩余电量。均衡策略从电压均衡升级到SOC均衡效果更好。但SOC估算需要准确的电池模型和电流采样复杂度高。对于两串电池电压均衡已经够用SOC均衡是锦上添花。通信方面可以加CAN或者RS485接入储能系统的BMS主控。把每节电压、均衡状态、故障信息上报主控可以统一调度。对于大型储能系统这个很重要。但要注意通信隔离避免地环路干扰。我个人在实际操作中的体会是主动均衡电路的设计三分靠原理七分靠布局。原理图对了布局不好效率上不去噪声下不来采样不准保护误触发。我建议在打板之前先用仿真工具把功率回路和采样回路仿真一遍看看电压尖峰和噪声水平。打板之后先不接电池用直流电源和电子负载测试把PWM波形、电流波形、温度都测一遍确认没问题再接电池。接电池的时候一定要加保险丝防止意外短路。最后再分享一个小技巧均衡电路的使能控制不要只用MCU的GPIO最好加一个硬件看门狗或者电源监控芯片。MCU死机的时候GPIO可能保持高电平均衡电路一直工作把电池放亏。加一个看门狗MCU定期喂狗死机了看门狗复位MCU同时拉低使能。这个成本不高但可靠性提升明显。对于备用电源这种长期无人值守的场景可靠性比什么都重要。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑