资讯动态

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

发布时间:2026/10/17 1:12:34 来源:尧图企业网站定制
1. 储能电池均衡的工程背景与核心需求1.1 为什么串联电池组必须做均衡做储能和备用电源的兄弟都清楚电池组最怕的不是单个电芯坏掉而是串联之后“木桶效应”被放大。两节标称容量相同的电芯出厂时容量差可能只有2%但经过几十上百次充放电循环之后内阻差异、自放电率差异、温度分布差异会逐渐累积导致其中一节先到上限电压、另一节还没充满。充电时BMS检测到最高那节到4.2V就停止充电另一节可能只有4.0V放电时最低那节先到截止电压整组就停止放电另一节还剩不少电量。长期下来容量利用率越来越低整组寿命被最弱的那节拖死。储能场景和备用电源场景对均衡的需求还不太一样。储能系统通常充放电倍率不高0.2C~0.5C但循环次数要求高可能一天一充放十年下来三千多次循环均衡电路必须长期稳定工作静态功耗要低。备用电源比如通信基站、数据中心UPS、消防应急电源平时长期浮充偶尔才放电一次均衡更多是解决浮充期间的自放电不一致问题对均衡电流的要求没那么高但对可靠性和静态电流要求极其苛刻——你不能让均衡电路把备用电池的电给耗光了。两节串联的电池组是最小规模的串联结构常见于小型储能包、便携式电源、通信设备备用电池、医疗设备后备电源等。两节做均衡方案可以做得比较精简不需要复杂的多节级联架构但核心的电压采集精度、均衡策略、保护逻辑一个都不能少。1.2 被动均衡与主动均衡的取舍被动均衡就是给每节电池并联一个耗能电阻通过电阻放电把电压高的那节拉下来。优点是电路简单、成本低、可靠性高、没有EMI问题。缺点是能量全变成热耗掉了均衡电流一般只有几十到几百毫安均衡时间长。主动均衡是把高电压那节的能量转移到低电压那节或者转移到整组效率高、速度快但电路复杂、成本高、有EMI、可靠性相对低。两节串联的场景下我个人的经验是如果均衡电流需求在200mA以内被动均衡完全够用而且更稳妥。储能和备用电源系统对成本敏感对可靠性要求高被动均衡的简单粗暴反而是优势。MP2642GR-Z这颗芯片就是专门为两节串联电池均衡设计的内部集成了均衡MOSFET和驱动电路外围只需要少量电阻电容配合STM32F401RB做控制和监测整体方案非常干净。1.3 方案核心器件选型理由MP2642GR-Z是一颗电池均衡专用IC支持两节串联电池的被动均衡。它的核心特性包括内置均衡开关管导通电阻低减少外部元件支持外部电阻设定均衡电流具备过温保护防止均衡电阻过热静态电流低适合长期浮充场景封装小巧适合紧凑型BMS设计。STM32F401RB是ST的Cortex-M4内核MCU84MHz主频128KB Flash64KB SRAM带12位ADC、多个定时器、I2C、SPI、UART等外设。选它做BMS控制器的理由很直接ADC精度够用12位配合外部基准可以做到±5mV以内的采集精度定时器资源丰富可以同时跑均衡PWM、充电控制、通信超时等I2C可以接外部AFE或EEPROMUART可以接上位机或无线模块而且F4系列在工业场景中供货稳定、开发资料多、社区支持好。两节电池的电压采集可以用STM32F401RB的ADC直接分压采集也可以用外部专用AFE。考虑到成本直接分压采集是常见做法但要注意分压电阻的精度和温漂以及ADC参考电压的稳定性。如果对精度要求高比如±10mV以内建议用外部基准如REF3033或者用带内部基准的AFE。2. 硬件设计与关键参数计算2.1 系统框图与信号链梳理整个系统的信号链是这样的两节电池串联总正极BAT中间节点BAT_MID总负极BAT-。MP2642GR-Z的均衡引脚分别接到两节电池的正负极内部开关管对高电压那节进行放电。STM32F401RB通过ADC采集每节电池的电压通过GPIO控制MP2642GR-Z的使能引脚通过I2C或UART与上位机通信。充电和放电回路有独立的MOSFET控制由STM32的GPIO驱动。电压采集部分BAT和BAT_MID之间的电压是上节电池电压BAT_MID和BAT-之间的电压是下节电池电压。STM32的ADC参考电压是3.3V而单节锂电池电压范围是2.5V~4.2V所以需要分压。上节电池的分压电阻从BAT到BAT_MID再到ADC输入下节电池从BAT_MID到BAT-再到ADC输入。注意分压电阻的阻值要足够大避免在电池上产生持续的漏电流一般取几百千欧到兆欧级别。2.2 均衡电流与电阻选型计算MP2642GR-Z的均衡电流由外部电阻设定。假设我们设定均衡电流为100mA单节电池最高电压4.2V那么均衡电阻R V / I 4.2V / 0.1A 42Ω。实际选43Ω标准值均衡电流约97.7mA。电阻的功率P I² × R 0.1² × 43 0.43W所以要选至少1W的电阻留足余量。如果均衡电流设到200mAR 4.2 / 0.2 21Ω功率P 0.2² × 21 0.84W要选2W电阻。这里有个经验均衡电阻不要贴板安装最好用带散热片的功率电阻或者用两个电阻并联分担功率。我试过把两个43Ω/1W的电阻并联当21.5Ω/2W用温升明显比单个2W电阻低而且布局更灵活。另外均衡电阻周围不要放温度敏感元件比如NTC测温电阻否则均衡时局部温升会影响温度采集。MP2642GR-Z内部开关管的导通电阻也会产生压降和热量。假设内部导通电阻50mΩ100mA电流下压降5mV功耗0.5mW可以忽略。但如果均衡电流到500mA压降25mV功耗12.5mW就需要看芯片的热阻和散热条件了。2.3 电压采集精度与ADC配置STM32F401RB的ADC是12位逐次逼近型参考电压3.3V时理论分辨率是3.3V / 4096 0.806mV。但实际精度受参考电压精度、分压电阻精度、ADC非线性、噪声等因素影响。分压电阻用1%精度的分压比误差1%4.2V下误差42mV这太大了。所以要么用0.1%精度的电阻要么在软件里做校准。我的做法是用0.1%精度的分压电阻同时在软件里做两点校准。校准点选3.0V和4.2V用高精度电源给进去记录ADC读数算出实际的分压比和偏移。这样可以把采集精度做到±5mV以内。另外ADC采样时要用多次平均比如连续采16次取平均可以降低随机噪声。STM32F401RB的ADC支持硬件过采样可以配置过采样率来提升有效位数但会降低采样速率电池电压变化慢采样速率要求不高所以过采样是划算的。分压电阻的取值假设取R11MΩR21MΩ分压比1/24.2V分压后2.1V在ADC量程内。但1MΩ的电阻和ADC输入阻抗一般几十kΩ并联后会影响分压比所以要在ADC输入前加电压跟随器或者把分压电阻取小一些比如100kΩ100kΩ。100kΩ分压电阻上的漏电流是4.2V / 200kΩ 21μA对电池容量影响可以忽略。但100kΩ电阻和ADC输入阻抗并联后分压比会略偏需要在软件里校准。2.4 保护逻辑与MOSFET驱动充电和放电回路的MOSFET选型要考虑导通电阻、耐压、电流能力。两节串联最高电压8.4V选30V耐压的MOSFET足够。充电MOSFET和放电MOSFET背靠背串联防止体二极管导通。STM32的GPIO输出3.3V驱动MOSFET栅极需要电平转换或专用驱动芯片。如果MOSFET的Vgs(th)在1V~2V3.3V可以直接驱动但导通电阻可能不是最优。建议用专用栅极驱动芯片或者用三极管做电平转换。保护逻辑包括过压保护单节4.25V切断充电、欠压保护单节2.8V切断放电、过流保护放电电流阈值切断放电、过温保护温度60℃切断充放电。这些保护由STM32的软件实现响应时间在毫秒级对于电池保护来说够用。但如果要更快的响应比如短路保护就需要硬件比较器直接切断MOSFET。3. 软件架构与均衡策略实现3.1 软件整体架构与任务调度STM32F401RB的软件架构我一般分成三层底层驱动层、中间策略层、上层通信层。底层驱动包括ADC采集、GPIO控制、定时器、I2C/UART。中间策略层包括电压计算、均衡决策、保护逻辑、状态机。上层通信层负责与上位机或无线模块交互上报电压、电流、温度、状态等信息。任务调度不用RTOS的话可以用定时器中断做时间片轮询。比如1ms定时器中断里做ADC采样触发和状态机更新10ms做一次均衡决策100ms做一次保护判断1s做一次通信上报。用RTOS的话可以建几个任务用信号量或消息队列同步。对于两节电池的BMS不用RTOS也完全能跑代码更简单资源占用更少。状态机设计是关键。我一般定义几个状态IDLE空闲、CHARGING充电中、DISCHARGING放电中、BALANCING均衡中、FAULT故障、SLEEP休眠。状态之间的转换条件要明确比如充电时检测到单节过压就转FAULT故障排除后转IDLE。均衡可以在充电、放电、空闲时进行但故障时禁止均衡。3.2 电压采集与滤波算法ADC采集用DMA定时器触发自动把转换结果搬到内存数组不占CPU。采集16次后取平均得到原始ADC值。然后根据校准系数换算成实际电压。校准系数在产线或首次上电时通过两点校准得到存在Flash里。滤波算法我用的是滑动平均一阶低通滤波。滑动平均窗口取8个点滤掉突发噪声。一阶低通滤波系数取0.1进一步平滑。但要注意滤波会引入延迟对于保护判断来说延迟不能太大。我的做法是保护判断用原始值不滤波或轻滤波均衡决策用滤波后的值。这样保护响应快均衡不会因为噪声频繁切换。电压计算要注意分压电阻的温漂。1%精度的电阻温漂一般100ppm/℃温度变化20℃时阻值变化0.2%4.2V下误差8.4mV。如果环境温度变化大要么用低温漂电阻25ppm/℃要么在软件里做温度补偿。温度补偿需要知道电阻的温度系数以及板上的温度可以用NTC采集。3.3 均衡策略与阈值设定均衡策略的核心是什么时候开始均衡均衡哪一节什么时候停止。最简单的策略是电压差超过阈值就均衡高电压那节。阈值设多少设太小比如10mV噪声会导致频繁切换均衡开关频繁动作寿命受影响。设太大比如100mV均衡效果差容量利用率低。我的经验是设30mV~50mV比较合适。30mV对应容量差大概3%~5%对于大多数应用够用了。均衡启动条件电压差阈值且最高节电压3.4V避免在低电压时均衡因为低电压时电池容量少均衡放电会加速过放。均衡停止条件电压差阈值/2滞回或者最高节电压3.3V或者温度60℃或者故障状态。均衡时还要考虑充电和放电状态。充电时均衡高电压节可以防止它先到过压点。放电时均衡高电压节可以延长放电时间。空闲时均衡可以消除自放电不一致。但空闲时均衡会消耗电池能量如果长期空闲均衡可能导致电池过放。所以空闲均衡要设置最低电压限制比如单节3.0V就停止均衡。3.4 保护逻辑与故障处理保护逻辑用独立的任务或中断实现优先级最高。过压保护单节4.25V切断充电MOSFET置过压标志。欠压保护单节2.8V切断放电MOSFET置欠压标志。过流保护放电电流10A根据应用定切断放电MOSFET置过流标志。过温保护温度60℃切断充放电MOSFET置过温标志。故障处理要区分可恢复和不可恢复。过压、欠压、过温一般是可恢复的条件解除后可以自动恢复或需要手动复位。过流如果是短路引起的可能需要手动复位。故障时要记录故障码方便排查。故障恢复后要有延时避免频繁进出故障。保护响应时间过压保护从检测到切断MOSFET软件响应大概1ms~10ms取决于任务周期。对于电池保护这个速度够用。但如果要更快可以用硬件比较器直接驱动MOSFET关断软件只做记录。4. 实操调试与问题排查4.1 硬件调试步骤与测量要点硬件调试第一步是检查电源和地。给STM32供3.3V给MP2642GR-Z供电池电压用万用表测各点电压是否正常。特别注意MP2642GR-Z的使能引脚默认应该是关闭均衡避免上电就均衡。第二步是测电压采集。用高精度电源给BAT、BAT_MID、BAT-分别加电压比如BAT 7.4VBAT_MID 3.7VBAT- 0V那么上节电池3.7V下节电池3.7V。读STM32的ADC值换算成电压看是否接近3.7V。如果误差大检查分压电阻和校准系数。第三步是测均衡功能。给两节电池加不同电压比如上节4.0V下节3.6V使能均衡测上节电池电压是否下降均衡电阻是否发热。注意均衡电流是否和设定值一致如果不一致检查均衡电阻阻值和MP2642GR-Z的配置。第四步是测保护功能。给单节加过压看充电MOSFET是否切断。给单节加欠压看放电MOSFET是否切断。给NTC加热看过温保护是否触发。保护测试要慢慢加电压/温度观察触发点是否和设定值一致。4.2 常见问题与排查技巧问题一电压采集跳动大。原因可能是ADC参考电压不稳、分压电阻噪声、地线干扰。排查用示波器看ADC输入引脚波形如果有高频噪声加RC滤波。检查参考电压是否干净必要时加去耦电容。检查地线布局模拟地和数字地要分开单点接地。问题二均衡电流达不到设定值。原因可能是MP2642GR-Z内部开关管导通电阻大、均衡电阻阻值偏大、电池电压低。排查测均衡电阻两端电压算实际电流。如果电流偏小检查均衡电阻是否焊错或温漂大。如果电池电压低均衡电流自然小这是正常的。问题三均衡时温度过高。原因可能是均衡电阻功率不够、散热不好、均衡电流设太大。排查算均衡电阻的实际功耗看是否超过额定功率。摸均衡电阻温度如果烫手80℃要么降低均衡电流要么换更大功率的电阻要么加散热片。问题四保护误触发。原因可能是电压采集噪声、阈值设太紧、滤波不够。排查看保护触发时的原始ADC值如果噪声大加强滤波。如果阈值设太紧适当放宽。如果滤波不够增加滑动平均窗口或降低低通滤波系数。问题五通信不上。原因可能是I2C/UART引脚配置错、波特率不对、从机地址错、上拉电阻缺失。排查用示波器看通信波形检查引脚配置和波特率。I2C要加上拉电阻一般4.7kΩ。UART要交叉连接TX/RX。4.3 实测数据与性能评估我实测过一套两节串联的均衡系统均衡电流100mA电压采集精度±3mV均衡阈值30mV。测试数据初始上节4.05V下节3.85V电压差200mV。开启均衡上节以100mA放电容量假设2000mAh放电200mV对应容量约100mAh均衡时间约1小时。1小时后上节3.95V下节3.87V电压差80mV。继续均衡2小时后电压差30mV以内均衡停止。静态功耗测试均衡关闭时整板静态电流约50μA主要是STM32的休眠电流和分压电阻漏电流。均衡开启时均衡电流100mA加上整板电流总电流约100mA。对于备用电源场景静态电流50μA可以接受一年耗电约0.44Ah对于2000mAh电池来说约22%有点大。如果要降低静态电流可以增大分压电阻或者用MOSFET切断分压电阻只在采集时接通。温度测试均衡电阻43Ω/1W环境温度25℃均衡时电阻表面温度约65℃温升40℃。如果环境温度到50℃电阻表面温度到90℃接近电阻额定温度。所以建议用2W电阻或者两个1W电阻并联。4.4 常见问题速查表问题现象可能原因排查方法解决措施电压采集跳动大ADC参考不稳、分压电阻噪声、地线干扰示波器看ADC输入波形加RC滤波、加去耦电容、分开模拟数字地均衡电流偏小均衡电阻偏大、电池电压低、内部开关管压降大测均衡电阻两端电压算电流换合适阻值电阻、检查电池电压均衡时温度过高电阻功率不够、散热不好、均衡电流大算功耗、摸温度换大功率电阻、加散热片、降低均衡电流保护误触发电压噪声、阈值太紧、滤波不够看触发时原始ADC值加强滤波、放宽阈值通信不上引脚配置错、波特率不对、上拉缺失示波器看通信波形检查配置、加4.7kΩ上拉静态电流大分压电阻漏电流、STM32未休眠测静态电流、查休眠配置增大分压电阻、配置STM32休眠均衡不启动电压差未超阈值、最高节电压低、故障状态看电压差和状态机调整阈值、检查故障标志均衡频繁切换阈值太小、噪声大、滞回不够看电压差波动增大阈值、加滞回、加强滤波5. 方案优化与扩展思路5.1 降低静态功耗的几种做法备用电源场景对静态功耗极其敏感因为电池可能几个月甚至几年都不充放电均衡电路的静态电流直接决定电池能撑多久。降低静态功耗有几个方向一是增大分压电阻从100kΩ增到1MΩ漏电流从21μA降到2.1μA但分压电阻和ADC输入阻抗的匹配问题更严重需要加电压跟随器。二是用MOSFET切断分压电阻只在采集时接通采集占空比1%平均漏电流降到0.21μA。三是选低静态电流的LDO给STM32供电STM32本身配置为STOP模式RTC唤醒平均电流可以做到几微安。MP2642GR-Z本身的静态电流也要看数据手册一般均衡关闭时静态电流在微安级。如果静态电流偏大可以在使能引脚上加下拉电阻确保默认关闭。另外均衡电阻在关闭时不应该有漏电流检查MP2642GR-Z的关断特性。5.2 提高电压采集精度的进阶方法如果应用对电压采集精度要求极高比如±1mV那分压ADC的方案就不够了。可以考虑用专用电池监测AFE比如支持两节电池的AFE芯片内部有高精度ADC和基准通过I2C或SPI读电压。AFE的采集精度可以做到±1mV以内而且集成度高外围元件少。但成本比STM32内置ADC方案高适合高端应用。另一种方法是外置高精度ADC比如16位或24位ADC配合高精度基准。但电路复杂成本也高。对于大多数储能和备用电源应用±5mV的精度已经够用了因为电池本身的电压一致性就没那么好均衡阈值也是几十毫伏级别。软件上还可以做温度补偿。分压电阻的温漂、ADC基准的温漂、电池内阻的温度特性都可以通过温度传感器采集温度后做补偿。但补偿模型要准确否则可能过补偿。我的做法是如果环境温度变化在20℃以内不做温度补偿误差可以接受。如果变化超过40℃做简单的线性补偿。5.3 从两节扩展到多节的思路两节均衡方案成熟后如果要扩展到三节、四节甚至更多节有几种思路。一是用多颗MP2642GR-Z级联每颗管两节STM32通过GPIO分别控制。但要注意级联时的电压采集和均衡控制逻辑以及芯片之间的通信或同步。二是换用支持多节的均衡IC比如支持4节或6节的专用芯片集成度更高但成本也高。三是用分立方案每节一个均衡MOSFET和电阻STM32通过GPIO控制电压采集用多路ADC或外部多路复用器。扩展到多节时均衡策略会更复杂。两节时只需要比较两节电压多节时需要找最高节和最低节均衡最高节。均衡顺序可以是从最高节开始逐个均衡也可以同时均衡多个高电压节。同时均衡多个节时总均衡电流大对电池和电源的要求高。一般建议逐个均衡或者最多同时均衡两节。5.4 通信接口与上位机交互STM32F401RB的通信接口可以用UART、I2C、SPI、CAN等。备用电源场景常用UART或CAN储能场景常用CAN或RS485。UART最简单接一个UART转USB模块就可以连电脑。CAN适合多节点组网抗干扰强。I2C适合板内通信接EEPROM或显示屏。上位机交互我一般用简单的文本协议比如“V1:3.95V, V2:3.87V, T:25C, S:BALANCING”。STM32每秒上报一次上位机解析显示。如果要远程监控可以加无线模块比如LoRa或NB-IoT把数据传到云平台。但要注意功耗无线模块的功耗比STM32和均衡电路大得多备用电源场景要谨慎使用。数据记录也很重要。可以把电压、电流、温度、均衡状态记录到EEPROM或Flash里方便事后分析。记录频率不用太高比如每分钟一次记录最近24小时的数据。如果发生故障记录故障前后的数据帮助排查。5.5 实际项目中的经验教训我踩过的一个坑是均衡电阻的布局太靠近NTC均衡时电阻发热导致NTC温度读数偏高触发了过温保护但实际电池温度并不高。后来把NTC移到电池附近远离均衡电阻问题解决。所以布局时要注意热源和温度传感器的隔离。另一个坑是ADC采集没有做校准批量生产时不同板子的电压采集误差不一致有的偏20mV有的偏-20mV。后来在产线加了校准工序每块板子用高精度电源校准两个点把校准系数写到Flash里误差控制在±5mV以内。还有一个坑是均衡阈值设了30mV但电池电压噪声有±10mV导致均衡频繁启停。后来加了滞回启动阈值30mV停止阈值15mV并且加强了滤波问题解决。所以阈值和滞回要配合滤波一起设计。最后一个坑是STM32的ADC参考电压用了VDDA但VDDA和VDD之间有压差而且VDDA有噪声。后来改用外部基准REF3033电压采集稳定性明显提升。如果成本允许建议用外部基准。这个方案后续还可以扩展加一个电流采集用霍尔传感器或采样电阻运放监测充放电电流做SOC估算。加一个均衡电流监测用采样电阻测均衡电流判断均衡是否正常。加一个历史数据记录用Flash存电压曲线分析电池健康状态。加一个无线通信把数据传到手机或云平台实现远程监控。这些扩展都可以在现有硬件基础上逐步添加不用大改。

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

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

免费获取报价 →
↑