1. 项目背景与核心器件选型
在工业控制、医疗设备和实验室仪器等领域,经常需要将低电压直流电源转换为更高电压的直流电源。传统方案使用分立元件搭建升压电路,不仅设计复杂,而且难以实现精确控制和高效转换。这正是我们选择TPS61170搭配STM32F746VG构建智能升压系统的原因。
TPS61170是德州仪器推出的一款高性能升压转换器IC,具有以下关键特性:
- 输入电压范围:3V至18V
- 输出电压最高可达38V
- 集成1.2A/40V功率MOSFET
- 固定1.2MHz开关频率
- 转换效率高达93%
- 2x2mm QFN小型封装
STM32F746VG则是STMicroelectronics的旗舰级MCU,配备:
- 216MHz Cortex-M7内核
- 1MB Flash+340KB SRAM
- 丰富的外设接口(包括3个12位ADC)
- 硬件浮点运算单元
- 2.4"至10" TFT-LCD控制器
这对组合的优势在于:
- TPS61170负责高效能量转换
- STM32实现精确的电压调节和系统监控
- 两者通过PWM和ADC形成闭环控制
- 整体方案体积小、效率高、响应快
2. 硬件电路设计与关键参数计算
2.1 基础升压电路设计
典型的TPS61170应用电路包含以下核心元件:
- 输入滤波电容(Cin):10μF陶瓷电容(建议X5R/X7R)
- 功率电感(L1):4.7μH至10μH(饱和电流>1.5A)
- 输出二极管(D1):肖特基二极管(如SS34,40V/3A)
- 输出电容(Cout):22μF陶瓷电容(耐压>1.5倍Vout)
- 反馈电阻网络(R1/R2)
升压比计算公式: Vout = Vfb × (1 + R1/R2) 其中Vfb=1.229V(典型值)
例如要实现24V输出: 取R2=10kΩ,则R1需满足: 24 = 1.229 × (1 + R1/10k) → R1≈184kΩ
2.2 电感选型计算
电感值选择需要考虑以下因素:
- 最小电感量防止电流断续: Lmin = (Vin × D) / (ΔIL × fsw) 其中D=1-Vin/Vout,fsw=1.2MHz
以Vin=5V,Vout=24V为例: D = 1-5/24 ≈ 0.79 取ΔIL=0.3A(峰峰值纹波电流) Lmin = (5×0.79)/(0.3×1.2M) ≈ 11μH
- 电感饱和电流需大于峰值开关电流: Ipeak = Iout/(1-D) + ΔIL/2
2.3 PCB布局要点
高频开关电路的布局直接影响性能:
- 功率回路最小化:SW引脚→电感→二极管→输出电容→GND
- 使用大面积铺地,但避免形成天线环路
- 反馈走线远离噪声源,必要时加RC滤波
- 芯片底部散热焊盘必须良好焊接
3. STM32控制方案实现
3.1 硬件接口设计
STM32与TPS61170的典型连接方式:
- PWM输出(如TIM1_CH1) → CTRL引脚
- ADC输入(如PA0) → 分压后的输出电压检测
- GPIO → EN使能引脚
- UART/USB → 调试和参数设置
电压检测电路示例: 使用1%精度电阻分压,将38V满量程分压至3.3V以内: Rtop=100kΩ, Rbot=10kΩ → Vadc=38V×10k/(100k+10k)≈3.45V 需在ADC输入端加100nF滤波电容
3.2 控制算法实现
数字闭环控制流程:
- ADC采样输出电压(建议10ms周期)
- 计算误差:Verror = Vtarget - Vmeasured
- 通过PID算法调整PWM占空比
- 更新TIM1的CCR寄存器值
简易PID实现代码示例:
// PID参数 float Kp = 0.5, Ki = 0.01, Kd = 0.1; float error, last_error, integral; void PID_Update(float setpoint, float measured) { error = setpoint - measured; integral += error * 0.01; // 10ms周期 float derivative = (error - last_error) / 0.01; float output = Kp*error + Ki*integral + Kd*derivative; output = constrain(output, 0, 1); // 限制0-100% TIM1->CCR1 = (uint32_t)(output * TIM1->ARR); last_error = error; }3.3 保护功能实现
关键保护措施:
- 过压保护:ADC检测到Vout超限时立即关闭EN
- 过流保护:通过采样电阻+ADC检测输入电流
- 温度监控:使用STM32内部温度传感器
- 软启动:PWM占空比从0%逐步增加到目标值
4. 实测性能优化与问题排查
4.1 效率优化技巧
实测中发现影响效率的主要因素:
- 电感DCR:选择低DCR电感(如<50mΩ)
- 二极管正向压降:优先选用低压降肖特基
- 开关损耗:确保PCB布局紧凑
- 轻载效率:利用芯片的跳周期模式
实测数据对比:
| 条件 | 效率 |
|---|---|
| Vin=5V,Vout=12V@300mA | 91% |
| Vin=12V,Vout=24V@150mA | 89% |
| Vin=3.3V,Vout=9V@100mA | 85% |
4.2 常见问题与解决方案
问题1:输出电压不稳定
- 检查反馈电阻精度(建议1%)
- 增加FB引脚旁路电容(如1nF)
- 确认电感未饱和
问题2:芯片过热
- 检查负载电流是否超限
- 测量SW节点波形确认开关正常
- 加强PCB散热设计
问题3:启动失败
- 确认EN引脚电平正确
- 检查输入电压>3V
- 测量软启动过程是否正常
问题4:高频噪声大
- 优化输入/输出电容布局
- 尝试不同电感值(4.7μH-10μH)
- 在二极管两端加RC缓冲电路
5. 进阶应用与功能扩展
5.1 多路输出设计
利用TPS61170的Easyscale协议,通过单个CTRL引脚实现:
- 输出电压动态调整
- 多级电压序列控制
- 故障状态下的安全电压回退
典型应用场景:
- 实验室可编程电源
- 液晶屏偏置电压生成
- 压电驱动器控制
5.2 电池供电优化
针对电池应用的特殊处理:
- 低电量检测:监控Vin电压
- 休眠模式:关闭不必要的外设
- 动态调压:根据电量调整输出电压
- 库仑计:估算剩余电量
5.3 上位机监控系统
通过STM32的USB或UART接口:
- 实时传输电压/电流数据
- 接收PC端的参数设置
- 存储运行日志到Flash
- 实现固件在线升级
Python监控示例代码:
import serial import matplotlib.pyplot as plt ser = serial.Serial('COM3', 115200) voltages = [] while True: data = ser.readline().decode().strip() if data.startswith('VOUT:'): v = float(data.split(':')[1]) voltages.append(v) plt.plot(voltages) plt.pause(0.01)在实际项目中,这种组合方案已经成功应用于:
- 便携式医疗设备的24V电机驱动
- 工业传感器的12V隔离电源
- 实验室仪器的可调高压源
- 无人机图传系统的18V供电
调试过程中最深刻的体会是:高频开关电路的PCB布局几乎和电路设计同等重要。曾经因为反馈走线过长导致输出电压波动±5%,重新优化布局后稳定在±1%以内。另一个关键点是电感选型 - 最初使用的6.8μH电感在高温下饱和电流下降,导致效率骤降,更换为更高规格器件后问题解决。