几个月来我一直在研究这个问题。我很高兴地宣布,它终于正常运作。ESP32将是CNC的绝佳选择。以下是我很兴奋的一些事情。 - 快速 - 两个32位内核,每个240MHz,FPU,80MHz定时器
- 内存 - 大量的闪存和RAM
- 低成本 - 3美元至10美元,具体取决于您的购买方式。
- 体积小 - 比Arduino Nano大不了多少
- I / O - 它与Arduino UNO具有大约相同数量的引脚,这是Grbl的目标
- BlueTooth和WiFi - 这很棒,实际上是我的端口的主要原因。
移植大部分代码很容易移植,但抖动非常低,步进脉冲时序需要很长时间才能实现。这不是我第一次使用Grbl。我的第一个端口是PSoC5。那是CPU更容易,但这是我在ESP32上的第一个重大项目。 目标是使用Arduino IDE开发代码。我认为这样可以让新手程序员更容易访问这个项目,只需要做一些调整。我还尝试使用Grbl轻松维护代码。这意味着AVR端口编号有一些回调/变通方法。等等 FreeRTOS的ESP32使用RTOS(实时操作系统)。虽然“实时”听起来非常适合CNC,但它对步进脉冲定时并不好。RTOS允许多个任务“同时”运行,并管理这些任务的优先级和交互。RTOS以“滴答速率”切换任务。滴答速率通常约为1000Hz。这意味着每个任务至少有1毫秒的时间,其他任务等待。您可以指定一个高优先级的任务来防止这些中断,但是某些任务具有必须重置的监视程序,因此您需要给它们一些时间。您可以设置更高的滴答率,但我需要超过50,000赫兹的步进率。这对RTOS来说不实用。我可以关闭RTOS和/或看门狗,但ESP32的主要吸引力是WiFi和蓝牙。这些都需要RTOS。 中断正常的Grbl方式生成步进脉冲定时是使用中断。只要遵循中断规则,它们就会以非常确定的方式中断RTOS而不会有任何延迟。规则是关于你可以在中断中花费多少时间以及你可以在中断中做些什么。中断持续时间不是问题,因为中断中的代码只需几微秒。你在中断中可以做些什么需要一段时间来搞清楚。ESP32在不喜欢的时候会进行“恐慌”重启。在开发期间发生了很多事情。我的大多数问题都与我使用外围设备的方式有关。像RMT这样的功能根本无法使用。 我的开发板我设计了一个小开发板来帮助我完成这个项目。功能包括...... - 3步进驱动器
- 3个限位开关
- 1触摸探头连接器
- 雾/洪水冷却液输出
- 启动/保持/复位/门开关连接器。
- 主轴/伺服/激光 - 连接器
- SD卡 - 这只是一个标题的突破,可以连接到CPU,如果我决定这样做。
下一步测试 - 我需要做很多测试。我沿途测试了大部分功能,但需要仔细检查所有配置选项。 清理 - 我有很多注释掉的调试代码需要删除 在GitHub上发布 - 完成上述步骤后,我将发布它。我希望这需要几周时间。 BlueTooth - 这是我想要添加的第一个新功能。 业余爱好伺服功能 - 我在我的小型机器中使用它们很多,328P Grbl确实很好地处理它们,因为缺少16位定时器可用性。我想要高分辨率无抖动伺服作为任何轴的选项。 简单的运动学 - GCode可以即时转换为交替坐标系。这不会考虑联合动态。
|