news 2026/6/9 22:27:53

直接上硬货!最近用STM32F103搞了个数控Buck电源,实测效率干到96%,能通过程序直接调电压,这玩意做出来是真的爽。咱们不整虚的,直接拆开看门道

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接上硬货!最近用STM32F103搞了个数控Buck电源,实测效率干到96%,能通过程序直接调电压,这玩意做出来是真的爽。咱们不整虚的,直接拆开看门道

stm32数控buck同步整流电路 效率可达95%以上 电压电流采样 反馈电路采用软件增量式pi闭环控制,可以实现恒压闭环 驱动电路采用ir2104芯片驱动半桥 输出采样电路通过lm385进行放大反馈稳压 mos管采用nrf540n 可单独通过程序调节电压大小(自己可以编写) 原理图pcb使用立创eda绘制 软件源代码使用Keil5 控制芯片是stm32f103系列

先看看硬件设计(立创EDA真香)。主电路用NRF540N这对MOS管做同步整流,这货的Rds(on)只有44mΩ,实测开关损耗比普通二极管方案低30%不止。驱动部分用IR2104搭的半桥驱动,注意这里有个骚操作——自举电容用了0.1μF陶瓷电容并联10Ω电阻,实测驱动波形上升沿控制在20ns以内。

采样电路是重点,电流采样用0.01Ω锰铜丝配合LM385运放搞了100倍放大。ADC部分代码长这样:

// 电流采样ADC初始化 void ADC1_Init(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5); ADC_Cmd(ADC1, ENABLE); ADC_SoftwareStartConvCmd(ADC1, ENABLE); } // 实际电流计算 float Get_Current(void) { uint16_t adc_val = ADC_GetConversionValue(ADC1); return (adc_val * 3.3 / 4096) * 100; // 运放放大100倍 }

这里有个坑:STM32的ADC采样速率要和开关频率匹配。我们Buck电路用50kHz开关频率,ADC采样周期设成239.5个时钟周期刚好避开PWM干扰。

软件控制才是灵魂。增量式PI算法比位置式更适合实时控制,代码实现也简单:

typedef struct { float Kp; float Ki; float Err[2]; } PI_Controller; float PI_Calculate(PI_Controller *pi, float target, float actual) { float err = target - actual; float delta = pi->Kp*(err - pi->Err[0]) + pi->Ki*err; pi->Err[0] = pi->Err[1]; pi->Err[1] = err; return delta; }

实测这个算法在1ms中断周期下,电压调整时间<50ms。调参秘诀:先用Ki=0调Kp到临界震荡,然后取Kp的1/2,Ki取Kp的1/10。

stm32数控buck同步整流电路 效率可达95%以上 电压电流采样 反馈电路采用软件增量式pi闭环控制,可以实现恒压闭环 驱动电路采用ir2104芯片驱动半桥 输出采样电路通过lm385进行放大反馈稳压 mos管采用nrf540n 可单独通过程序调节电压大小(自己可以编写) 原理图pcb使用立创eda绘制 软件源代码使用Keil5 控制芯片是stm32f103系列

PWM生成是关键操作,TIM1通道1和2配置互补输出:

void PWM_Init(uint16_t arr, uint16_t psc) { TIM_OCInitTypeDef oc; TIM_OCStructInit(&oc); oc.TIM_OCMode = TIM_OCMode_PWM1; oc.TIM_OutputState = ENABLE; oc.TIM_Pulse = arr/2; // 50%占空比初始化 TIM_OC1Init(TIM1, &oc); TIM_OC2Init(TIM1, &oc); TIM_BDTRInitTypeDef bdtr; bdtr.TIM_DeadTime = 0x3F; // 死区时间=1us TIM_BDTRConfig(TIM1, &bdtr); }

重点在死区时间设置,IR2104的典型传播延迟是520ns,这里设置63个时钟周期(按72MHz算约0.875us),实测上下管没有直通现象。

调压功能简单到离谱,主程序里直接改目标电压值就行:

Voltage_Target = 12.0; // 要多少伏直接赋值

当然实际要加个软启动,避免电压突变。通过USART或ADC按键都能实现远程调压,这玩法比传统电位器调节不知道高到哪里去了。

最后说下稳压效果:空载到满载(0-5A)电压波动<0.05V,纹波控制在30mVpp以内。整套系统成本不到50块钱,比淘宝成品电源香太多了。代码已经扔Github,原理图在立创开源平台,欢迎来抄作业!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 1:01:51

【课程设计/毕业设计】基于SSM的常熟非遗数字化管理系统基于ssm的常熟非遗数字化管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/5 4:08:34

hadoop+spark+python房价预测分析系统 大数据房价分析

1、项目介绍 技术栈&#xff1a; Python语言、Flask框架、Echarts可视化、requests爬虫技术、 机器学习决策树算法的房价预测模型、HTML 安居客网站二手房数据安居客二手房数据分析与房价预测项目介绍本项目聚焦安居客二手房数据&#xff0c;以Python为开发核心&#xff0c;整合…

作者头像 李华
网站建设 2026/6/5 5:07:00

hadoop+spark+python商品数据分析推荐系统 商品推荐系统 购物推荐

1、项目介绍 技术栈&#xff1a; Python语言、django框架、MySQL数据库、协同过滤推荐算法、Echarts可视化、HTML 随着大数据技术的发展&#xff0c;越来越多的企业开始将其应用于业务决策和市场分析中。在鞋类行业中&#xff0c;得物平台是一个非常重要的销售渠道&#xff0c…

作者头像 李华