单相编码器电机调速STM32PID控制实现

单相编码器的电机调速,是用 STM32 做运动控制时绕不开的一环。STM32F103RCT6性能还不错,资源也够用,搞定 PWM、编码器反馈这些没什么压力。

核心是PID 控制,用得好,速度调得又稳又快。调占空比改变电机电压,响应也挺灵敏。HAL_TIM_PWM_Start__HAL_TIM_SET_COMPARE这些函数用起来都挺顺手,代码也清爽。

编码器的单号,用定时器捕获就行,算转速不难。只要脉冲频率对上了,控制器就能比较精准地判断电机状态,配合 PID 就稳了。

显示部分用的是OLED,调试的时候挺方便。用I2C拉个ssd1306的库,基本就能跑。设定值、实际值一目了然,开发和测试都省心。

你要是刚好也在搞电机控制,不妨看看这个项目。电机_0_1文件里,电机初始化、编码器读取、PID 算法、PWM 输出,还有 OLED 显示全套都在。适合用来参考,也能直接拓展。

另外还可以看看这些相关代码:PWM 调速实验编码器脉冲数读取这些,配合用更高效。

如果你准备自己撸一个 STM32 的调速项目,建议先把 PID 调法摸清楚,再搞编码器读数。代码可以先照着写,调好了再慢慢优化,稳定性最重要。

zip 文件大小:7.46MB