HAL库STM32驱动电机

    • PID

首先想要驱动电机按照我们所前往的方向、所需要的速度旋转,少不得的就是PID算法。

我在这次编写代码的过程中所运动到的是串级PID:外环为位置环、内环则是速度环。

首先是PID的初始化,外环的位置环,因为运用到的是位置PID,位置PID在Integral项运动的是误差的积分,所以需要抗饱和,在此处加上了一个最值限幅,两种方式的PID在最后的输出处我都用上了限幅,防止炸电机。(为了代码的美观性,我也是在开头define了一个比例系数[狗头])

下面就是PID的一个计算过程,也是非常的常见,PID最艰难的并不是什么编写代码什么的,而是和卡尔曼滤波等一样的调参[哭泣]

    • 编码器

下面就是通过电机的编码器,来读出电机的一些基本属性。博主在这里并没有直接运用编码器,而是通过捕获电机的高低电平变化来计算出高电平时间,然后通过IO口读取编码器B相的电平状态来判断毛刺,避免误差,因为博主编写的是小车四个轮子即四个电机的代码,所以在此处就放上其中一个电机的代码以作参考,首先是一些参数的定义

然后是电机的初始化

最后就是关于电机的代码,博主在最后计算出来的高电平时间采用了一个平均值的计算,所以不可避免地导致最后在VOFA上数值波形的滞后性,大家可以按照自己的实际情况进行取舍

这篇文章也存在着许多的不足,希望读者可以多加改正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值