注释
运动引擎(规划器和步进驱动器)需要线段。它们可以非常小,但格式是线段,而不是像光栅图像缓冲区可以处理的随机排序的点。 经典圆弧算法基于能够以随机顺序绘制点——这在 CNC 中是不可能的;因为您必须从头到尾遵循弧线。因此,您必须在弧形算法穿过每个象限时重新执行它;这消除了经典算法实现的几个优化机会。在 ATMega328 上,没有足够的 RAM 来同时保存整个点集;它们是在 CNC 穿过圆弧时生成的。 即使有这些限制,也有可能改进电弧生成算法的性能;但是需要使用示波器进行时序测试以验证结果(关闭中断,在进入计算时将引脚切换为高电平,并在退出时再次将其切换为低电平,重新启用中断;并使用示波器查看多长时间引脚高)。 实际上,目前现有的算法似乎已经足够好了;Chamnit 的所有可用时间都花在了 Grbl 的 ARM 端口上。这并不是说您不应该尝试它。这只是说,在 ARM 版本出来并得到妥善解决之前,我不希望他用它做任何事情。 😄 |
我不批评现有的算法 GRBL。我尊重创造事物的人。只是想建议如何简化算法。 |
X 和 Y 将在整个圆弧中加速和减速 |
是的。绕圆做匀速运动,X 和 Y 将以变化的加速度运动。 |
大约 8 年前,对圆形 Bresenham 进行了评估。无需过于复杂的规划和步骤算法来适应圆弧。保持简单总是更重要。 此外,Grbl 的 arc 例程通过使用小角度坐标变换来最小化所需的三角计算。它的效率足以在慢速 8 位 AVR 上运行。 |
你好。我来自俄罗斯。我使用俄语自动翻译成英语,如果文本不完全正确,我深表歉意。
我正在制作简单的 Atmega CNC 系统。我了解了您的经验,并将部分使用您的想法,特别是用于从计算机接收程序帧的环形缓冲区和运动规划器的环形缓冲区。
我想知道你为什么使用线段的弧近似?我觉得很难。需要计算三角函数,需要计算很多段。
毕竟有Bresenham构造弧的算法。它发生在整数中。
还有一种米切纳算法(这是一种改进的布雷森汉姆算法)。
在工业数控机架中,也使用评价函数法。它甚至比 Bresenham 算法更简单。
我还找到了苏联制造的CNC机架的描述,其中使用了整数微分分析仪的方法。我已经试过了。起初他在电脑上模拟——他画了圆圈。然后在 Atmega 的固件中使用。我的 CNC 绘图仪画了一个完美的圆。
如果您对这些算法感兴趣,我可以分享我的代码。