1. 项目背景与核心器件选型
在电力电子设计中,DC-DC升压转换是常见需求,特别是在需要从低压电源生成高压输出的场景中。本项目采用TI的TPS61170作为核心升压芯片,配合STM32F303VE微控制器实现智能化控制,构建一个高效可靠的高压电源系统。
TPS61170是一款集成1.2A开关管的升压转换器,具有以下突出特性:
- 宽输入电压范围:3V至18V
- 高输出电压能力:最高38V
- 1.2MHz固定开关频率
- 集成功率MOSFET(40V/1.2A)
- 小尺寸2x2mm QFN封装
选择STM32F303VE作为控制器主要基于其丰富的外设资源:
- 72MHz Cortex-M4内核,带FPU
- 4个5Msps的12位ADC
- 7个高速比较器
- 4个运算放大器
- 丰富的定时器资源
这种组合既保证了电源转换效率,又为系统提供了足够的控制灵活性和扩展能力。
2. 电路设计与关键参数计算
2.1 基本升压拓扑结构
TPS61170采用标准升压(Boost)拓扑,其基本工作原理是通过电感储能和释放实现电压提升。当内部开关管导通时,电感储能;关断时,电感能量通过二极管向输出电容传递。输出电压由占空比决定:
Vout = Vin / (1 - D)
其中D为占空比,TPS61170最大占空比可达93%。
2.2 关键元件选型与计算
电感选择
电感值计算公式: L = (Vin × D) / (ΔIL × fsw)
对于典型5V输入,12V输出应用:
- 目标纹波电流ΔIL取30%的峰值电流(约0.36A)
- 计算得D=1-5/12≈0.583
- fsw=1.2MHz
L ≈ (5×0.583)/(0.36×1.2×10⁶) ≈ 6.8μH
建议选择饱和电流大于1.5A的屏蔽电感,如TDK VLS252010ET-6R8N。
输出电容选择
考虑输出电压纹波要求: Cout ≥ Iout × D / (fsw × ΔVout)
对于150mA输出,50mV纹波要求: Cout ≥ 0.15×0.583/(1.2×10⁶×0.05) ≈ 1.5μF
建议使用低ESR的X7R/X5R陶瓷电容,如22μF/50V。
二极管选择
需满足:
- 反向电压 > Vout
- 正向电流 > Iout
- 快速恢复特性
推荐使用肖特基二极管如B340A(40V/3A)。
3. PCB布局与热设计要点
3.1 关键布局原则
- 功率回路最小化:SW引脚→电感→二极管→输出电容→GND→芯片GND
- 反馈网络远离噪声源
- 使用大面积铺铜散热
- 输入输出电容尽量靠近芯片
3.2 热管理考虑
TPS61170在满载时功耗约为: Pdiss ≈ Iout² × Rds(on) × (Vout/Vin) ≈ 0.15²×0.3×(12/5)≈0.16W
虽然功耗不高,但仍需注意:
- 使用足够的铜面积散热(至少2cm²)
- 必要时添加散热过孔
- 避免环境温度超过125℃
4. STM32控制接口实现
4.1 硬件连接方案
- PWM控制:使用TIM1_CH1输出PWM至CTRL引脚
- 电压监测:ADC1_IN1连接FB分压网络中点
- 使能控制:任意GPIO连接EN引脚
- 故障检测:比较器1连接电流检测电阻
4.2 软件控制逻辑
// PWM初始化 void PWM_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructure.TIM_Period = 1000-1; //1kHz PWM TIM_TimeBaseStructure.TIM_Prescaler = 72-1; //1MHz TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; //初始50%占空比 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM1, &TIM_OCInitStructure); TIM_CtrlPWMOutputs(TIM1, ENABLE); TIM_Cmd(TIM1, ENABLE); } // 电压调节函数 void SetOutputVoltage(float targetVolt) { uint16_t adcValue = ADC_Read(ADC_Channel_1); float actualVolt = adcValue * 3.3 / 4096 * (R1+R2)/R2; if(actualVolt < targetVolt - 0.1) { Increase_PWM(); } else if(actualVolt > targetVolt + 0.1) { Decrease_PWM(); } }5. 调试技巧与常见问题解决
5.1 启动失败排查
- 检查EN引脚电平(应>1.5V)
- 测量Vin引脚电压(3-18V)
- 确认电感未饱和(观察SW波形)
- 检查FB分压电阻(中点约1.229V)
5.2 输出电压不稳处理
- 增加补偿网络(RC串联在COMP引脚)
- 检查布局是否合理(特别是反馈走线)
- 确认负载电流未超限
- 尝试降低开关频率(通过PWM调节)
5.3 效率优化建议
- 选择低DCR电感
- 使用低VF肖特基二极管
- 在轻载时启用跳周期模式
- 优化PCB布局减少寄生参数
6. 进阶应用与扩展
6.1 多路输出实现
通过添加电荷泵或变压器绕组,可从单一TPS61170获得正负输出电压。例如:
- 主输出:+24V
- 辅助输出:-12V(通过电荷泵)
6.2 数字调压接口
利用Easyscale协议通过CTRL引脚实现:
- 发送>5μs高脉冲进入编程模式
- 发送16个时钟周期(高>1μs,低>1μs)
- 数据在时钟下降沿采样
6.3 电流模式控制
通过外接电流检测电阻和运放,可实现精确的电流控制:
- 在电感下端串联10-50mΩ检测电阻
- 使用STM32内置运放放大信号
- ADC采样后实现数字闭环控制
在实际项目中,我发现在高电压输出时,二极管的选型尤为关键。曾经使用普通快恢复二极管导致效率低下(仅80%左右),更换为低压降肖特基二极管后效率提升至92%。另外,FB引脚的走线要尽量短,我曾因反馈走线过长导致输出电压出现100mV级的纹波。