开源改变世界

以 CPU 友好的方式逐步加速 #46

推推 grbl 2年前 (2023-01-21) 224次浏览

关闭
jsb1 打开了这个问题 2016 年 12 月 3 日 · 6条评论
关闭

以 CPU 友好的方式逐步加速#46

jsb1 打开了这个问题 2016 年 12 月 3 日 · 6条评论

注释

以 CPU 友好的方式逐步加速 #46

@chamnit:你好,
网上有一篇有趣的论文:
http
://www.embedded.com/design/prototyping-and-development/4008259/Linear-motor-control-without-the-math 我可以用一种方式实现它允许在 8 位 cpu 上运行。真的很神奇:步进中断不需要浮点计算,不需要除法,不需要乘法,也不需要查表。只是一些添加和移动 – 所有 16 位。
最大的好处是节省了大量的cpu时间:只需要3条线段:加速、巡航和减速。
还有一些缺点:步进中断必须以固定的间隔运行,并且不能以太高的频率(8-16 khz)运行。不是大问题:请参阅代码中的注释。

现在我想在 grbl 中尝试它。但我不想破坏 stepper.c 中的太多现有功能。
你能看看我的代码并给我一些提示如何把它放进去吗?
我想我可以做 ISR。但是如何计算线段呢?
您可以简单地在 PC 上编译 main.c 并使用它。

计步器.zip

以 CPU 友好的方式逐步加速 #46
贡献者

@jsb1: 你不是第一个提到这个步进算法的人。几年前,我在 2011 年第一次开始研究 Grbl 时就对它进行了分析。简而言之,它并不像看起来那么好或简单。它有很多问题,特别是在高步进率时。我会留给你弄清楚我的意思。

以 CPU 友好的方式逐步加速 #46
作者

@chamnit:这是我唯一的线索:定时器频率和步进频率之间的干扰很容易引起机械共振。是那个吗?

以 CPU 友好的方式逐步加速 #46

@jsb1,如果实施每个步骤,你能说出你机器上的区别吗?我对 0.9j 和 1.0d 都做了类似的事情。如果你愿意,我可以给你发一个十六进制文件来测试它。

以 CPU 友好的方式逐步加速 #46

@jsb1 @chamnit这是 0.9j 的构建,每步加速。我最初是在 STM32 上完成的,后来移植回 Arduino。我没有好的数控机床来测试。处理步进脉冲的 ISR 较短,因此我相信它允许快速步进频率。

grbl0.9jwithperstepacceleration.zip

以 CPU 友好的方式逐步加速 #46
作者

@usbcnc抱歉,但似乎有充分的理由说明 ranade 算法不再存在。而且我不会尝试二进制文件:-)。
@chamnit是的,我明白了,它是在 2012 年和 2013 年“被淘汰”的。我明白为什么。我想它适用于定时器频率远高于最大步进频率(nyquist?)。所以不是在 AVR 上……并且在典型的 32 位控制器上具有相对较高的计算成本。

以 CPU 友好的方式逐步加速 #46

@jsb1我听到你在说什么。我将尝试添加每个步骤以及 ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING。但是不确定它是否适合 328p。将首先在 ARM 上工作。还订购了 Mega2560 来实验该理论。

喜欢 (0)