电源-手把手教你基于STM32的BUCK电路高端电感电流闭环控制(同步整流+高端电流采样)
基于 STM32F103C8T6 的同步整流 BUCK 降压电源,输出电压 10V 可调,带电压/电流双采样、增量式 PI 闭环、过压过流保护与继电器切断。这个同学主要拿来验证 BUCK 拓扑和高端电流采样方案,硬件原理图 + 软件源码交付。
一、需求与指标
客户给的设计要求很清晰:
- 主控:STM32F103C8T6
- 拓扑:BUCK 变换器,同步整流
- 闭环:增量式 PI 追踪输出电压,按键步进调节目标电压
- 采样:输出电压 + 电感电流双通道采样
- 频率:PWM 开关频率 20kHz,电流采样频率 50kHz
- 保护:输出过压(13V)、过流(3A)时继电器切断
- 交互:OLED 显示、4 个按键、串口输出电流波形
二、硬件方案
2.1 供电与主控
- 输入采用 DC005-2.5 座子,额定 12V 输入
- 经 LM2596S-5.0 先降到 5V,给 MOSFET 驱动、继电器、运放等供电
- 主控板为 STM32F103C8T6(原理图标注为 STM32F401RCT6,实际代码基于 F103 标准库)
2.2 同步整流 BUCK 主电路
功率级采用 IRF3205PBF 大电流 N-MOS,上下管互补驱动,电感 1mH,输出电容 220uF×2 + 100nF。同步整流相比二极管续流,低压大电流时效率更高、发热更低。
驱动芯片选用 IR2104S,半桥驱动器,带自举电容和死区控制。MCU 通过 PA8 输出 PWM 到 IR2104S 的 IN 脚,IR2104S 输出 HO/LO 分别驱动上、下管。
2.3 高端电流采样
电感电流采用 INA282AIDR 电流检测放大器做高端采样,采样电阻 10mΩ,差分放大后送 MCU 的 ADC。INA282 固定增益 50V/V,共模范围宽,适合 BUCK 高侧电流检测。
输出电压则通过电阻分压 + 运放缓冲后送 ADC。
2.4 控制与保护
- 按键:ADD / REDUCE / SET / MODE(CHOICE),对应 PB12~PB15
- 继电器:过压/过流时切断主回路,由 PA 口控制
- 串口:板载 CH340C,用于输出电流波形,波特率 921600
- OLED:IIC 接口,用于显示电压、电流、目标值
三、软件设计
3.1 定时器与 PWM
TIM1 产生 20kHz PWM,ARR=3599,PSC=0,对应 72MHz / 3600 = 20kHz。PWM 输出到 PA8,带更新中断,每 20 个周期(即 1ms)执行一次 PID 运算。
|
3.2 ADC 与 DMA
ADC1 双通道循环采样,通道 0(PA0)采集输出电压,通道 1(PA1)采集电感电流,DMA 搬运到数组 ADC_ConvertedValue[2],不占用 CPU。
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5); |
3.3 增量式 PI 闭环
PID 采用位置累加 + 增量输出结构,每 1ms 调节一次 PWM 占空比:
float buck_pid(float NOW, float Target, float SIGNLE_ADD_NUM_LIMIT, |
主循环中,按下启动键后使能 PID,目标电压 Target_V 默认 10V,ADD/REDUCE 键以 0.1V 步进调节。
3.4 保护逻辑
当输出电压超过 13V 或电流超过 3A 时,立即关闭 PWM、断开继电器,并回到待机状态,需重新按键启动。
if((DC_V > V_yuzhi) || (DC_I > I_yuzhi)) |
四、调试要点
- 死区时间:IR2104S 配置死区约 40ns,避免上下管直通
- 采样同步:电流采样频率 50kHz 高于 PWM 20kHz,可在 PWM 周期内多次采样取平均
- PID 参数:本项目
kp=0.01, ki=1,输出限幅 0~3599,响应平稳无明显超调 - 自举电容:IR2104S 的 C49(2.2uF)要给足,否则上管驱动不足
五、交付资料
- 完整 Keil 工程源码(STM32F103C8T6 标准库)
- 原理图 PDF
- 测试视频
- 元器件 BOM
有类似 BUCK / BOOST / 双向 DCDC 电源定制需求的,可以评论区留言或点侧边栏“资料获取”进群交流。
通过网盘分享的文件:嵌入式-基于STM32的BUCK电路电感电流闭环控制
链接: https://pan.baidu.com/s/1PtGq_FF8J55bXXR6dZ3Nzw?pwd=ujcn 提取码: ujcn













