我正在研究一个Python代码(如下),它可以加速步进电机,直到达到特定的步数。在
for s in range (steps):
if s < accelerationsteps:
lateststep = self.oneStep(direction, stepstyle)
time.sleep(s_per_s)
s_per_s = s_per_s - ((astart - aend) / accelerationsteps)
s_per_s
=每个步骤之间的时间
astart
=以秒/步为单位的启动速度(例如0.5)
aend
=加速应停止的速度(例如0.05)
accelerationsteps
=应加速的步数
问题是,速度以每步每秒步数而不是每秒步数增加,因此速度是指数增长而不是线性增长。我找到了一篇this的文章,用数学术语解释了如何用步进电机实现线性增长,但我还没有把它翻译成Python代码。在
如果有人能帮助我,我将非常感谢,我认为这将是非常有用的人使用步进机在覆盆子Pi(我只找到了一个解决方案的阿尔杜诺here)
一个简单的(虽然是近似的)方法是让它按时间运行,而不是按步骤运行。所以时间。睡觉()周期变为常数,您可以跟踪当前速度和下一步的时间。只要时间。睡觉()周期明显少于做一步的时间,你会得到相当平稳的加速。在
有点像:
因为延迟周期是恒定的,这也意味着循环本身的开销接近于该延迟的恒定%增量,而不是随着延迟的缩小而增长。这会让事情更顺利。在
我还没有测试过这个,但它应该是接近正确的。。。。希望有帮助!在
-史蒂夫
相关问题 更多 >
编程相关推荐