基于STM32与TPS61170的高效可编程DC-DC升压转换器设计
1. 项目背景与核心器件选型在工业控制、医疗设备和实验室仪器等领域经常需要将低电压直流电源转换为高电压直流电源。传统方案采用分立元件搭建存在效率低、体积大、稳定性差等问题。本项目采用TI的TPS61170升压转换器与ST的STM32F070RB微控制器组合构建一个高效、可编程的高压DC-DC转换系统。TPS61170是一款集成1.2A开关管的单片升压转换器具有以下突出特性输入电压范围3-18V输出电压最高可达38V固定1.2MHz开关频率允许使用小型电感和陶瓷电容集成软启动、过流保护和热关断功能采用2x2mm QFN封装节省PCB空间STM32F070RB作为控制核心其优势在于48MHz Cortex-M0内核满足实时控制需求内置12位ADC可用于输出电压采样多路PWM输出适合驱动TPS61170的CTRL引脚丰富的通信接口(I2C/SPI/UART)便于系统集成2. 硬件电路设计与关键参数计算2.1 升压拓扑基础原理升压转换器(Boost Converter)通过开关管周期性储能/释能实现电压提升。当开关管导通时电感储能关断时电感电压与输入电压叠加通过二极管向输出电容充电。输出电压由占空比D决定 Vout Vin / (1 - D)TPS61170采用峰值电流模式控制相比电压模式具有更好的瞬态响应和内在过流保护能力。2.2 外围元件选型计算以输入12V升压至24V/150mA为例电感选择 临界电感值Lmin (Vin × D) / (ΔIL × fsw) 取ΔIL为30%额定电流(0.45A)D0.5 Lmin (12×0.5)/(0.45×1.2M) ≈ 11μH 选用15μH/1.5A饱和电流的屏蔽电感(如TDK VLS201510ET-150M)输出电容 为保持输出电压纹波1%需 Cout ≥ Iout × D / (fsw × ΔVout) 0.15×0.5/(1.2M×0.24) ≈ 0.26μF 实际选用10μF/50V X7R陶瓷电容(如Murata GRM32ER71H106KA12L)二极管选择 需满足反向电压38V正向电流1.2A 选用肖特基二极管SS34(40V/3A)2.3 PCB布局要点功率回路(输入电容-电感-开关管-地)路径尽量短FB分压电阻靠近芯片放置走线避免噪声耦合使用大面积地平面功率地和信号地单点连接芯片底部散热焊盘必须良好焊接3. STM32控制程序设计3.1 PWM调压实现TPS61170的CTRL引脚支持两种调压方式Easyscale数字接口通过特定脉冲序列调整FB基准电压PWM模拟调压PWM占空比线性调节输出电压本设计采用PWM方式STM32配置如下// PWM配置(TIM3 CH1, 10kHz) TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_OCInitTypeDef TIM_OCInitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStruct.TIM_Prescaler 48-1; // 1MHz TIM_TimeBaseStruct.TIM_CounterMode TIM_CounterMode_Up; TIM_TimeBaseStruct.TIM_Period 100-1; // 10kHz TIM_TimeBaseStruct.TIM_ClockDivision TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3, TIM_TimeBaseStruct); TIM_OCInitStruct.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStruct.TIM_OutputState TIM_OutputState_Enable; TIM_OCInitStruct.TIM_Pulse 50; // 初始50%占空比 TIM_OCInitStruct.TIM_OCPolarity TIM_OCPolarity_High; TIM_OC1Init(TIM3, TIM_OCInitStruct); TIM_Cmd(TIM3, ENABLE); TIM_CtrlPWMOutputs(TIM3, ENABLE);3.2 电压闭环控制通过ADC采样输出电压实现闭环调节#define VOUT_TARGET 2400 // 24.00V #define KP 0.5 #define KI 0.01 int32_t error_sum 0; void ADC_IRQHandler(void) { static uint16_t adc_value; if(ADC_GetITStatus(ADC1, ADC_IT_EOC)) { adc_value ADC_GetConversionValue(ADC1); float vout adc_value * 3.3 / 4096 * 11; // 分压比1:10 int32_t error VOUT_TARGET - (int32_t)(vout*100); error_sum error; int32_t pwm_val 50 KP*error KI*error_sum; pwm_val (pwm_val 0) ? 0 : (pwm_val 90) ? 90 : pwm_val; TIM3-CCR1 pwm_val; } ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); }4. 系统测试与性能优化4.1 基础测试项目启动特性测试输入12V测量输出电压建立时间观察软启动过程是否平滑(约1ms)负载调整率测试空载至满载(150mA)阶跃变化记录输出电压波动应±2%效率测量使用四线法测量输入/输出功率典型效率曲线应85%(12V→24V)4.2 常见问题解决输出电压振荡检查补偿网络(RC串联在COMP引脚)适当增加输出电容ESR(可并联1Ω电阻)轻载效率低确认芯片进入skip模式减小电感值(但需保证重载连续导通)EMI超标在开关节点添加1nF-100Ω snubber电路使用三明治绕法电感4.3 进阶功能扩展多级输出电压void SetOutputVoltage(uint16_t mv) { float ratio (mv / 1000.0) / 24.0 * 10; // 分压比校准 uint16_t pwm (uint16_t)(ratio * 100); TIM3-CCR1 (pwm 90) ? 90 : pwm; }故障保护机制过压保护ADC检测到Vout超限时关闭PWM过流保护检测输入电流(通过采样电阻ADC)通信接口void UART_CommandHandler(char* cmd) { if(strncmp(cmd, SET , 4) 0) { uint16_t voltage atoi(cmd4); SetOutputVoltage(voltage); } }5. 实际应用案例与设计验证在某工业传感器供电项目中该系统实现了以下性能指标输入范围9-18VDC输出精度24V±1%(全温度范围)转换效率89%12V输入/150mA负载纹波噪声50mVpp关键改进措施在FB引脚添加1nF滤波电容抑制高频噪声使用开尔文连接法测量输出电压高温环境下增加散热铜箔面积长期运行测试数据表明连续工作1000小时输出电压漂移0.5%负载瞬态响应时间200μs(50%-100%阶跃)环境温度-20℃~85℃范围内工作稳定对于需要更高电压的应用可采用级联方案第一级升压至24V第二级再升至48V。此时需注意级间添加LC滤波降低纹波累积合理分配两级转换比优化整体效率采用隔离反馈方案避免地回路干扰