基于TPS61170与STM32的高效升压电源设计指南
1. 项目背景与核心器件选型
在工业控制、医疗设备和便携式仪器等领域,经常需要将低电压(如3.3V或5V)转换为更高的工作电压(如12V/24V)。TPS61170作为TI推出的高压升压转换器,配合STM32L151ZD这类低功耗MCU,可以构建高效可靠的电源解决方案。
TPS61170的关键参数特性:
- 输入电压范围:3V-18V
- 输出电压最高可达38V
- 集成1.2A/40V功率MOSFET
- 固定1.2MHz开关频率
- 轻载时采用跳周期模式
- 6引脚2x2mm QFN封装
STM32L151ZD的优势在于:
- 超低功耗特性(运行模式仅170μA/MHz)
- 丰富的外设接口(12位ADC、DAC、比较器等)
- 128KB Flash+16KB RAM存储配置
- 硬件PWM生成能力
2. 硬件电路设计要点
2.1 基本升压拓扑设计
典型应用电路包含以下核心元件:
- 输入电容:建议使用10μF低ESR陶瓷电容(X5R/X7R)
- 功率电感:4.7μH~10μH(如TDK VLS252010ET-4R7M)
- 饱和电流需>1.5A
- DCR尽量小(<100mΩ)
- 输出二极管:肖特基二极管(如SS34)
- 反向耐压>40V
- 正向电流>1A
- 输出电容:22μF陶瓷电容+100μF电解电容组合
关键提示:布局时需将功率回路面积最小化,SW引脚到电感的走线应短而宽,FB分压电阻尽量靠近芯片放置。
2.2 输出电压设置
输出电压由FB引脚的分压电阻决定:
Vout = 1.229V × (1 + R1/R2)推荐R2取10kΩ,则R1计算公式为:
R1 = 10kΩ × (Vout/1.229V - 1)例如需要24V输出时:
R1 = 10k × (24/1.229 - 1) ≈ 184kΩ2.3 STM32控制接口设计
通过STM32的GPIO和PWM实现智能控制:
- EN引脚控制:使用GPIO直接驱动
- 高电平(>1.5V)使能
- 低电平(<0.4V)关闭
- CTRL引脚应用:
- PWM调光:100Hz-1kHz方波
- Easyscale协议:脉冲宽度编码
- 反馈监测:通过ADC检测输出电压
典型连接方式:
// STM32引脚配置示例 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_4; // EN控制 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // PWM配置 TIM_OC_InitTypeDef sConfigOC = {0}; htim3.Instance = TIM3; htim3.Init.Prescaler = 79; // 1MHz时钟 htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 999; // 1kHz PWM HAL_TIM_PWM_Init(&htim3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 500; // 50%占空比 HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);3. 软件控制策略实现
3.1 基本工作流程
- 初始化阶段:
- 配置GPIO、PWM、ADC
- 软启动控制(约1ms延时)
- 运行阶段:
- 电压闭环控制
- 故障检测与保护
- 待机模式:
- 关闭PWM输出
- 进入低功耗状态
3.2 电压闭环控制算法
采用增量式PID算法实现精密调节:
typedef struct { float Kp, Ki, Kd; float Err[3]; float Output; } PID_TypeDef; void PID_Update(PID_TypeDef *pid, float target, float actual) { pid->Err[2] = pid->Err[1]; pid->Err[1] = pid->Err[0]; pid->Err[0] = target - actual; float delta = pid->Kp*(pid->Err[0]-pid->Err[1]) + pid->Ki*pid->Err[0] + pid->Kd*(pid->Err[0]-2*pid->Err[1]+pid->Err[2]); pid->Output += delta; pid->Output = (pid->Output > 1000) ? 1000 : ((pid->Output < 0) ? 0 : pid->Output); __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, (uint32_t)pid->Output); }3.3 保护机制实现
- 过压保护(OVP):
if(ADC_value > OVP_threshold) { HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET); Error_Handler(); }- 过流检测:
- 通过检测输入电流突变
- 配合硬件保护(TPS61170内置1.2A限流)
- 温度监控:
- 使用STM32内部温度传感器
- 或外接NTC电阻
4. 实测性能优化技巧
4.1 效率提升方法
通过实测数据对比不同配置下的效率表现:
| 条件 | 5V→12V@300mA | 5V→24V@150mA |
|---|---|---|
| 普通二极管 | 87% | 84% |
| 肖特基二极管 | 91% | 89% |
| 同步整流方案 | 93% | 91% |
优化建议:
- 选择低VF的肖特基二极管
- 电感DCR控制在50mΩ以内
- 适当增大开关频率(需重新补偿)
4.2 纹波抑制方案
实测纹波组成:
- 开关噪声(高频):20-50mV
- 低频波动:<10mV
改进措施:
- 增加π型滤波(22μH+47μF)
- 优化布局减少寄生电感
- 采用三端电容接地
4.3 典型问题排查
- 启动失败:
- 检查EN引脚电平
- 测量SW引脚波形
- 确认电感未饱和
- 输出电压不稳:
- 检查FB分压电阻
- 确认补偿网络(RC取值)
- 测量输入电源质量
- 过热问题:
- 计算功率损耗(Pd≈(1-η)*Pin)
- 检查散热设计
5. 进阶应用扩展
5.1 多路输出设计
利用TPS61170实现正负电压输出:
- SEPIC拓扑生成+24V
- 电荷泵产生-24V
- 总输出功率需<3W
5.2 数字调压接口
通过Easyscale协议实现:
void Send_Easyscale_Pulse(uint16_t width_us) { HAL_GPIO_WritePin(CTRL_GPIO_Port, CTRL_Pin, GPIO_PIN_SET); HAL_Delay(width_us); HAL_GPIO_WritePin(CTRL_GPIO_Port, CTRL_Pin, GPIO_PIN_RESET); HAL_Delay(100); // 间隔时间 } // 设置输出电压比例(0-100%) void Set_Output_Scale(uint8_t percent) { uint16_t pulse_width = 10 + (percent * 90)/100; // 10-100μs Send_Easyscale_Pulse(pulse_width); }5.3 电池供电优化
针对锂电应用的特殊处理:
- 低压检测(<3.3V时降频)
- 动态效率优化:
if(battery_voltage < 3.6) { // 降低PWM频率 htim3.Init.Prescaler = 159; // 500kHz HAL_TIM_Base_Init(&htim3); }在实际项目中,这种组合方案已经成功应用于:
- 工业HMI的背光驱动
- 便携式医疗设备的传感器供电
- 无人机图传系统的电源模块
调试时建议先用EVM评估板验证设计,再逐步优化参数。特别注意在高电压输出时做好绝缘防护,避免电弧放电损坏器件。
