STM32机器人控制开发教程No.2 霍尔编码器电机测速以及增量式PID控制(基于HAL库)

      最后更新:2022-07-22 15:44:34 手机定位技术交流文章

      01 前言

      在这个课程中使用的机器人控制面板有四个与编码器的电子接口,4个舵机接口,串行通信接口、SWD下载调试接口、导航远程控制接口、USB5V输出接口和方便的40PIN接口直接连接到Treeberry分支等。板载资源丰富,方便调试!它可以控制两轮、四轮差动,AKM可以转动机器人/汽车。

      板上的电路接口:

      机器人车的动力发展-测量汽车的速度

      在上一篇文章《 STM32机器人控制开发 Tutorial No.1驱动电机(基于 HAL库) 》中介绍了关于如何使用NANO小车上的机器人控制板控制减速电机完成前进、后退和转向等基础功能,如果你需要知道如何实时测量汽车的速度?在这个章节里,你会学习如何使用纳诺驾驶板测量小汽车的速度!

      02STM32和编码器速度测量

      准确获取车辆速度信息对控制系统具有关键的影响.编码器是一个转动传感器,将角速度或角度转换为数字脉冲。用户可以通过编码器来测量机器的速度.本文主要介绍了STM32与编码机的结合方法。详细介绍了具体的编码器原理.

      在这个方程中使用的电动机是具有孔编码器的刹车电动机,它们由三个部分组成:刹车电动机、电动机和孔编码器。

      孔编码器的工作原理:通过电磁转换的孔编码器,将机械位移转化为脉冲信号,输出两相A和B方波信号,A和B两相脉冲信号相差90°,通过在指定的时间检测脉冲数,和A和B相脉冲信号的相对位置,可以得到编码器的值及其运动方向.

      那么,我们如何测量两个信号之间的脉冲数和相位关系?

      STM32的计时器功能强大,有些计时器有编码模式,上述问题是可以解决的!通过STM32计时器的编码模式可以处理输入A、B信任数。并且可以设置STM32的编码模式,以便同时计数TI1和TI2信号的脉冲,即四倍频!检测的准确性可以提高.通过检测TI1和TI2之间的相关系,计算器可以实现上下计算,它能检测它的运动方向。

      根据本文使用的减压器的参数,该电动机是11线孔编码减速机,减速比为1:30,也就是说,一个旋转圈可以输出11*30=330脉冲,经过STM32的四倍频率后,从电动机的转动中得到的脉冲数为330*4=1320,通过中断计时器,将速度采样周期设置为50ms,也就是说,每50ms都会读出计时器中的计数值。要得到最终的速度,我们还需要考虑轮胎的尺寸,根据纳诺小型车轮胎直径为65mm,因此圆C的长度是3.14*6.5:20.41厘米。参考以上参数,然后你可以计算汽车的速度。根据速度测量原理,设置在采样周期中传递的脉冲数值为N,旋转圆的电动机所获得的脉冲数为1320,圆圈在20公里.41厘米的距离上旋转。然后得到脉冲N运动的距离S=(0),2041*N/1320),除指定的采样周期时间外,可获得运动速度,完整的计算公式如下:

      03STM32CubeMX配置和速度驱动程序代码

      如何创建工程和系统配置,请参阅前文STM32机器人控制开发 Tutorial No.1驱动电机(基于 HAL库),本文主要介绍编码器相关的计时器的配置!


      根据纳米驱动板的原理图,在与STM32相符的IO接口上找到双向电动机的相应的四向编码接口,并为模式配置找到相应的计时器。 如下图所示,使用两个电路的编码器分别与计时器2和3相符。

      在STM32CubeMX中找到计时器2和计时器3,进行模式配置。下面是Timer2的一个例子,时间表3只能以同样的方式配置。选择计时器作为编码器模式,设置为不分频,最大数为65535,使能自动重装载,然后选择TI1和TI2的输入,实现四倍频效果。

      配置完定时器2和定时器3后,需要再使用一个定时器,利用其产生50ms中断来读取当前的小车速度值,本次例程中采用定时器6产生中断。

      周期为50ms,计算方法为:T=(arr+1)*(psc+1)/Tclk

      当然,不要忘记了电机驱动的配置,毕竟还是得先动起来才能更好的检验其测速功能,电机的相关配置和驱动具体可参考上一篇文章。

      完成配置后,由STM32CubeMX自动生成初始化代码,选择合适的编译器打开当前功能,进行驱动功能的程序开发。以下主要对编码器测速的相关代码进行解释,其余具体代码可参考例程文件。

      该程序被下载到STM32机器人控制板上,并通过串行接口与高级机器通信。串行调试助理可以用于观察车辆在不同PWM值的运动速度。

      下面的图显示了汽车在PWM信号占空比的10%时的速度:

      当输出占PWM信号的90%时,汽车的速度如下:

      通过使用上述计时器的编码模式,读取编码器的脉冲值。最后, 得到了汽车的实际速度.可以看到,在实际运行时,即使控制的PWM信号占有相同的空间比,左和右发动机的速率仍有些偏差.为了使速度更稳定,使加速效果更快速、更平滑,PID算法可以添加,控制电动机的速度.

      04 额外的PID控制

      PID可以分为位置PID和添加PID。这里没有详细说明PID的特定控制原则,但是在这个方程中使用的添加PID被强调。

      • 额外的PID用于改变输出的大小来控制控制控制控制数量的稳定性。与位置PID不同,额外的PID返回的值是当前控制与以前控制之间的差值,差值被用来作为新的控制的反馈。

      • 例如,设置汽车的速度为0.2米/秒,通过编码器测量速度得到速度反馈,设置值生成偏差e,并在系统中保存前偏差e(k-1)和以前的偏差e(k-2),这些三个值通过添加PID公式 Δu(k)作为输入计算,U(k-1)在最后的PID计算后加到增加 Δu(k),该控制周期的PID输出是u(k)。输出值通过二次计算转换后,给出了可控制电动机速度的PWM占用比.然后控制汽车的发动机速度.

      • 添加PID的公式:Kp比例系数,Ki积分系数,Kd差分系数,e(k)偏差

        Δu(k)=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

      学习了添加PID的基本知识后, 让我们来看看如何用代码实现算法过程!

      ​​​​​​然后在前文中写好的定时器6的中断回调函数中调用PID函数,以50ms为周期对当前速度进行调整。

      一旦编译代码,下载程序到STM32机器人控制板,您就可以享受开始订阅!

      对PID的参数调整,一般采用下列原则:

      1. 首先调整比例系数Kp,然后调整积分系数Ki,最后调整差分系数Kd。

      2. 在调整Kp时,从小到大调整,选择小比例系数使得输出曲线基本上符合目标线。

      3. 调整Ki以消除 Ki 的静态错误.

      4. 调整Kd以增加调制器的响应速度.

      PID调制的例子:(图中只显示左轮速度曲线,右轮速度曲线大致相同)

      • 第一组PID参数:Kp=5.0, Ki=0.0, Kd=0.0

        可以看到左轮和右轮的速度比目标速度20cm/s大,因此需要继续增加Kp值。

      • 第二组PID参数:Kp=15.0, Ki=0.0, Kd=0.0

        可以看到当前的速度正在增加,接近目标速度,而Ki现在参与调整。

      • 第三组PID参数:Kp=15.0, Ki=0.5, Kd=0.0

        你可以看到当前的速率值接近目标值20,两轮周围的速率接近相同的。 通过进一步提高基,可以减少静态误差,使最终的速率值接近20。

      • 组4PID参数:Kp=15.0, Ki=1.0, Kd=0.0

        在该组中,PID参数的速度可以调整,以便看到当前速度值和目标值只有0.1–0。

      然而,同时,可以观察到从0cm/s增加到20cm/s的速度需要大约1秒的时间(见下图),并且加速时间太长,因此需要添加Kd函数来增加加速系统的响应速度,以更快地达到目标值。

      • 第五组PID参数:Kp=15.0, Ki=1.0, Kd=1.0

        通过曲线,你可以看到最终速度值相对稳定,并且响应时间比以前的组调试快。但实际效果并不明显,由于差动作用通常在具有更大的惯性系统中应用,所以控制小汽车的速度的效果并不那么明显,当Kd设置太大的时候,这会引起系统振荡,难以稳定,因此,在小汽车速度控制中,可以考虑消除差动效应。即Kd=0。

      本文介绍了STM32机器人控制板的功能,以编码器读取小汽车的速度,实现PID速度。这是使汽车运行平稳和速度调整的关键!对于特定的驱动程序代码,你可以参考相应的实例文件。在下一篇文章中,继续向您展示如何使用板上的远程控制接口控制电动机和驾驶机器。以及如何使用STM32处理PPM信号,与您一起解锁更多控件面板的功能!

      欢迎加入我们的交流群,该群面向热爱机器人研发的朋友们,方便大家一起学习、分享、交流智能机器人创造,结识更多志同道合的小伙伴。更有不定期的社区专属福利哦!关注公众号(COONEO)即可获取入群方式。

      创作不易,如果喜欢这篇内容,请您也转发给您的朋友,一起分享和交流创造的乐趣,也激励我们为大家创作更多的机器人研发攻略,让我们一起learning by doing!

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30396.html

          热门文章

          文章分类