当前位置: 首页 > news >正文

基于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为例:

  1. 电感选择: 临界电感值Lmin = (Vin × D) / (ΔIL × fsw) 取ΔIL为30%额定电流(0.45A),D=0.5: Lmin = (12×0.5)/(0.45×1.2M) ≈ 11μH 选用15μH/1.5A饱和电流的屏蔽电感(如TDK VLS201510ET-150M)

  2. 输出电容: 为保持输出电压纹波<1%,需: Cout ≥ Iout × D / (fsw × ΔVout) = 0.15×0.5/(1.2M×0.24) ≈ 0.26μF 实际选用10μF/50V X7R陶瓷电容(如Murata GRM32ER71H106KA12L)

  3. 二极管选择: 需满足反向电压>38V,正向电流>1.2A 选用肖特基二极管SS34(40V/3A)

2.3 PCB布局要点

  • 功率回路(输入电容-电感-开关管-地)路径尽量短
  • FB分压电阻靠近芯片放置,走线避免噪声耦合
  • 使用大面积地平面,功率地和信号地单点连接
  • 芯片底部散热焊盘必须良好焊接

3. STM32控制程序设计

3.1 PWM调压实现

TPS61170的CTRL引脚支持两种调压方式:

  1. Easyscale数字接口:通过特定脉冲序列调整FB基准电压
  2. 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 基础测试项目

  1. 启动特性测试

    • 输入12V,测量输出电压建立时间
    • 观察软启动过程是否平滑(约1ms)
  2. 负载调整率测试

    • 空载至满载(150mA)阶跃变化
    • 记录输出电压波动应<±2%
  3. 效率测量

    • 使用四线法测量输入/输出功率
    • 典型效率曲线应>85%(12V→24V)

4.2 常见问题解决

  1. 输出电压振荡

    • 检查补偿网络(RC串联在COMP引脚)
    • 适当增加输出电容ESR(可并联1Ω电阻)
  2. 轻载效率低

    • 确认芯片进入skip模式
    • 减小电感值(但需保证重载连续导通)
  3. EMI超标

    • 在开关节点添加1nF-100Ω snubber电路
    • 使用三明治绕法电感

4.3 进阶功能扩展

  1. 多级输出电压

    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; }
  2. 故障保护机制

    • 过压保护:ADC检测到Vout超限时关闭PWM
    • 过流保护:检测输入电流(通过采样电阻+ADC)
  3. 通信接口

    void UART_CommandHandler(char* cmd) { if(strncmp(cmd, "SET ", 4) == 0) { uint16_t voltage = atoi(cmd+4); SetOutputVoltage(voltage); } }

5. 实际应用案例与设计验证

在某工业传感器供电项目中,该系统实现了以下性能指标:

  • 输入范围:9-18VDC
  • 输出精度:24V±1%(全温度范围)
  • 转换效率:89%@12V输入/150mA负载
  • 纹波噪声:<50mVpp

关键改进措施:

  1. 在FB引脚添加1nF滤波电容,抑制高频噪声
  2. 使用开尔文连接法测量输出电压
  3. 高温环境下增加散热铜箔面积

长期运行测试数据表明:

  • 连续工作1000小时输出电压漂移<0.5%
  • 负载瞬态响应时间<200μs(50%-100%阶跃)
  • 环境温度-20℃~+85℃范围内工作稳定

对于需要更高电压的应用,可采用级联方案:第一级升压至24V,第二级再升至48V。此时需注意:

  • 级间添加LC滤波,降低纹波累积
  • 合理分配两级转换比,优化整体效率
  • 采用隔离反馈方案,避免地回路干扰
http://www.jsqmd.com/news/1172957/

相关文章:

  • Claude Cowork跨平台扩展:从单次对话到持续工作流的AI协作革命
  • Selenium 4.16.0 与 ChromeDriver 129 集成实战:解决3类常见兼容性问题
  • 武汉科谷技工学校2026年热门专业一览 - 湖北找学校
  • 贪心算法 3 大经典问题解析:区间调度、Huffman 编码与 Prim 算法正确性证明
  • POCO C++库实战指南:从入门到构建企业级网络应用
  • 宜宾黄金回收哪家靠谱?2026本地人实测避坑问答全攻略 - 小城生活闲谈
  • 第19篇:显微镜像素比例校准 — 测量精度的基石
  • 爬取知乎高赞回答:按点赞数筛选“Python学习干货”,自动保存为Markdown文档
  • C++集成本地大模型实战:基于OpenAI协议与Ollama的AI应用开发
  • 日德兰海战:大舰巨炮时代的巅峰对决与海战形态的永久变革
  • 第一个完整爬虫项目实战——从需求分析到部署运行的完整项目
  • Meta Muse Image与Muse Video:具代理能力的AI媒体生成模型解析
  • 银豹新版外卖平台管理 2025:3步完成美团/饿了么门店授权与商品映射
  • 2026菏泽防水补漏公司口碑推荐:卫生间免砸砖、外墙、地下室、楼顶渗漏(7月) - 防水企业百科
  • 锂电池组管理系统的BQ25887与PIC18F97J94设计实践
  • 7周掌握数据分析全流程:Excel、SQL、Python、Power BI与数据思维
  • Unity资源逆向提取实战:AssetRipper深度指南与问题排查
  • 用 Codex Sites 做一个真正调用 QVeris 的演示网站
  • Fedora 40 源码编译与实战:Sogou C++ Workflow 异步网络框架指南
  • PHP反序列化漏洞与POP链构造:从原理到实战攻防
  • HBase 2.4.11 与 Redis 5.0.5 性能实测:单节点10万次学生成绩写入耗时对比
  • 沙河市2026年本地黄金回收+白银回收+铂金回收实力门店TOP5排行榜 K金+金条+银条回收及电话地址推荐 - 大熊猫898989
  • Python爬虫实战:爬取BOSS直聘岗位数据,按薪资排序+去重,附可视化分析
  • 寄大件怕被坑?这份收费标准明细让你少花一半冤枉钱 - 快递物流资讯
  • SAP-PP CA61 查询工艺路线修改记录:3步定位字段级变更(附CA60对比)
  • 工业信号干扰防护与PIC18F26K22硬件设计实践
  • UE5角色无法落地问题排查:从物理碰撞到动画根运动的系统化解决方案
  • TB67H480FNG与STM32F100ZE电机控制方案解析
  • 我必须找到一个能出国的软件------因为app很可能要上架google
  • DriveTransformer:首个不依赖BEV投影的端到端自动驾驶架构