1. MP2759充电IC与数字PWM调流方案概述
在工业医疗设备、无人机和电动工具等应用中,电池系统的充电管理往往需要动态调节能力。传统方案通过硬件电阻设定固定充电电流,而MP2759的创新之处在于支持通过MCU的PWM信号实时调整输入充电电流(ICC)。这种数字调流方式为系统设计带来三个核心优势:
- 动态响应:根据温度、电池状态等参数实时优化充电策略
- 资源节约:省去传统方案中的DAC电路和额外GPIO资源
- 精度控制:PWM占空比可精确到1%步进,实现精细电流调节
MP2759作为一款36V输入的开关充电IC,其内部集成了同步Buck控制器、电源路径管理和多重保护功能。当配合PWM调流时,系统可在4V-36V输入范围内,对1-6节串联锂电池实现最高3A的可编程充电电流。
提示:该方案特别适合需要在不同工作模式(如快充/涓流充电)间切换,或需遵守JEITA温度规范的应用场景。
2. 数字PWM调流硬件实现详解
2.1 等效电阻网络设计原理
MP2759通过ISET引脚电阻(RISET)设定基准充电电流,其计算公式为:
ICHG = 96(kΩ) / RISET(kΩ)数字调流的核心是用PWM信号等效替代物理电阻。如图3所示,在ISET引脚与地之间接入RC滤波网络(R1、R2、C1),其中:
- R1直接连接PWM输出端
- R2并联在ISET与地之间
- C1为低通滤波电容(典型值100nF)
当PWM占空比为D时,等效电阻为:
REQ = R2 || (R1/D)通过调节占空比D(建议范围10%-90%),即可动态改变等效RISET值。例如:
- 当D=50%,R1=10kΩ,R2=10kΩ时: REQ = 10k || (10k/0.5) = 10k || 20k = 6.67kΩ
- 对应充电电流ICHG = 96/6.67 ≈ 14.4mA(基准值)
2.2 关键元件选型指南
电阻对精度影响:
- R1/R2建议选用1%精度的0805封装电阻
- 阻值组合推荐:
- 高电流场景:R1=4.7kΩ, R2=10kΩ
- 低电流场景:R1=10kΩ, R2=20kΩ
滤波电容选择:
- 时间常数τ应大于PWM周期的10倍
- 对于1kHz PWM:C1≥10/(1k×10)=1μF
- 实际应用常用100nF陶瓷电容(X7R材质)
PCB布局要点:
- ISET网络需远离开关节点至少5mm
- R1/R2尽量靠近MP2759放置
- 地回路优先连接至芯片AGND引脚
3. 软件配置与调流算法实现
3.1 PWM参数配置模板
以STM32F103为例的PWM初始化代码:
// 定时器3通道1输出PWM TIM_TimeBaseInitTypeDef TIM_Struct; TIM_OCInitTypeDef PWM_Struct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_Struct.TIM_Prescaler = 72-1; // 1MHz计数频率 TIM_Struct.TIM_CounterMode = TIM_CounterMode_Up; TIM_Struct.TIM_Period = 1000-1; // 1kHz频率 TIM_Struct.TIM_ClockDivision = 0; TIM_TimeBaseInit(TIM3, &TIM_Struct); PWM_Struct.TIM_OCMode = TIM_OCMode_PWM1; PWM_Struct.TIM_OutputState = TIM_OutputState_Enable; PWM_Struct.TIM_Pulse = 500; // 初始占空比50% PWM_Struct.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &PWM_Struct); TIM_Cmd(TIM3, ENABLE);3.2 动态调流策略示例
温度补偿算法:
void UpdateChargingCurrent(float temp_C) { uint16_t duty; if(temp_C < 0) duty = 0; // 低温停充 else if(temp_C < 10) duty = 300; // 10%电流 else if(temp_C < 45) duty = 1000; // 全电流 else if(temp_C < 60) duty = 500; // 50%电流 else duty = 0; // 过热停充 TIM3->CCR1 = duty; // 更新PWM占空比 }电池电压分段充电:
void CV_Phase_Control(float bat_V) { float ratio; if(bat_V < 24.0) ratio = 1.0; // 恒流阶段 else if(bat_V < 25.2) ratio = 0.7; // 过渡阶段 else ratio = 0.3; // 恒压阶段 TIM3->CCR1 = (uint16_t)(ratio * 1000); }4. 实测性能与优化建议
4.1 效率测试数据对比
| 条件 | 效率@1A | 效率@2A | 效率@3A |
|---|---|---|---|
| VIN=12V, VBAT=8.4V | 93.2% | 94.1% | 93.8% |
| VIN=24V, VBAT=16.8V | 91.5% | 92.3% | 91.0% |
| VIN=36V, VBAT=25.2V | 89.8% | 90.2% | 88.5% |
注意:输入输出电压差越大,开关损耗占比越高,建议工作电压差控制在15V以内。
4.2 热管理优化方案
根据图27/28热成像数据,提出三点改进建议:
布局优化:
- 功率电感与芯片间距≥3mm
- 底层铺设散热铜箔(2oz厚度)
- 添加Thermal via阵列(直径0.3mm,间距1mm)
元件选型升级:
- 选用DCR<30mΩ的屏蔽电感(如Würth 7443630220)
- 输入电容改用低ESR聚合物电容(如Panasonic 16SVP330M)
软件保护策略:
void Thermal_Throttling() { if(Read_Temp() > 85) { TIM3->CCR1 *= 0.8; // 温度超限时电流降额20% Enable_Fan(); // 启动散热风扇 } }5. 典型问题排查指南
5.1 PWM信号异常排查流程
无电流输出:
- 测量ISET引脚电压:正常应为1.2V±5%
- 检查PWM信号幅值:需≥2.5V(3.3V逻辑)
- 验证RC滤波网络:用示波器观察PWM_AVG波形
电流调节不线性:
- 确认PWM频率在500Hz-5kHz范围内
- 检查滤波电容是否漏电(替换测试)
- 测量R1/R2实际阻值是否偏移
系统振荡现象:
- 尝试增大C1容值(不超过10μF)
- 在PWM输出端串联100Ω电阻
- 检查电源路径管理MOSFET的驱动波形
5.2 参数计算工具
提供快速计算RISET的Python脚本:
def calc_riset(r1, r2, duty): req = 1/(1/r2 + 1/(r1/duty)) ichg = 96 / req print(f"占空比{duty*100}% => 等效电阻{req:.2f}kΩ => 充电电流{ichg:.2f}A") # 示例:R1=10k, R2=10k calc_riset(10, 10, 0.3) # 30%占空比 calc_riset(10, 10, 0.7) # 70%占空比在实际项目中,建议先用可调电阻确定目标电流对应的RISET值,再反推所需的PWM占空比。这种"硬件校准+软件实现"的方法可有效避免参数误差。