实时步进电机
仅通过加法和乘法实现线性斜坡



1.运动基础

线性加速度(斜坡)公式为:

                                                                       s = v0 · t + a·t²/2    [1]

                                                                       v = v0 +  a·t            [2]


其中


        S  -加速距离,在步进电机的情况下- 步数

        v0  -初始速度,基本速度(步每秒),

        v  -目标速度,回转速度(步每秒),

        a  -  加速度(步每秒秒),

        t  - 加速时间,爬坡周期(秒)。


通过重新排列[2]



t  =   (v-v 

0)/ a

                         [3]


并把它放在[1]我们有


S =   (V 

2 - v 

2)/(2 ·a

         [4]




v 

 =  (V 

2 + 2·a·

 S)

1/2             [5]


这可以表示 为一个步骤递归计算形式


v

i  = (Vi-12 + 2 ·a)1/2         [6]

 

其中


        i  - 步数(1 S)。



2.控制基础知识

为了产生步进电机的速度曲线,我们需要提供步进脉冲之间的实时延迟:


p

i = F / vi         [7]

 

其中


        pi -延迟周期用于第i个步骤(定时器节拍),

        F  -  计时器频率(每秒定时器的节拍数),


所以根据[6]的精确的延迟值将是:



p

i 

F /((F / Pi-1 2 + 2·a1/2         [8]

 

要么



p

i = Pi-1  /(1 + Pi-1·2 · a/ F 21/2         [9]。

 


3.逼近

使用泰勒级数



1 /(1 + n)

1/2    1 - n / 2         [10]

   



当-1 <  < 1时,我们可以近似为[9]



pi

 

= Pi-1 ·(1 - pi-1·a/ F 2         [11]



我们来检查-1 <  < 1的条件。我们  n  是



n  =   p 

i-1 2  · 2 · a / F 2         [12]

或者通过速度,



n  =   2  · a / v 

i-1 2         [13]。


  在第一个计算的步骤中, 最大   n值将处于最小速度,其中   i = 2


n

max = 2  ·  a / v 2         [14]。

 

因为最小   0   是0,从[6]我们有



v

1min  = (2  ·  a1/2         [15]。

 

所以   n   将始终 小于或等于1,因为我们的计算是前向的,所以我们在减速(负加速度)情况下也没有限制



4.实施

给定的参数为:


        0  - 基本速度,

        v  - 回转速度,

        a  - 加速度,

        F  - 定时器频率


和计算出的参数为:


        S  - 加速/减速距离



s =   (V 

2 - v 

2)/(2 · a)

         [4,16],


        1  - 初始步骤的延迟时间



1 = F /(V 2 + 2 · a)1/2         [17],

 

        S  - 摆动速度步长的延迟时间



S = F / v         [18],

 



        R  - 恒定乘数



R  =   a / F 

2         [19]。


将为每个下一步重新计算 的可变延迟周期   p   (初始   p = 1)为:



p  =   p ·(1 + m · p · p)

        [20]。


其中


        m  -变量乘数取决于所述运动相:


                m = - R 时在加速阶段,

                m = 0 在加速和减速阶段之间

                m =  R 时,在减速阶段。


为了精确的目的,让我们设定


        Ps = Ps ,  如果   P < Ps   或者加速和减速阶段之间

        P = P1   , 如果   p > 1  。



5.可选的增强

使用泰勒级数的高阶逼近

                                                                            1 / (1 + n)1/2  ~  1 - n / 2 + 3 . n2 / 8       [21]



我们可以得到更准确的结果替代[20]



p    =    p  . (1 + q + 1.5 

. q 

. q)

 

         [22]


其中


      q  =  m . p . p 


通过[22]我们有出色的精度,但具有两个额外的乘法和一个额外添加VS [20]的良好 精度的方法。最后让我们 用一个额外的乘法和一个额外的加法构建一个非常好的折中:



p    =    p  . (1 + q + q 

. q)

        [23].


而且,我认为好的方法([20])不仅好,而且对于大多数步进电机应用来说也足够好

对于步进/方向控制的伺服驱动器来说,增强功能非常重要,该功能可以从零速下降到零速。



6.编程说明

这个算法是为浮点 数学设计的,在这种形式下它的工作速度要快于 需要划分的整数形式。