基于STM32与TPS61170的高效DC-DC升压系统设计 📅 2026/7/12 11:25:04 1. 项目背景与核心器件选型在工业控制、医疗设备和实验室仪器等领域经常需要将低压直流电源转换为高压直流电源。传统方案采用分立元件搭建存在效率低、体积大、稳定性差等问题。本项目采用TI的TPS61170升压转换器与ST的STM32F745ZG微控制器组合构建高效可靠的DC-DC升压系统。TPS61170是一款集成1.2A开关管的单片升压转换器具有以下突出特性输入电压范围3-18V输出电压最高可达38V固定1.2MHz开关频率允许使用小型电感和陶瓷电容集成93%占空比的功率MOSFET支持轻载时的跳周期模式(Skip Mode)提高效率6引脚2x2mm QFN封装节省空间STM32F745ZG作为主控芯片的优势在于带FPU的216MHz Cortex-M7内核丰富的定时器资源(PWM生成)1MB Flash320KB RAM多种通信接口(SPI/I2C/USART)内置12位ADC用于电压监测2. 硬件电路设计详解2.1 升压转换器核心电路TPS61170的典型应用电路如图1所示。关键设计参数计算如下输出电压设定 Vout Vref × (1 R1/R2) 其中Vref1.229V选取R210kΩ则R1(Vout/1.229-1)×10k 例如需要24V输出时R1(24/1.229-1)×10k≈184kΩ电感选型计算 电感电流纹波通常取最大开关电流的20%-40% ΔIL (Vin × D)/(L × fsw) 其中D1-Vin/Voutfsw1.2MHz 以Vin5V,Vout24V为例 D1-5/24≈0.79 取ΔIL0.3A则 L(5×0.79)/(0.3×1.2e6)≈11μH输入电容选择 输入电容需满足 Cin Iout × D/(fsw × ΔVin) 假设允许输入纹波ΔVin50mV Cin 0.3×0.79/(1.2e6×0.05)≈3.95μF 实际选用10μF陶瓷电容2.2 STM32接口电路设计STM32与TPS61170的硬件连接主要包括PWM输出使用TIM1_CH1连接CTRL引脚ADC输入配置PA0为ADC1_IN0监测输出电压GPIO控制PG13连接EN引脚实现使能控制调试接口USART1连接PC串口调试特别注意PWM频率建议设置为1kHz-10kHzADC采样率需与PWM周期同步EN引脚需加10k上拉电阻3. 软件控制策略实现3.1 基础PWM调压方案通过改变PWM占空比调节输出电压是最直接的控制方式// PWM初始化代码 TIM_HandleTypeDef htim1; TIM_OC_InitTypeDef sConfigOC; htim1.Instance TIM1; htim1.Init.Prescaler 215; // 216MHz/(2151)1MHz htim1.Init.CounterMode TIM_COUNTERMODE_UP; htim1.Init.Period 999; // 1MHz/10001kHz PWM HAL_TIM_PWM_Init(htim1); sConfigOC.OCMode TIM_OCMODE_PWM1; sConfigOC.Pulse 500; // 初始50%占空比 sConfigOC.OCPolarity TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1);3.2 闭环电压控制算法采用PID算法实现精确电压调节#define KP 0.5 #define KI 0.01 #define KD 0.1 float pid_control(float target, float actual) { static float integral 0; static float prev_error 0; float error target - actual; integral error; float derivative error - prev_error; prev_error error; return KP*error KI*integral KD*derivative; } void adjust_voltage(float target) { float adc_value read_adc(); float actual_voltage adc_value * 3.3 / 4096 * (18410)/10; // 分压比计算 float adjust pid_control(target, actual_voltage); uint16_t new_pulse __HAL_TIM_GET_COMPARE(htim1, TIM_CHANNEL_1); new_pulse (uint16_t)adjust; new_pulse (new_pulse 950) ? 950 : (new_pulse 50) ? 50 : new_pulse; __HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, new_pulse); }3.3 保护功能实现过压保护if(actual_voltage target * 1.1) { // 超过10% HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET); // 关闭EN error_handler(); }软启动实现void soft_start(float target, uint16_t steps) { uint16_t pulse 50; // 初始5% __HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, pulse); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET); for(int i0; isteps; i) { pulse (950-50)/steps; __HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, pulse); HAL_Delay(10); } }4. 实测性能与优化建议4.1 效率测试数据在不同输入输出电压组合下的实测效率Vin(V)Vout(V)Iout(mA)效率(%)512100895245085122410092123650884.2 常见问题解决方案输出电压振荡检查FB引脚走线需远离电感等噪声源在FB引脚添加100pF-1nF的滤波电容调整PID参数降低KP增加KI轻载时效率低启用Skip ModeCTRL引脚接高电平输出端并联100kΩ假负载芯片过热检查电感饱和电流是否足够加强PCB散热设计增加散热过孔降低开关频率(通过外部时钟同步)4.3 PCB布局要点功率回路最小化输入电容→电感→TPS61170→GND的环路面积要小使用短而宽的走线(至少20mil)敏感信号处理FB引脚走线远离功率元件CTRL信号加33Ω串联电阻防振铃散热设计芯片底部焊盘必须良好焊接在电源层添加散热过孔阵列5. 进阶应用扩展5.1 多级升压方案对于需要更高电压的应用可采用两级升压架构第一级TPS61170升压至24V第二级MOSFET变压器推挽电路STM32可统一控制两级电路实现软启动同步。5.2 电池供电优化针对电池供电场景的特殊优化动态电压调节根据电池电量降低输出电压实现方法float get_battery_voltage() { // 读取电池电压ADC值 return adc_value * 3.3 / 4096 * 2; // 假设分压比1:1 } void dynamic_adjust() { float bat_voltage get_battery_voltage(); if(bat_voltage 3.3) { // 低电量模式 adjust_voltage(18.0); // 降额输出 } else { adjust_voltage(24.0); } }低功耗模式空闲时关闭PWM进入Skip Mode定期唤醒检测负载需求5.3 数字通信接口通过STM32的USART或I2C接口实现输出电压远程设置工作状态查询故障日志上传示例协议帧格式[HEAD][CMD][LEN][DATA][CRC] HEAD: 0xAA CMD: 0x01 - 设置电压 0x02 - 读取状态 DATA: 对于0x01命令2字节电压值(单位0.1V) 对于0x02命令1字节状态码