声明:学习笔记来自正点原子B站教程,仅供学习交流!!
梯形加减速一共分为三个阶段,OA 加速部分、AB 匀速部分 和 BC 减速部分。 在 OA 加速过程中,由低于步进电机的启动频率开始启动(模型中由 0 启动),以固定的加速度增加速度到目标值;在 AB 匀速过程中,以最大速度匀速运动; 在 BC 减速部分中,以加速度不变的速度递减到 0; 这种算法是一种在加速过程和减速过程中加速度不变的匀变速控制算法,由于速度变化的曲线有折点,所以在启动、停止、匀速段中很容易产生冲击和振动
步进电机的转动需要控制器发送脉冲,如果控制器以恒定速度发送脉冲,那么步进电机就以恒定速度转动;如果控制器以加速度发送脉冲,那么步进电机就以加速度运动;所以只要改变脉冲的频率 就可以改变速度的变化,也就是说调整脉冲之间的时间间隔就可以改变速度。
以 stm32 的高级定时器 8 为例,使用定时器PWM输出模式给控制器发送脉冲。高级定时器 8 的时钟频率为 168MHZ, 如果将分频值设置为 5,那么定时器的时钟频率则为:=168/(5+1)=28MHZ, 相当于计数 28M 次正好为一秒,周期与频率为倒数关系,所以分频值为 5 的定时器 8 的计数周期;和的值即为ARR寄存器的值,所以我们在固定的定时器频率下,只需要改变ARR的值,即可改变电机的速度。
(1)
(2)
n表示驱动电机的脉冲数,α表示电机的步距角,为转过的角度 , 为初角速度,ώ为加角速度,t为所用的时间,
一般情况下,初角速度都为0,所以得到电机转过θ所用的时间:
(3)
(4)
结合公式(3)和公式(4),可得出:
上式中n表示转过角度时,所用的脉冲数
即令公式(5)的参数n = 0,即
(6)
将公式(6)带入公式(5),即
(7) 根据泰勒公式的一个特例麦克劳林公式:
将上面公式代入公式(7),即:
最终化简得出以下公式:
(8)
通过公式(8)和公式(6)即可推到出每个周期内的计时器的值,及每步的频率。经过化简的公式(8)有一定的误差,其得出的结果比公式(7)快。所以我们对公式(6)乘以0.676加以校正
(9)
通过公式(8)和公式(9),我们就可以知道电机加速每一步的PWM频率
(10)
其中为角速度,为步距角,为间隔时间
将公式(10)带入公式(4),即
(11)
通过公式(11),我们就可以知道电机匀速时的PWM频率
将公式(1)带入公式(2):
(12)
我们通过控制定时器输出PWM波形来描绘上述梯形,至少需要知道以下变量:
1. 加速阶段
加速度accel
加速阶段时需要多少脉冲数,以n1表示
2. 匀速阶段
3. 减速阶段
三角形运动是由于速度偏大,而加速度偏小,导致在加速阶段速度没有达到最大值而进入匀速阶段时,就必须进入减速阶段的情况
上图中,已知参数:
未知量:
从上图可以看出,三角形运动没有匀速阶段,加速度过了即减速阶段,当 < 时,运动模型即为三角形运动
从上图可以看出,加速度的末速度与减速度的是相等的,所以:
(13)
其中,为加速度,为加速度时间,为减速度,为减速度时间
将公式(13)带入公式(12):
(14)
两边同时加上后,化简得到:
(15)
又因为此时为三角形运动,所以为总步数,可以求出加速度步数
(16)
如果加速度设置的足够大,那么在进入减速阶段之前达到最大速度,那么则会进行一段时间的匀速运动,运动图形如下:
上图中,已知参数:
未知量:
从上图可以看出,梯形运动中,是先进行匀减速,之后进入匀速阶段,最后进行匀减速的运动,当 > 时,运动模型即为梯形运动
梯形公式,最大速度即为,带入公式(1)和(2),即为
(17)
其中,n即为加速度步数,即为,为电机步距角,为加速度
将公式(17)带入公式(14)
(18)
由于算法在计算过程中涉及到一些浮点型运算,大量的浮点型运算会使得效率大大降低,为了使得计算速度得到更好的优化,我们做如下优化:
(19)
求余公式:
(20)
在给定步距角α、定时器频率,加速度,减速度,最大速度,总步数Step的情况下:
1. 判断三角形运动还是梯形运动:
如果 < 则为三角形运动,则减速步数:
否则则为梯形运动,则减速步数
2. 求加速度第一步的定时器值,即:
3. 加速阶段每步定时器的值
加速阶段的最大速度运行
1. 判断每步定时器值