什么是梯形加减速
如下图所示,假设该装置使用步进电机实现物体X的移动,系统要求物体X从A点出发,到B点停止,移动的时间越短越好且系统稳定。
使用梯形加减速
OA段为滑块的加速部分、AB则是匀速部分,BC则是减速部分。因其图像呈现梯形,所以我们把这种运动变化称之为梯形加减速
使用加减速的理由
为什么要使用加减速呢?步进电机有一个很重要的技术参数:空载启动频率,也就是在没有负载的情况下能够正常启动的最大脉冲频率,如果脉冲频率大于该值,步进电机则不能够正常启动,发生丢步或者堵转的情况;或者也可以理解为由于步进脉冲变化过快,转子由于惯性的作用跟不上电信号的变化。所以要使用加减速来解决启动频率低的问题,在启动时使用较低的脉冲频率,然后逐渐的加快频率。
梯形加减速算法特点
梯形加减速一共分为三个阶段,OA 加速部分、AB 匀速部分 和 BC 减速部分。在 OA 加速过程中,由低于步进电机的启动频率开始启动(模型中由 0 启动),以固定的加速度增加速度到目标值;在 AB 匀速过程中,以最大速度匀速运动;在 BC 减速部分中,以加速度不变的速度递减到 0;这种算法是一种在加速过程和减速过程中加速度不变的匀变速控制算法,由于速度变化的曲线有折点,所以在启动、停止、匀速段中很容易产生冲击和振动。
算法基础
上图为步进电机与时间的示意图,其中:
表示第1个脉冲发送时刻 表示第2个脉冲发送时刻 表示第3个脉冲发送时刻 表示定时器的计数周期 表示定时器从 ~ 时刻的定时器计数值 表示定时器从 ~ 时刻的定时器计数值 和 表示两个脉冲之间的间隔时间步进电机的转动需要控制器发送脉冲,如果控制器以恒定速度发送脉冲,那么步进电机就以恒定速度转动;如果控制器以加速度发送脉冲,那么步进电机就以加速度运动;所以只要改变脉冲的频率就可以改变速度的变化,也就是说调整脉冲之间的时间间隔就可以改变速度。
以 stm32 的高级定时器 8 为例,使用定时器PWM输出模式给控制器发送脉冲。高级定时器 8 的时钟频率为 168MHZ, 如果将分频值设置为 5,那么定时器的时钟频率则为: , 相当于计数 28M 次正好为一秒,周期与频率为倒数关系,所以分频值为 5 的定时器 8 的计数周期 ; 和 的值即为ARR寄存器的值,所以我们在固定的定时器频率下,只需要改变ARR的值,即可改变电机的速度。
梯形算法要求的变量
我们通过控制定时器输出PWM波形来描绘上述梯形,至少需要知道以下变量:在加速阶段:
加速初始PWM频率,即我们要求的ARR寄存器的值 加速度accel加速阶段总的脉冲数
匀速阶段:
减速阶段:
减速初始频率(也是匀速运动的速度)减速度decel减速所用的脉冲
一般情况下,电机加速度accel、减速度decel和总步数(即总脉冲数)是给定的,我们需要通过这3个变量推导出剩余的变量。知道以上变量,再推导出每步的定时器频率,结合脉冲数即可绘制完整的梯形图。
加减速算法推导过程
1. 电机转过的角度 的计算:
电机转过的角度 等于脉冲数乘以步距角: 其中: 表示驱动电机的脉冲数, 表示电机的步距角2. 电机由速度0匀加速运动,转过 所用的时间 :由匀加速直线运动公式: 可推导出,电机转过的角度 : 其中: 为转过的角度, ω 为初角速度, 为加角速度, 为所用的时间。当初角速度 ω 时,电机转过 所用的时间 : 3.求相邻脉冲时间间隔 :
其中: 表示定时器计数器相邻两脉冲间的计数值, 表示定时器的时钟周期,定时器频率的倒数假设相邻两脉冲间转过的角度分别用 和 表示,所用时间用 和 表示,则 根据公式(4)也可以表示为: 上式中 表示转过 角度时,所用的脉冲数上式中 和 根据公式(1)可得出: , ,则带入最终可得到公式(6) 上式中 表示转过 角度时,所用的脉冲数此处计算时,让 ,而不是 () 是因为 是两脉冲之间的时间间隔, 的脉冲数 最小也应该等于1,所以在 为正整数的情况下,采用 更符合实际情况。4、 求第1个周期内计数器的值
第1个周期内计数器的值,即电机匀加速运动时的初始值,加速初始PWM频率。
根据公式(5)和(6)可求得: 由上得出: 用公式(7)求第1个周期内计数器的值求第 个周期内计数器的值: 由上得出: 其中根据公式(7) 可得出: 由于计算的过程中需要进行开方运算,微控制器的计算能力有限,因此在此使用泰勒公式进行泰勒级数逐级逼近的方法。在这里主要是用的是泰勒公式的特例——麦克劳林公式;具体如下: 为构造与麦克劳林相同的公式将 ,并且与公式 (9) 做比值处理,并进行化简计算,具体如下图所示: 公式推导一共分为以下 5 个步骤推导:A. 与 利用公式(8)求比值;B. 分子分母提出 和 , 并将其约掉;C. 整理化简根号下的内容;D. 将麦克劳林公式带入;E. 忽略无穷下余项,化简求得;将其化简为关于 的式子如下: 化简后得出: 通过公式(7)和公式(9),即可推到出每个周期内的计时器的值,及每步的频率。经过化简的公式(9)有一定的误差,其得出的结果比公式(8)快。所以我们对公式(7)乘以0.676加以校正。 通过公式(9)和公式(10)我们可以求出:
加速初始PWM频率,即我们要求的ARR寄存器的值 电机加速阶段每一步的PWM频率,即ARR寄存器的值C
知道寄存器ARR的值后,我们就可以控制电机加速了,但是我们不知道电机应该加速到什么时候,即电机加速多少步以后开始匀速运行,多少步以后开始减速运行,接下来我们继续推导以上变量。5、 推导脉冲数和加速度成反比在电机由速度零匀加速或匀减速到速度零的运动情况下,由 和 可推出: 由速度 带入上式可得: 转化一下后: 公式(11)中, ω 为最大速度, 为步距角,由此看出在最大速度和步距角不变的情况下,脉冲与加速度成反比。6、在一个电机匀加速到一定速度,再匀减速的情况下,如下图:
从0加速再减速到0的速度示意图由公式(11)可得: () 两边同时加 得: 化简得出: 7、求加减速步数
对于步进电机加减速阶段来说,由于已经设定好了步进电机加速度、减速度、最大速度和总运行步数,所以说一共分为2种情况:(1)电机能够加速到给定的最大速度,匀速运行一段时间后,再减速到0
电机加速到给定speed再减速的示意图由 得到加速阶段的步数: A. 由公式 (13) 得到: () B. 由公式 (12) 得出 负号是因为减速过程,带入公式(9)时用。带入公式(9)时, 应为decel_step,其后每一步加1,直到停止。(2)由于运动距离过短,电机无法加速到最大速度即开始减速:
电机无法加速到给定speed就减速的示意图加速阶段的步数由公式(15)计算,减速步数如下: 负号是因为减速过程,带入公式(9)时用。通过以上推导,我们求出了梯形算法要求的所有变量。
算法优化由于算法在计算过程中涉及到一些浮点型运算,大量的浮点型运算会使得效率大大降低,为了使得计算速度得到更好的优化,我们做如下优化:
1、对于加减速的每一步来说,都需要重新计算下一步的时间,计算的过程中可能会出现除不尽的项式,为了更有利的加减速,可以采用加速向上取整,减速向下取整的原则来做运算,也可以采用余数累计的方法,在这里使用的是将余数累计的方法来提高间隔时间的精度和准确性。
()
()
上式中,mod就是取余数的意思,即C语言中的%。2、令:速度扩大100倍
加速度扩大100倍
扩大后的速度和加速度还用原来的字母表示
则 加速度扩大100倍以后,变为:
令: 则: 公式(14)中,速度和加速度扩大100后,变化为:
其他公式的加速度和速度相应放大100倍后,公式不发生变化ref:[1]正点原子[2]http://t.csdn.cn/P8g4H往期精彩
仪表系统的嵌入式控制器的开发研究
步进电机调速,S曲线调速算法你会吗?
PID算法整定在3D打印机挤出机上的应用
控制算法之PID算法 | 从入门到理解到应用 (一发入魂)
嵌入式软件设计之美-嵌入式软件架构设计中的状态模式 |