我正在编写一些软件来控制五相步进电机。步进电机的速度由我发送到电机控制器的脉冲频率控制。我目前的挑战是我想缓入和缓出动作。我实际上是在复制一些我没有源代码的旧软件的行为。我了解缓动的逻辑,它的行为如下:
- 当结束/持续速度较慢时,缓入较慢/需要较长时间
- 当结束/持续速度快时,缓入更快/更短
例如……当持续速度为 693 Hz 时,缓入为 766 毫秒长。我使用 Saleae 逻辑分析仪对这条缓入曲线进行了采样。这是曲线:
起始频率为 97.77 Hz。这是指向实际数据的链接。所以我试图弄清楚如何在代码中实现正确的逻辑/公式。下面的代码将吐出与我需要的增量相对接近的 Hz 增量,但我不知道如何让它在current_freq
越来越长的时间内重复/保持相同的时间 - 这本质上是创建您在图表中看到的曲线。我创建增量的乘数也关闭了,但它相对接近......</p>
** 编辑——我认为理论上下面的方法可以增加一个增加时间的维度来保持加速current_freq
,但是我的实现有问题……它只是每个频率都做一次。
current_freq = 97.
end_freq = 1134
t = 4
# number of times to send the current freqency
print current_freq
while current_freq < end_freq:
i = 1
t = t+t * .1673
print i
while i <= t:
print current_freq
i = i+1
break
current_freq = current_freq + current_freq * .1673
有任何想法吗?这是对数吗?罪还是因?万一这不是很明显,我的数学很糟糕。