1. 项目背景与核心需求拆解
1.1 为什么串联电池组必须做均衡
但凡接触过锂电池组的人都知道一个常识:电芯出厂时容量、内阻、自放电率就有离散性,成组之后随着充放电循环,这种离散性只会越来越大。串联结构里电流是共用的,容量最小的那节电芯会最先到达截止电压,整组可用容量就被它拖住了。更麻烦的是,充电时电压最高的那节先触发过压保护,放电时电压最低的那节先触发欠压保护,长期下来高电压那节持续过充、低电压那节持续过放,衰减速度成倍加快。
储能系统和备用电源系统对这一点尤其敏感。这类场景的特点是长期浮充或者浅充浅放,单次循环的压差看起来不大,但架不住时间长。我见过一组两串的铁锂备用电源,用了不到一年,两节电芯的压差从出厂时的十几毫伏拉到了接近两百毫伏,整组放电时间缩水了将近三成。所以两串电池组的均衡不是可选项,是必选项。
这个项目要解决的就是两节串联电芯的主动均衡问题,主控用 ATmega1284,均衡控制芯片用 MP2642GR-Z。选这个组合不是随便拍脑袋,后面会详细讲选型逻辑。
1.2 两串均衡的典型应用场景
两串结构在中小功率储能和备用电源里非常常见。比如通信基站的备用电池模块、小型光伏储能包、便携式储能电源、UPS 的电池单元,很多都是两串架构。原因很简单:两串的电压区间刚好落在很多 DC-DC 和负载的工作范围内,既不用复杂的多串管理,又能提供比单节更高的电压和容量。
但两串结构有个尴尬的地方——它太简单了,简单到很多人觉得“两节电池嘛,随便搞搞就行”。实际上两串均衡的难度并不比多串低,因为两串系统往往成本敏感、空间受限,没有太多余量给你堆料。你需要在有限的板面积和预算里,把均衡效率、静态功耗、保护逻辑都做扎实。
1.3 核心器件选型逻辑
先说 MP2642GR-Z。这是一颗专门做电池均衡的芯片,支持被动均衡和主动均衡两种模式,内置 MOSFET 驱动,可以通过外部配置电阻设定均衡电流。它的工作电压范围覆盖两串锂电的典型区间,静态电流控制得不错,适合长期在线运行的备用电源场景。选它的核心理由是集成度高——均衡功率管、驱动、保护逻辑都集成在里面了,外围只需要少量电阻电容就能跑起来,对两串这种小规模系统来说,BOM 成本和板面积都能压下来。
再说 ATmega1284。这颗 MCU 在工业控制和电源管理领域用得很多,128KB Flash、16KB SRAM、4KB EEPROM,对于均衡控制这种任务来说资源绰绰有余。它有丰富的定时器和 ADC 通道,可以同时监控两节电芯的电压、温度,还能通过 UART 或者 I2C 跟上层系统通信。更重要的是它的低功耗模式做得很成熟,备用电源系统大部分时间处于待机状态,MCU 的休眠电流直接影响整机静态功耗。
注意:MP2642GR-Z 的均衡电流设定电阻需要根据电芯容量和期望均衡时间来计算,不能直接照搬参考设计。后面会给出具体的计算过程。
2. 均衡方案的整体设计与原理拆解
2.1 被动均衡与主动均衡的取舍
在动手之前,先把均衡方案的选择逻辑理清楚。被动均衡就是给电压高的那节电芯并联一个电阻,把多余的能量以热量形式消耗掉。主动均衡则是把高电压电芯的能量搬到低电压电芯去,或者搬到中间储能元件再释放。
被动均衡的优点是电路简单、成本低、可靠性高,缺点是能量全变成热,均衡电流做不大,一般也就几十到一百多毫安。主动均衡效率高,但电路复杂,需要电感或者电容做能量转移,成本和故障率都上去了。
这个项目最终选的是主动均衡方案,用 MP2642GR-Z 配合外部电感实现能量转移。原因在于储能和备用电源系统对能耗敏感,被动均衡那点热量在密闭机箱里积少成多,夏天环境温度一高,电芯寿命受影响。主动均衡虽然前期设计麻烦一点,但长期运行的收益是实打实的。
2.2 MP2642GR-Z 的均衡工作原理
MP2642GR-Z 内部集成了一个双向 Buck-Boost 控制器,配合外部电感和两个电芯之间的开关网络,可以把能量从高电压电芯转移到低电压电芯。具体来说,芯片通过检测两节电芯的电压差,当压差超过设定阈值时,启动均衡逻辑,控制内部 MOSFET 的开关时序,让电流从高电压侧流向低电压侧。
均衡电流的大小由外部检流电阻和芯片内部的基准电压决定。假设检流电阻为 R_sense,内部基准为 V_ref,那么均衡电流 I_bal ≈ V_ref / R_sense。实际选值时还要考虑电感的饱和电流和电芯的最大允许充电电流,不能超过电芯规格书里的推荐值。
2.3 ATmega1284 在系统中的角色
ATmega1284 在这个系统里不是单纯给 MP2642GR-Z 发指令的。它承担了几个关键任务:
第一,电压采样与监控。通过内部 ADC 配合外部精密分压电阻,实时采集两节电芯的电压,采样精度直接决定了均衡触发的准确性。第二,温度监控。通过 NTC 热敏电阻采集电芯温度,温度异常时禁止均衡或者降低均衡电流。第三,状态机管理。根据电压、温度、电流信息判断系统处于充电、放电、待机还是故障状态,不同状态下均衡策略不同。第四,通信与上报。通过 UART 把电池状态上报给上层控制器,或者通过 I2C 驱动外部 EEPROM 记录历史数据。
2.4 系统整体架构与信号流
整个系统的信号流可以这样理解:两节电芯的电压经过分压网络进入 ATmega1284 的 ADC 通道,MCU 根据采样值判断是否需要均衡,然后通过 GPIO 或者 SPI 接口配置 MP2642GR-Z 的工作模式。MP2642GR-Z 驱动外部电感进行能量转移,同时把故障状态通过中断引脚反馈给 MCU。MCU 再根据故障类型决定是暂停均衡、降低电流还是完全关断。
这个架构的好处是分工明确:MP2642GR-Z 专心做功率变换,ATmega1284 专心做逻辑控制和状态管理。两者通过简单的数字接口交互,耦合度低,调试起来也方便。
3. 硬件设计与关键参数计算
3.1 电压采样电路的设计要点
电压采样是均衡系统的基础,采样不准,后面全白搭。ATmega1284 的 ADC 是 10 位精度,内部参考电压可以选 2.56V 或者 AVCC。两节锂电串联最高电压大概在 8.4V 左右,直接进 ADC 肯定不行,必须分压。
分压电阻的选值要考虑两个因素:一是分压后的电压不能超过 ADC 参考电压,二是分压电阻不能太小,否则长期在线运行会持续耗电。假设用 2.56V 内部参考,分压比至少要 8.4 / 2.56 ≈ 3.28,取 4 倍分压比较稳妥。上电阻选 300kΩ,下电阻选 100kΩ,分压比就是 4:1,8.4V 分压后是 2.1V,留了足够的余量。
但这里有个坑:分压电阻的精度直接影响采样精度。普通 5% 精度的电阻,分压比误差可能到 2% 以上,对应到电压上就是几十毫伏的偏差。均衡触发的压差阈值通常设在 20mV 到 50mV 之间,采样误差太大就会导致误触发或者该触发时不触发。所以分压电阻至少要用 1% 精度的,条件允许的话用 0.1% 的更好。
实操心得:分压节点上一定要并一个小电容,比如 100nF,滤掉高频噪声。ADC 采样的时候多采几次取平均,能进一步压低噪声。我一般采 16 次去掉最大最小值再平均,效果很稳。
3.2 均衡电流的设定与计算
MP2642GR-Z 的均衡电流由外部检流电阻决定。假设芯片内部基准电压 V_ref = 50mV,想要设定均衡电流为 200mA,那么检流电阻 R_sense = V_ref / I_bal = 50mV / 200mA = 0.25Ω。这个电阻的功率也要算一下:P = I² × R = 0.2² × 0.25 = 10mW,选 0805 封装的 0.25Ω 电阻就够了。
但均衡电流不是越大越好。电芯规格书里通常会标注最大持续充电电流,均衡电流不能超过这个值。比如一节 5Ah 的电芯,最大持续充电电流 1C 就是 5A,200mA 的均衡电流只占 4%,完全没问题。但如果是一节 500mAh 的小电芯,200mA 就是 0.4C,虽然没超规格,但长期这么搞对电芯寿命有影响,建议把均衡电流降到 50mA 到 100mA。
另外,均衡电流还受电感选型限制。MP2642GR-Z 需要外部电感配合工作,电感的饱和电流必须大于均衡电流的峰值。Buck-Boost 拓扑里电感电流峰值通常是平均电流的 1.5 到 2 倍,所以 200mA 均衡电流对应的电感饱和电流至少要 400mA。电感值一般选 10μH 到 22μH,具体看开关频率和纹波要求。
3.3 电感与滤波电容的选型
电感选型除了饱和电流,还要看直流电阻(DCR)。DCR 越小,电感上的损耗越低,均衡效率越高。但 DCR 小的电感通常体积大、成本高,需要折中。对于 200mA 级别的均衡电流,选 DCR 在 100mΩ 以内的电感就比较理想了,损耗大概在 4mW 左右,可以接受。
滤波电容主要是输入输出端的陶瓷电容,用来平滑电压纹波。输入端建议放 10μF 的 X5R 或者 X7R 陶瓷电容,输出端放 22μF。电容的耐压要留足余量,两串系统最高 8.4V,电容耐压至少选 16V,选 25V 更稳妥。
3.4 温度检测与保护电路
温度检测用 10kΩ 的 NTC 热敏电阻,跟一个 10kΩ 的精密电阻串联分压,接到 ATmega1284 的 ADC 通道。25°C 时 NTC 阻值是 10kΩ,分压点电压是参考电压的一半,ADC 读数在中间位置,灵敏度最高。
温度保护逻辑是这样的:温度低于 0°C 或者高于 45°C 时禁止均衡,因为低温下锂离子活性低,强行均衡容易析锂;高温下电芯本身就在发热,再均衡就是火上浇油。温度在 0°C 到 15°C 或者 35°C 到 45°C 之间时,把均衡电流降到额定值的一半。只有温度在 15°C 到 35°C 的舒适区间,才允许满电流均衡。
4. 软件控制逻辑与状态机实现
4.1 电压采样与滤波算法
ATmega1284 的 ADC 采样用中断或者轮询都行,我习惯用定时器触发轮询,每 100ms 采一轮,每轮采 16 次。采样结果先做排序,去掉最大和最小的各 2 个值,剩下的 12 个取平均。这样处理之后,电压采样的波动能控制在 ±5mV 以内,对于 20mV 的均衡阈值来说足够了。
采样值转电压的公式:V_cell = ADC_value × V_ref / 1024 × (R_top + R_bottom) / R_bottom。其中 V_ref 是 2.56V,R_top 和 R_bottom 是分压电阻。实际写代码的时候,把这个公式里的常数项预先算好,运行时只做乘法和移位,省 CPU 时间。
4.2 均衡触发条件与阈值设定
均衡触发的核心条件是两节电芯的压差超过阈值。阈值设多少合适?太小了频繁触发,均衡电路一直在工作,静态功耗上去了;太大了均衡效果不明显,压差拉不回来。根据经验,两串锂电的均衡阈值设在 30mV 比较平衡。压差超过 30mV 启动均衡,低于 10mV 停止均衡,中间留 20mV 的回差,防止在阈值附近反复开关。
除了压差条件,还要满足几个前提:电芯温度在允许范围内、系统不处于过流或者短路保护状态、电芯电压在正常区间(比如 2.5V 到 4.2V 之间)。任何一个条件不满足,均衡都不启动。
4.3 状态机设计与模式切换
整个控制逻辑用一个状态机来管理,状态包括:待机、充电、放电、均衡、故障。待机状态下只做电压和温度采样,不启动均衡。充电状态下如果压差超阈值,启动均衡。放电状态下一般不做均衡,因为放电时压差会被负载拉大,这时候均衡反而会干扰放电判断。故障状态下立即关断均衡,等待故障清除。
状态切换的优先级是:故障 > 充电 > 放电 > 待机。也就是说,只要故障标志置位,不管其他条件如何,直接进故障状态。故障清除后,根据当前电压电流条件重新判断进入哪个状态。
4.4 与 MP2642GR-Z 的通信与控制
ATmega1284 跟 MP2642GR-Z 的交互主要通过几个 GPIO:一个使能引脚控制均衡开关,一个模式选择引脚切换均衡方向,一个中断引脚接收芯片的故障反馈。如果芯片支持 SPI 或者 I2C,也可以用数字接口读取内部寄存器,获取更详细的故障信息。
控制时序上要注意:使能引脚拉高之前,模式选择引脚必须先稳定至少 1ms,否则芯片可能误判方向。关断的时候反过来,先拉低使能,等 10ms 再改变模式引脚。这些时序要求芯片手册里都有,但很多人调试的时候容易忽略,导致均衡方向反了或者芯片发热异常。
5. 实操调试与常见问题排查
5.1 上电调试的步骤与注意事项
第一次上电千万别直接接电芯,先用可调电源模拟两节电芯。把电源1设到 3.7V,电源2设到 3.8V,模拟 100mV 的压差。上电后先测 ATmega1284 的供电电压是否正常,再测 ADC 采样值是否跟实际电压对得上。如果采样值偏差超过 20mV,先查分压电阻的精度和焊接有没有问题。
采样正常之后,用示波器看 MP2642GR-Z 的开关波形。正常情况下应该看到电感两端有高频开关波形,频率在几百 kHz 到 1MHz 之间。如果看不到波形,先查使能引脚电平对不对,再查电感的焊接和感值。
5.2 均衡电流不达标的排查思路
均衡电流偏小是最常见的问题。排查顺序是这样的:先测检流电阻两端的电压,算出来的电流跟设定值差多少。如果差得不多,可能是电阻精度问题;如果差很多,查电感是不是饱和了,或者开关频率是不是偏离了设定值。
还有一种情况是均衡电流一开始正常,运行几分钟之后逐渐下降。这通常是电感发热导致 DCR 增大,或者电芯内阻变化引起的。如果电感温度超过 60°C,说明电感的 DCR 太大或者饱和电流不够,需要换更大尺寸的电感。
5.3 采样跳变与误触发的处理
ADC 采样跳变导致均衡误触发,这个问题在调试初期很常见。原因通常是分压节点没有滤波电容,或者电容离 ADC 引脚太远。解决办法是在分压节点和 ADC 引脚之间串一个 100Ω 电阻,再并一个 100nF 电容到地,构成一个简单的 RC 滤波器。截止频率大概在 16kHz,对 50Hz 工频干扰和开关噪声都有很好的抑制。
如果加了滤波还有跳变,检查一下 PCB 布局。分压电阻的地线要单独走,不能跟功率地混在一起。ADC 的参考电压引脚要加去耦电容,紧挨着引脚放。
5.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不启动 | 压差未超阈值 | 测两节电芯实际电压 | 调整阈值或检查采样精度 |
| 均衡电流偏小 | 检流电阻偏大 | 测检流电阻两端电压 | 更换合适阻值电阻 |
| 均衡电流逐渐下降 | 电感饱和或发热 | 测电感温度 | 换更大饱和电流电感 |
| ADC 采样跳变 | 滤波不足 | 示波器看采样波形 | 加 RC 滤波,优化布局 |
| 芯片发热异常 | 开关时序错误 | 查使能/模式引脚时序 | 调整控制时序 |
| 均衡方向反了 | 模式引脚接反 | 查模式引脚电平 | 交换模式引脚接线 |
避坑技巧:调试的时候在 MP2642GR-Z 的电源引脚上并一个 100μF 的电解电容,能有效吸收均衡瞬间的电流冲击,避免芯片因为供电跌落而复位。这个电容在参考设计里经常被省略,但实际用下来效果很明显。
6. 系统优化与长期运行可靠性
6.1 静态功耗的优化手段
备用电源系统大部分时间在待机,静态功耗直接决定整机自放电率。ATmega1284 在掉电模式下的电流可以做到 1μA 以下,但前提是关掉所有不必要的外设。具体操作:关掉 ADC(需要采样时再开)、关掉 UART、把未使用的 GPIO 设成输入并使能上拉或者设成输出低电平,避免浮空引脚漏电。
MP2642GR-Z 在关断模式下的静态电流也很关键。查手册确认关断电流,如果偏大,可以在使能引脚上加一个下拉电阻,确保 MCU 休眠时芯片彻底关断。实测下来,整个系统待机电流控制在 50μA 以内是完全可以做到的。
6.2 均衡效率的实测与提升
均衡效率的定义是:从高电压电芯转移出去的能量,有多少真正充进了低电压电芯。剩下的都变成热耗散掉了。影响效率的主要因素是电感的 DCR、开关管的导通电阻和开关损耗。
实测方法:在均衡回路里串一个毫欧级的采样电阻,用示波器同时测高电压侧和低电压侧的电流波形,积分算能量。我实测下来,200mA 均衡电流下效率大概在 85% 到 90% 之间。想再往上提,换 DCR 更小的电感,或者提高开关频率减小纹波,但开关频率高了开关损耗也会增加,需要折中。
6.3 长期运行的数据记录与健康评估
ATmega1284 的 4KB EEPROM 可以用来记录均衡事件。每次均衡启动时,记录时间戳、两节电芯的电压、均衡持续时间。这些数据积累下来,可以分析电芯的一致性变化趋势。如果发现均衡越来越频繁,或者均衡后压差恢复得越来越慢,说明电芯离散性在恶化,该考虑更换电芯了。
数据记录不用太频繁,每天记一次汇总数据就够了。EEPROM 的擦写寿命是 10 万次,按每天写 10 次算,能用 27 年,完全够用。
6.4 电芯老化后的均衡策略调整
电芯用久了,容量和内阻都会变化,原来的均衡阈值和电流可能就不合适了。比如新电芯 30mV 阈值刚好,老电芯自放电差异大,压差本来就大,再用 30mV 阈值会导致均衡频繁启动。这时候可以把阈值适当放宽到 50mV,同时降低均衡电流,减少发热。
更聪明的做法是让系统自适应:记录每次均衡前后的压差变化,如果均衡后压差能稳定降到 10mV 以内,说明阈值合适;如果均衡后压差还在 20mV 以上,说明均衡电流不够或者电芯已经严重不均衡,需要报警提示维护。
7. 个人实操体会与扩展思路
这个两串均衡方案我从打样到小批量验证,前后折腾了差不多两个月。最大的体会是:均衡电路本身不难,难的是采样精度和长期稳定性。很多方案在实验室里跑得好好的,一到现场就出问题,十有八九是采样或者电源处理没做到位。
另外一点,MP2642GR-Z 这颗芯片的 datasheet 写得比较简略,有些参数需要自己实测确认。比如它的实际开关频率跟设定值有偏差,检流电阻的温漂也会影响均衡电流的长期稳定性。我的做法是在检流电阻旁边放一个 NTC,软件里做温度补偿,实测下来均衡电流的温漂能从 ±8% 压到 ±3% 以内。
这个架构后续还可以扩展。比如把 ATmega1284 的 UART 接到无线模块上,实现电池状态的远程监控;或者在 EEPROM 里存一套电芯健康模型,根据历史数据预测电芯寿命。两串只是起点,把这套逻辑摸透了,扩展到四串、八串也就是多路采样和多路均衡控制的事,核心思路是一样的。