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/10 8:12:17

揭秘:数字X射线平板探测器市场规模突破130.9亿元大关

2025 - 2032全球数字X射线平板探测器市场&#xff1a;规模增长与产业变革 据恒州诚思调研统计&#xff0c;2025年全球数字X射线平板探测器市场规模约130.9亿元&#xff0c;预计未来将持续保持平稳增长态势&#xff0c;到2032年市场规模将接近189.8亿元&#xff0c;未来六年复合…

作者头像 李华
网站建设 2026/6/10 8:19:12

2026版Java 面试八股文(总结最全面的面试题)

作为 Java 程序员&#xff0c;选择学习什么样的技术&#xff1f;什么技术该不该学&#xff1f;去招聘网站上搜一搜、看看岗位要求就十分清楚了&#xff0c;自己具备的技术和能力&#xff0c;直接影响到你工作选择范围和能不能面试成功。 如果想进大厂&#xff0c;那就需要在 Ja…

作者头像 李华
网站建设 2026/6/10 8:16:55

Linux版本的基本概念和主要发行版

我来为您详细介绍Linux的版本概念和主要发行版。 📌 首先需要理解的两个关键概念: 1. Linux内核版本 由Linus Torvalds团队维护的核心系统 版本号格式:主版本.次版本.修订号(如:6.8.1) 所有Linux发行版都使用相同的内核 2. Linux发行版(Distribution) 基于Linux内核…

作者头像 李华
网站建设 2026/6/9 21:16:47

《贫穷的本质:我们为什么摆脱不了贫穷》核心解读

《贫穷的本质&#xff1a;我们为什么摆脱不了贫穷》核心解读《贫穷的本质&#xff1a;我们为什么摆脱不了贫穷》是 2019 年诺贝尔经济学奖得主阿比吉特・班纳吉与埃斯特・迪弗洛的经典著作&#xff0c;基于 15 年对全球 18 个国家和地区贫困人口的实地调研与大规模随机对照实验…

作者头像 李华
网站建设 2026/6/10 9:51:16

Instagram 养号机器人指南(2026):自动化原理、防封技巧与工具推荐

每天刷 Instagram&#xff0c;你是不是也遇到这些问题&#xff1a;潜在客户账号太分散、互动频率难维持、内容发布时间无法规律、私信跟进零散耗时&#xff1f;尤其是做外贸的账号&#xff0c;每天重复的基础操作占掉了大量时间&#xff0c;却很难靠人工长期稳定执行。如果你想…

作者头像 李华