注释
贡献者
@jsb1: 你不是第一个提到这个步进算法的人。几年前,我在 2011 年第一次开始研究 Grbl 时就对它进行了分析。简而言之,它并不像看起来那么好或简单。它有很多问题,特别是在高步进率时。我会留给你弄清楚我的意思。 |
作者
@chamnit:这是我唯一的线索:定时器频率和步进频率之间的干扰很容易引起机械共振。是那个吗? |
@jsb1,如果实施每个步骤,你能说出你机器上的区别吗?我对 0.9j 和 1.0d 都做了类似的事情。如果你愿意,我可以给你发一个十六进制文件来测试它。 |
作者
@jsb1我听到你在说什么。我将尝试添加每个步骤以及 ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING。但是不确定它是否适合 328p。将首先在 ARM 上工作。还订购了 Mega2560 来实验该理论。 |
@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