STM32编码电机闭环PID调节教程。

这次我们来深入一下PID的强化核心。

一.详情了解

1.例子

假设我们有一个电机用5V电池供电,想要让他每分钟500转,一开始电池满电时候,是可以达到要求的,但是当电池容量下降一半时候,我们知道假设电机功率是10W,当电压为2.5V时候电机就只有2.5W了,电压下降一半,功率缩小四分之一,我们转速肯定达不到要求了。所以我们就需要引入一个反馈,来对电机实现闭环控制,当电压波动下降或升高时候,转速就会根据反馈,进行自动调节。

还有就是如果你有两个电机,想让小车直着走,那也是用问题的,因为单机制造工艺不同,他就会歪着走。

2.一般的编码器电机

有两个相位差90°的霍尔传感器,可以输出正交波形,从而对电机进行测速。

比如说这样子,这就是能检测方向的原理,正反时候,A相和B项的波形出现的时机不同。

启动的是定时器的PA8和PA90预分频,最大计数65535,满量程之后我们进行程序编写,我们都了解过单片机的额定时器编码器模式,CNT是计数器,然后ARR是自动重装值,决定你能记录多少个数字。还需要注意编码器线程和计数模式,这些都是偏移量。比如说T1T2计数模式,来一个脉冲会记录两个数字,ab项就会记录四个。就是两个通道同时计数,如果选择T1,就是A计数,选择T2就是B计数。

3.程序编写

即使我们配置完成后也需要进行开启外设,cubemx不会帮我们开启外设。

然后通过串口我们来打印一下。

然后旋转编码器计数器的值就会增加。

然后正传和反转是不一样的。

我们可以开一个10MS的定时器,看看这个时间内记录了多少数。

我们使用定时器3计数。

同时开启中断,因为我们要处理溢出之后的数据。

然后使用hal库独有的,中断回调函数。

为什么不用中断函数呢,因为比如说我们在主函数里面定义了一个变量,想要在中断函数给置1,的话,那么就会保存,中断函数里面会说使用了未定义的变量,所以我们就需要使用到中断回调函数,来进行操作。

之后如果我们定时器->实例对象->==定时器3,也就是定时器3触发的中断,就执行下面的。然后我们以1000hz频率进行记录数据,之后把计数器的值进行清零。

之后就可以看一下转速了。

我们在开启一个定时器用来生产PWM波形。然后我们默认给一个500占空比的波形。我们不能直接用单片机驱动电机因为电流太小了,驱动不起来,我们可以加电机驱动模块,我这里用的是12V的电机所以用的就是L298N驱动模块。

然后对PWM进行使能。

之后可以看到是一个1KHz的占空比的一个信号。

可以看到编码器的计数值是大概16左右。

我们用手给电机一个阻力,电机的值就下降了。

4.闭环控制

控制什么就是什么环,比如我们这个是控制速度的就是速度环,控制电压的就叫电压环。闭环的话就是输入和输出有相互练习,有一个反馈给到输入。

然后就是PID控制函数,我们来调一下PID。

我们先只给P项看一下PID的输出。

之后打印以下PID。

之后我们设置一个想要的转速。

当我们没有开启PID时候先手动转就可以看到PID的偏差和时机速度以及误差。

你可以把想要的速度转换为PWM模式,也可以转化为每分钟转速,这里就转化为PWM相关的。

之后加入一个积分限幅,限制以下输出幅度。

之后蓝色的是目前的速度,绿色是目标值,可以看到目前是23没有达到目标值是因因为PID补偿太小了。

我们调整补偿。

可以看到基本上就可以了。

如果P的值过大,还会产生一个过冲就会有振荡。而且电机会出现异常响动。

I的值就是尽量让蓝色的去逼近绿色的线,消除一个固定的小误差。电机的话这两项就可以了。

相关推荐
云空2 小时前
《基于RK3588+ToF的环境颜色区域位置识别方案研究》
人工智能·嵌入式硬件·机器人
LYFlied2 小时前
【每日算法】LeetCode 79. 单词搜索
前端·算法·leetcode·面试·职场和发展
冬夜戏雪2 小时前
【学习日记】【12.18】【整理了下论文相关的计划】
学习
其美杰布-富贵-李2 小时前
TSTabFusionTransformer 深度学习学习笔记
笔记·深度学习·学习
speop2 小时前
【datawhale组队学习】|TASK02|结构化输入
网络·人工智能·学习
炽烈小老头2 小时前
【每天学习一点算法 2025/12/18】对称二叉树
学习·算法
The️2 小时前
STM32-FreeRTOS操作系统-事件
arm开发·stm32·单片机·嵌入式硬件·mcu·物联网
GUET_一路向前2 小时前
STM32_I2C Timing参数计算方法(I2C speed:120k/240k/400k)
stm32·单片机·嵌入式硬件·iic
蒙奇D索大2 小时前
【数据结构】考研408 | 开放定址法精讲:连续探测的艺术与代价
数据结构·笔记·考研·改行学it