注释
贡献者
很好的分析。你的结论是正确的。有速度尖峰,但它们会平均化并且频率很高,这意味着它们不会激发结构。只是轻微的可闻。Bresenham 算法是罪魁祸首,但可以通过 Grbl 的 AMASS 平滑算法进行管理和减少。如果您让它们独立计时,则很难保证多个轴同时开始和结束并保持同步。这就是使用 Bresenham 的原因。 其他速度峰值是由于服务其他中断造成的。它们可以在一个脉冲期间间歇运行并延迟一个脉冲的开始或结束。对于 328p,我无能为力。但应该会被即将推出的更快的 ARM 版本淘汰。 |
作者
是的,除了轮询主循环中的所有内容(并且需要对 USART 进行流量控制)之外,没有真正的方法来解决 AVR 领域中的其他中断。ARM Cortex M3/M4 有一个叫做 NVIC 的很酷的东西,它允许一个中断根据优先级打断另一个中断。所以你可以在最高优先级的中断中运行步骤代码,并确保它不会被其他任务打扰。 ARM 设备的缺点是中断延迟和抖动 – 设置标志后服务中断的时间(12-16 个周期 + 其他取决于状态)不如 AVR 一致,这可能会降低步进精度。但是对于更高的频率 (120Mhz+),抖动可能不会产生任何明显的影响。+- 6 个周期约为 10Mhz – 步进电机驱动器中的斩波器驱动器的运行速度将比这慢两个数量级,因此噪声不太可能传播到系统的其余部分。 |
你好,
我一直在研究步进电机控制器(如 grbl)生成的步进曲线的准确性。我发现一些情况下步长是理想步长的 +-1/3,详情请看这里:
https://xenovacivus.github.io/jekyll/2017/12/23/stepper-motor-driver-accuracy.html
短/长步骤显然不是问题,否则会有一些投诉。他们平均很快 – 特别是微步。有没有其他人做过测试,看看最坏的情况是什么?测试步骤配置文件的最先进方法是否仍然是“运行一些 GCode 并查看机器的性能”?