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引脚封装提供充足IO
2. 硬件电路设计与关键参数计算
2.1 升压拓扑基础原理
升压转换器(Boost Converter)通过控制开关管的通断,将输入电压提升到更高水平。其核心工作原理是:
- 开关管导通时,电感储能
- 开关管关断时,电感释放能量,与输入电压叠加后通过二极管向输出电容充电
输出电压与输入电压的关系为: Vout = Vin / (1 - D) 其中D为占空比
2.2 关键元件选型与计算
电感选择
电感值计算公式: L = (Vin × D) / (ΔIL × fsw) 其中:
- ΔIL通常取最大输出电流的20%-40%
- fsw为开关频率(1.2MHz)
例如:Vin=5V, Vout=24V, Iout=150mA时: D = 1 - (Vin/Vout) = 0.79 取ΔIL=60mA(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输出,ΔVout=240mV: 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) | 效率(%) |
|---|---|---|---|
| 5 | 12 | 100 | 89.2 |
| 5 | 12 | 300 | 91.5 |
| 12 | 24 | 50 | 88.7 |
| 12 | 24 | 150 | 90.3 |
5.2 常见问题解决方案
- 启动失败:检查EN引脚电平,确保软启动电容(典型值10nF)正常
- 输出电压不稳:优化FB分压电阻布局,检查补偿网络
- 芯片过热:确认电感饱和电流足够,检查PCB散热设计
6. 进阶应用扩展
6.1 多路输出实现
利用TPS61170的Easyscale™协议,通过CTRL引脚动态调节输出电压:
// 发送Easyscale命令 void Send_Easyscale(uint8_t code) { for(int i=0; i<8; 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,可有效避免输入电压跌落问题。