实时步进电机
仅通过加法和乘法实现线性斜坡
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 0 2)/(2 ·a ) [4] 和 v = (V 0 2 + 2·a· S) 1/2 [5] 这可以表示 为一个步骤的递归计算形式: v i = (Vi-12 + 2 ·a)1/2 [6]
其中 i - 步数(1 < i < S)。 2.控制基础知识为了产生步进电机的速度曲线,我们需要提供步进脉冲之间的实时延迟: p i = F / vi [7]
其中 pi -延迟周期用于第i个步骤(定时器节拍), F - 计时器频率(每秒定时器的节拍数), 所以根据[6]的精确的延迟值将是: p i = F /((F / Pi-1 )2 + 2·a)1/2 [8]
要么 p i = Pi-1 /(1 + Pi-12 ·2 · a/ F 2)1/2 [9]。
3.逼近使用泰勒级数 1 /(1 + n) 1/2 〜 1 - n / 2 [10]
当-1 < n < 1时,我们可以近似为[9] pi
= Pi-1 ·(1 - pi-12 ·a/ F 2) [11] 我们来检查-1 < n < 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 1 2 [14]。
因为最小 v 0 是0,从[6]我们有 v 1min = (2 · a)1/2 [15]。
所以 n 将始终 小于或等于1,因为我们的计算是前向的,所以我们在减速(负加速度)情况下也没有限制 4.实施给定的参数为: v 0 - 基本速度, v - 回转速度, a - 加速度, F - 定时器频率 和计算出的参数为: S - 加速/减速距离 s = (V 2 - v 0 2)/(2 · a) [4,16], p 1 - 初始步骤的延迟时间 p 1 = F /(V 0 2 + 2 · a)1/2 [17],
p S - 摆动速度步长的延迟时间 p S = F / v [18],
R - 恒定乘数 R = a / F 2 [19]。 将为每个下一步重新计算 的可变延迟周期 p (初始 p = p 1)为: p = p ·(1 + m · p · p) [20]。 其中 m -变量乘数取决于所述运动相: m = - R 时在加速阶段, m = 0 在加速和减速阶段之间 m = R 时,在减速阶段。 为了精确的目的,让我们设定 Ps = Ps , 如果 P < Ps 或者加速和减速阶段之间 P = P1 , 如果 p > 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.编程说明这个算法是为浮点 数学设计的,在这种形式下它的工作速度要快于 需要划分的整数形式。 |