基于TPS61170的高效DC-DC升压转换器设计与实现

📅 2026/7/14 3:18:15
基于TPS61170的高效DC-DC升压转换器设计与实现
1. 项目背景与核心器件选型在工业控制、医疗设备和实验室仪器等领域经常需要将较低的直流电压转换为更高的直流电压。传统方案采用分立元件搭建升压电路但存在效率低、体积大、稳定性差等问题。我们选择了TI的TPS61170作为核心升压芯片搭配Microchip的PIC32MZ2048EFM144微控制器构建一个高效可靠的DC-DC升压转换系统。TPS61170是一款集成1.2A开关管的单片升压转换器具有以下突出特性宽输入电压范围3V-18V高达38V的输出电压1.2MHz固定开关频率93%的峰值效率6引脚2x2mm QFN封装PIC32MZ2048EFM144则是Microchip旗下高性能32位MCU具备200MHz主频的MIPS32® M-Class内核2MB Flash和512KB SRAM丰富的外设接口PWM、ADC、DAC等144引脚封装提供充足IO2. 硬件电路设计与关键参数计算2.1 升压拓扑基础原理升压转换器(Boost Converter)通过控制开关管的通断将输入电压提升到更高水平。其核心工作原理是开关管导通时电感储能开关管关断时电感释放能量与输入电压叠加后通过二极管向输出电容充电输出电压与输入电压的关系为 Vout Vin / (1 - D) 其中D为占空比2.2 关键元件选型与计算电感选择电感值计算公式 L (Vin × D) / (ΔIL × fsw) 其中ΔIL通常取最大输出电流的20%-40%fsw为开关频率(1.2MHz)例如Vin5V, Vout24V, Iout150mA时 D 1 - (Vin/Vout) 0.79 取ΔIL60mA(40% of Iout) L (5×0.79)/(0.06×1.2×10⁶) ≈ 55μH建议选择饱和电流大于1.5A的屏蔽电感如TDK VLS252010ET-560M。输出电容选择考虑纹波电压要求(通常1%Vout) Cout ≥ Iout × D / (fsw × ΔVout) 对于24V输出ΔVout240mV Cout ≥ 0.15×0.79/(1.2×10⁶×0.24) ≈ 0.41μF实际选用10μF/50V陶瓷电容以留有余量。二极管选择需满足反向电压 Vout正向电流 Iout快速恢复特性推荐使用肖特基二极管如B340A(40V/3A)。3. PCB布局与EMI优化3.1 关键布局原则功率回路最小化SW引脚→电感→二极管→输出电容→GND→芯片GND模拟信号隔离FB反馈走线远离开关节点散热处理充分利用PCB铜箔散热3.2 具体实施要点使用4层板设计顶层信号、内层GND、内层电源、底层混合开关节点面积控制在最小FB分压电阻靠近芯片放置输入输出电容尽量靠近相应引脚注意错误的布局会导致效率下降5-10%甚至引发振荡。实测显示优化布局后系统效率从85%提升至91%。4. 软件控制策略实现4.1 PIC32MZ配置流程// 初始化PWM模块 void PWM_Init(void) { OC1CON 0; // 关闭OC1模块 OC1R 0; // 初始占空比0 OC1RS 200; // 周期值 OC1CON 0x0006; // PWM模式无故障保护 } // 设置PWM占空比 void Set_DutyCycle(float duty) { if(duty 0.9) duty 0.9; // 限制最大占空比 OC1RS (uint16_t)(200 * duty); }4.2 电压闭环控制算法采用增量式PID算法实现输出电压精确调节typedef struct { float Kp, Ki, Kd; float prev_error; float integral; } PID_Controller; float PID_Update(PID_Controller* pid, float error) { float derivative error - pid-prev_error; pid-integral error; pid-prev_error error; return pid-Kp*error pid-Ki*pid-integral pid-Kd*derivative; }5. 实测性能与优化建议5.1 效率测试数据输入电压(V)输出电压(V)负载电流(mA)效率(%)51210089.251230091.512245088.7122415090.35.2 常见问题解决方案启动失败检查EN引脚电平确保软启动电容(典型值10nF)正常输出电压不稳优化FB分压电阻布局检查补偿网络芯片过热确认电感饱和电流足够检查PCB散热设计6. 进阶应用扩展6.1 多路输出实现利用TPS61170的Easyscale™协议通过CTRL引脚动态调节输出电压// 发送Easyscale命令 void Send_Easyscale(uint8_t code) { for(int i0; i8; i) { if(code (1(7-i))) { // 发送逻辑1高脉冲宽度1.5us CTRL_PIN 1; __delay_us(1.5); CTRL_PIN 0; } else { // 发送逻辑0高脉冲宽度0.5us CTRL_PIN 1; __delay_us(0.5); CTRL_PIN 0; } __delay_us(2); // 位间隔 } }6.2 输入欠压保护利用PIC32MZ的ADC监控输入电压#define VIN_THRESHOLD 3.3 // 欠压阈值 void ADC_Check(void) { float vin ADC_Read(AN0) * 3.3 / 1024; if(vin VIN_THRESHOLD) { EN_PIN 0; // 关闭转换器 } }在实际项目中我发现合理设置软启动时间能显著降低输入端的冲击电流。对于容性负载较大的场合建议将软启动电容增加到22nF使启动时间延长到约2ms可有效避免输入电压跌落问题。