1.失步和过冲
步进电机因其无需反馈就能对位置(脉冲数)和速度(脉冲频率)进行控制而在工业自动化设备中的应用极为广泛,对于速度变化较大的,尤其是加减速频繁的设备,常常发生力矩不足或者失步的现象,而实际上许多案例中步进电机的选型并没有问题,其问题在于负载位置对控制电路没有反馈,步进电机就必须正确响应每次励磁变化,如果励磁频率选择不当,电机不能够移到新的位置,那么实际的负载位置相对控制器所期待的位置出现永久误差,即发生失步现象或过冲现象,因此在速度变化较大的步进电机控制系统中,防止失步和过冲是开环控制系统能否正常运行的关键。
失步和过冲现象分别出现在步进电机启动和停止的时候,一般情况下,系统的极限启动频率比较低,而要求的运行速度往往比较高,如果系统以要求的运行速度直接启动,因为该速度已超过极限启动频率而不能正常启动,轻则可能发生丢步,重则根本不能启动,产生堵转,系统运行起来以后,如果达到终点时立即停止发送脉冲串,令其立即停止,则由于系统惯性作用,电机转子会转过平衡位置,如果负载的惯性很大,会使步进电机转子转到接近终点平衡位置的下一个平衡位置,并在该位置停下。
2.加减速
步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。要解决这个问题,一般采用加减速的办法。就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。这就是我们常说的“加减速”方法。
步进电机转速度,是根据输入的脉冲信号的变化来改变的。从理论上讲,给驱动器一个脉冲,步进电机就旋转一个步距角(细分时为一个细分步距角)。实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。
所以步进电机在高速启动时,需要采用脉冲频率升速的方法,在停止时也要有降速过程,以保证实现步进电机精密定位控制。加速和减速的原理是一样的。
2.1曲线加减速
加速过程,是由基础频率(低于步进电机的直接起动最高频率)与跳变频率(逐渐加快的频率)组成加速曲线(降速过程反之)。跳变频率是指步进电机在基础频率上逐渐提高的频率,此频率不能太大,否则会产生堵转和丢步。
加减速曲线一般为直线(梯形)、指数或者“S”型曲线等。对于不同负载、不同转速,需要选择合适的基础频率与跳变频率,才能够达到最佳控制效果。
通常,完成步进电机的加减速时间为300ms以上。如果使用过于短的加减速时间,对绝大多数步进电机来说,就会难以实现步进电机的高速旋转。
2.2 梯形加减速
2.2.1 步进电机基础方程
如果要步进电机以恒定的速度旋转,我们就需要以固定的频率发送脉冲,我们通过控制器的定时器功能来实现脉冲的发送,如图所示,𝑡0为脉冲发送的起始时刻,𝑡1为发送第二个脉冲的时刻,𝑡2为发送第三个脉冲的时刻。𝑡0与𝑡1之间的时间间隔(时间延时)为 𝛿t= 𝑐0𝑡𝑡,其中𝑐0为定时器在𝑡0与𝑡1这段时间的定时器计数值,𝑡𝑡为定时器的计数周期。𝑡1与𝑡2之前的时间间隔为 𝛿𝑡 = 𝑐1𝑡𝑡,其中𝑐1为定时器在𝑡1与𝑡2这段时间的计数值,𝑡𝑡为定时器的计数周期。比如说我们在程序中配置定时器预分频器为35,那定时器时钟频率为𝑓𝑡=72MHz/(35+1)=2MHz,那么周期𝑡𝑡值就是1/2M,c就是以𝑡𝑡为基本单位的一个完整步进脉冲的定时器计数值。在前面专题内容中,我们是让配置定时器通道为翻转输出,比如当定时器计数到num值时发生翻转,翻转2次得到一个完整脉冲,即总计数值为2*num。
2.2.2 直线加减速
为让步进电机尽量不出现丢步和过冲情况,在电机启动和停止过程使用加减速是非常有必要的。在加减速阶段,
加速度(ω ̇)、
速度(ω)
位置(θ)
对应关系如图所示:求导 积分
𝛿t是两个脉冲之间的时间间隔,所以它的大小将决定着步进电机转速,为让电机转速符合加减速曲线,一个非常重要的步骤是计算合适时间间隔𝛿t,在加减速阶段,𝛿t可以认为是线性变化的,而在平稳速度阶段𝛿t也是平稳不变(不是0)的。
使用定时器的计数频率来离散步进控制步进电机运动和处理时间间隔。
每个长方形的面积就是一个步距角,所以每个长方形面积相等。
2.2.3 精确计算步进时间间隔
加速度大小是可以改变的
tt 是 1/频率
由于一般控制器的计算能力是有限的,连续两次计算开方根会很费时,因此我们必须考虑使用多项式展开来减少运算。根据泰勒公式的一个特例:麦克劳林公式:根据泰勒公式的一个特例:麦克劳林公式
2.2.4 加速度的变化
最后一个式子展开就是上面的式子
2.2.5 算法实现
由以上的数学模型,控制步进电机运动,在给定步数的情况下,速度从零开始加速,到达既定最大速度后开始匀速运动,运动到一定步数后开始减速,最后停下来到达给定的步数,速度曲线类似一个梯形的变化的过程,这样可以让电机启动或者停止更加平滑避免抖动的出现。
为实现加减速控制,需要4个参数来描述,见图
step:步数,定义电机旋转步数;
accel:加速度;
decal:减速度;
speed:最大速度,即匀速阶段速度。
注:
、
T1 为定时器的频率 为ft 然后 进行一个修正
100/0.676 = 148
以上两个关于C0的是带入参数后的式子和原始的式子,在 step_delay 中参数 T1_FREQ_148 矫正了误差并且将其缩 小10的两次方倍,将A_SQ放大10十次方倍,由于放大倍数是在根号下放大的10的10次方,开根号后就是5次方,加速度也放大10的二次方倍, 在除以100,正好就是与原始相等;
下面是证明过程。
- 步骤(1)中是原始式子
- 步骤(2)矫正误差并且将放大的倍数分解
- 步骤(3)整理分解的倍数
- 步骤(4)最后的结果只与原始有误差矫正的区别
以上的整理说明,即使放大或者缩小了部分参数的倍数只要保证结果不变,会给计算带来很大的便利。
2.2.6 不同场景分析、
场景1:
在加速的过程中,有两种场景计算速度属性:
1)持续加速直到达到所需的速度
2)未达到所需的速度就要开始减速
这场景取决于描述速度属性四个变量,首先介绍第一种场景,见图。
但是由于是减速度的步数,所以需要带上负号
但是由于是减速度的步数,所以需要带上负号
第一个推算:
第二个推算:
第三个根据下面的推算:
场景2:
第二种场景是运行的步数不足以进行加速到最大速度就要开始减速,见图。
如果max_s_lim > accel_lim,加速度是受限于减速的开始。减速距离decel_val 应该为:
decel_val=-(step-accel_lim)
2.2.7 定时器中断处理
定时器中断产生步脉冲并且只有在步进电机移动时进入。这个中断处理速度属性的四个不同的状态,分别为stop—accel—run—decel—stop。如图所示。
速度的这种行为通过状态机在定时器中断中实现。如图所示。STOP 为停止状态,ACCEL为加速状态,RUN为匀速状态(对应最大速度speed),DECEL为减速状态。
- 当应用程序启动(复位重启)或者步进电机停止状态机处于STOP状态。当输入移动步数建立计算完成,一个新状态被置位同时定时器的中断被使能。
- 当运行的步数超过1步状态机进入ACCEL状态,如果只移动1步,那么状态直接变为DECEL,因为只移动一步是不需要加速的。当状态变为ACCEL,应用程序一直加速到步进电机达到期望的最大速度,这时状态变为RUN,或者减速必须开始,状态变为DECEL。
- 当状态为RUN时候,步进电机会持续保持最大速度speed旋转,直到必须开始减速然后把状态改变为DECEL。它会一直保持DECEL状态并一直减速到期望的步数并且速度为0。然后状态变为 STOP。
2.2.8 计时器的计数值
mod函数是一个求余函数
对于加减速的每一步来说,都需要重新计算下一步的时间,计算的过程中可能会出现除不尽的项式, 为了更有利的加减速,可以采用加速向上取整,减速向下取整的原则来做运算,也可以采用余数累计的方法, 在这里使用的是将余数累计的方法来提高间隔时间的精度和准确性。
这个公式应该是写错了