STM32F103基于PID的ADC/DAC闭环控制实现
基于 STM32F103 的 PID 控制项目,蛮适合刚入门或者想深入了解 ADC、DAC 结合应用的朋友。
STM32F103 的 ADC 精度还不错,配合内部 DAC 搞闭环控制,效率蛮高。用它来跑个温控或者电机调速都挺稳。
PID 算法这块,逻辑清晰:先用adc_read()
获取实时值,再喂给pid_update()
算出控制量,用dac_write()
输出。整体跑下来,响应也快,代码也简单。
调参方面,可以用 Ziegler-Nichols 那套整,Kp/Ki/Kd设好了,效果立马见效。不过注意 ADC 采样频率别太低,不然延迟会拉垮系统表现。
代码部分已经封装好了函数,结构清晰。比如:
float pid_update(float setpoint, float measured_value);
uint16_t adc_read(uint8_t channel);
void dac_write(uint8_t channel, uint16_t value);
如果你项目里正好要用 STM32 搞闭环控制,尤其又不想接外设模拟模块,这套代码资源可以试试,蛮省事。
code.zip
预估大小:62个文件
code
文件夹
adc_uvopt.bak
10KB
config
文件夹
config.h
603B
JLink Regs CM3.txt
497B
adc.uvgui.aureole
129KB
driver
文件夹
nvic.c
1KB
rcc.c
3KB
dac.c
2KB
621.06KB
文件大小:
评论区