Contact me: hankecnc@gmail.com

许多新的 Grbl_ESP32 功能! #449

推推 grbl 3年前 (2023-01-30) 240次浏览
关闭
bdring 打开了这个问题 2020 年 6 月 19 日 · 15条评论
关闭

许多新的 Grbl_ESP32 功能!#449

bdring 打开了这个问题 2020 年 6 月 19 日 · 15条评论

注释

许多新的 Grbl_ESP32 功能! #449
所有者
培养 评论了 2020 年 6 月 19 日  

经过几周的开发@bdring @MitchBradley@odaki,我们已将一些重大更改推送到Devt分支。我们邀请所有人对其进行测试,并在此线程或 Slack 上留下反馈。

I2S 移位寄存器芯片支持 (@odaki @MitchBradley @bdring)

ESP32 的针脚刚好够普通 CNC 机器使用。如果您想配备很多电机和功能,那您就不走运了。I2S 移位寄存器是附加输出引脚的简单且廉价的方法。我们使用的开发板有 4 个芯片,增加了额外的 32 个输出引脚。如果您想查看更多详细信息,可以使用开发板的github 存储库。

许多新的 Grbl_ESP32 功能! #449

新设置系统(@MitchBradley)

$$ 设置系统总是有问题。数字有限且难以记住。在不破坏旧设置的情况下添加新设置也很困难。新系统使用易于阅读的文本格式。

该系统从头开始重写。它仍然具有与原始 Grbl 设置的基本向后兼容性,以使 gcode 发送者满意。$StallGuardDebugMask 等新设置将仅在 $text 类型格式中可用。这是您通过发送 $S 获得的部分列表

$SpindleMaxPWM=100.000
$xStepsPerMm=200.000
$yStepsPerMm=200.000
$zStepsPerMm=100.000
$xMaxRate=5000.000
$yMaxRate=1000.000
$zMaxRate=1000.000
$xAcceleration=20.000
$yAcceleration=200.000
$zAcceleration=200.000
$xMaxTravel=100.000
$yMaxTravel=300.000
$zMaxTravel=100.000
$xRunCurrent=0.800
$yRunCurrent=0.500
$zRunCurrent=0.500
$xHoldCurrent=0.250
$yHoldCurrent=0.250
$zHoldCurrent=0.250
$xMicrosteps=16
$yMicrosteps=32
$zMicrosteps=16
$xStallGuard=8
$yStallGuard=16
$zStallGuard=16

您可以发送 $L 以查看数字与文本的匹配情况。这是部分清单。

$0 => $StepPulse
$1 => $StepperIdleTime
$2 => $StepInvertMask
$3 => $DirInvertMask
$4 => $StepEnableInvert
$5 => $LimitInvert
$6 => $ProbeInvert
$10 => $StatusMask
$11 => $JunctionDeviation
$12 => $ArcTolerance
$13 => $ReportInches
$20 => $SoftLimits
$21 => $HardLimits
$22 => $HomingEnable

发送 $E 以查看错误编号的含义。部分清单。

0: No error
1: Expected GCodecommand letter
2: Bad GCode number format
3: Invalid $ statement
4: Negative value
5: Setting disabled
6: Step pulse too short
7: Failed to read settings
8: Command requires idle state
9: GCode cannot be executed in lock or alarm state
10: Soft limit error
11: Line too long
12: Max step rate exceeded
13: Check door
14: Startup line too long
15: Max travel exceeded during jog
16: Invalid jog command
17: Laser mode requires PWM output

还有更多的可用性功能。

注意:我们计划对名称进行一些调整,并为它们添加一个类似树状结构的层次结构。

电机等级 (@bdring)

Grbl_ESP32 支持比标准 Grbl 更多的电机类型,包括简单的步进/方向类型、Trinamic SPI 类型、RC 伺服和单极步进电机。这使核心运动控制器代码变得臃肿和混乱。现在电机使用面向对象的 C++ 代码。这简化了事情并大大减少了代码。其他电机类型将很容易添加。

许多新的 Grbl_ESP32 功能! #449 bdring 更改了标题 许多新的 Grbl_ESP32 功能! 许多新的 Grbl_ESP32 功能! 2020 年 6 月 19 日
许多新的 Grbl_ESP32 功能! #449

I2S 开发板正在进行一些重要的修订,因此如果您正在考虑构建一个,最好等待。

许多新的 Grbl_ESP32 功能! #449
快乐TM 评论了 2020 年 6 月 19 日  

@MitchBradley 我希望有几个有刷直流电机的选项(使用类似 A4950 https://lcsc.com/search?q=a4950的东西)也有如下链接的编码器输入选项:

https://github.com/misan/dcservo

谢谢。

许多新的 Grbl_ESP32 功能! #449

新板支持主轴和输入的插件模块,并且可以通过 pololu-socket 桥接适配器将步进和方向引脚发送到输出连接器。这应该足以满足您想要的硬件方面。它不会解决软件方面的主要问题,因此此线程不适合重申对有刷伺服支持的请求。

许多新的 Grbl_ESP32 功能! #449

@MitchBradley谢谢你。

许多新的 Grbl_ESP32 功能! #449
贡献者

嗨先生们,

喜欢这个项目,我可以看到你在推出新硬件方面做得很好。我想知道我是否可以帮助硬件设计?作为我的 Root CNC 项目的一部分,我一直在为我的一台机器 (Root 4) 设计一个新的控制器。我看过 MESA 卡、GRBL、并行卡、MACH、基于 Arduino 的项目,它们要么太贵,要么功能有限,我认为这个项目可以很好地属于这个领域,并提供功能丰富的选项,价格低廉-在成本上。
我目前正在设计一个控制器,其重点是为功能丰富的 Root CNC 提供动力,但在设计此板时,结合您正在考虑的更多功能可能是个好主意。我很乐意帮助设计电路板,因为我的职业是电子工程师。只是一个想法——很高兴能帮助这个伟大的项目。

许多新的 Grbl_ESP32 功能! #449
所有者作者

@RootCNC我正在进行的设计在本期的第一篇文章中有详细介绍。它工作得很好,没有问题,但我正在考虑将输入部分更改为模块化。主轴模块运行良好,所以我正在考虑将该概念扩展到输入。我将我目前的想法放在这个 wiki 页面上

许多新的 Grbl_ESP32 功能! #449
贡献者

@bdring啊我明白了(对 GitHub 还是新手)。如果你需要帮助,请告诉我。我已经为一个完全隔离的板(假设使用了外部电机驱动器)计划了一个可能有用的方案。

保持良好的工作。

许多新的 Grbl_ESP32 功能! #449

惊人的!

我可以将Spindle RS485模块放在“Spindle Module 1”或“Spindle Module 2”中吗?还是必须在其中一个插槽中使用?

$StallGuardDebugMask 太棒了!很好的主意!

许多新的 Grbl_ESP32 功能! #449
所有者作者

@vitalibr 您使用哪个插槽取决于控制器主板的设计。RS485 需要一些双向 GPIO。继电器只需要 1 个输出。

在我当前的设计中,我将 GPIO 连接到一个,而将输出连接到另一个。因此,第二个限制了可以使用的模块。我可能会改变最终设计的一些东西。主要目的只是为了测试新功能。

注意:Grbl 只支持一个主轴。其他的将用于冷却剂、真空、换刀器等。术语主轴模块可能会更改为“输出模块”之类的东西。

@happytm没有理由不能将电机控制器放在输出模块上。您可以制作一个小型、智能、无刷直流控制器,它可以接受步进/方向/启用以及可能的故障返回。喜欢@MitchBradley说,请不要在这个线程上这样做。

许多新的 Grbl_ESP32 功能! #449

@bdring谢谢你。

许多新的 Grbl_ESP32 功能! #449

@RootCNC您能否提供 Root 4 机器所需的信号列表?我们可以将其与我们将在新模块化板上提供的内容进行比较。如果存在差距,也许我们可以想出插件模块的想法来填补这些差距,也许您可​​以设计一些模块。

许多新的 Grbl_ESP32 功能! #449
贡献者

@MitchBradley肯定的事;所以我整理了这个回购协议(我认为这是分享一些想法的最佳方式)

ESP32-GRBL-根控制器

这在很大程度上是一个概念,但顶级 SVG 可能是帮助确定我的想法的好主意。链接-这里。该框图还定义了一些初步部分,以支持该概念。

可以在此处的 Excel 电子表格中找到引脚分配。

让我知道你的想法 :)

许多新的 Grbl_ESP32 功能! #449
合作者
米奇布拉德利 评论了 2020 年 6 月 25 日  

好的,看起来 Bart 和我正在设计的新“6 块”板将处理您用例中的所有内容:

  • 6 个步进输出通道是通过 I2S(不是 I2C)移位寄存器 – 74AHCT595 – 完成的,它可以驱动 5V 光耦合器。Pololu 插座有桥接模块,因此您可以轻松连接外部驱动程序。I2S 步进方案在 250 kHz 边沿速率、125 kHz 脉冲速率下完全无抖动。每个步进器都有一个单独的启用。
  • 有 5 个用于 I/O 模块的插入插槽。它们都有 4 个公共引脚,可用于模块上的 I2C 扩展器,每个引脚都有 4 个非公共 GPIO 引脚,可用于哑 I/O 或您希望配置 ESP 驱动的任何东西。
  • 如果 Bart 现有的主轴模块之一不适合(例如,隔离不够好),您的主轴卡可以设计为模块。
  • Bart 的另一个模块是一个 4 通道“防弹”输入模块,带有光耦合、RC 滤波、施密特触发器缓冲器。如果您需要更多输入,您可以使用这些模块中的多个。
  • 如果您需要更多自定义 I/O,您可以制作一个带有 I/O 扩展器的模块,甚至是像 STM32F030 这样的小型微处理器。我正在设计一些像这样的“智能模块”,因此在不久的将来它们可能会现成可用。
  • 可以制作一个跨越任意数量模块插槽的大型模块。所有引脚(包括 Pololu 插座)都位于一致的 0.1″ 网格上,因此可以很容易地使用 perfboard 制作模块跨越板的原型。
    将 ESP32 用于 CNC 有几个普遍的挑战:
  • 没有足够的引脚用于大型机器。我们通过采用 I2S/移位寄存器方案解决了这个问题,它仅使用 3 个 GPIO 就为我们提供了 32 个额外的步进级输出。这样可以释放大量 GPIO 用于其他用途。
  • 3V3 输出几乎无法驱动光耦合器。我们使用的移位寄存器可以从 3V3 电平转换为 5V,并且单独的启用输出避免了将启用组合到一个引脚时可能发生的过流问题。
  • ESP32输入引脚抗噪能力差,因为是3V3,内部上拉太弱控制不好,没有迟滞。我们正在通过插件模块上的光隔离、额外过滤和滞后来解决这个问题。
  • 即使在使用 I2S 步进器方案释放 GPIO 引脚之后,仍有一些可能需要更多 I/O 引脚的用例——比如多个风扇、照明、LCD 显示器……解决这个问题的是“智能模块”通过提供一组通用的支持 I2C 的引脚来启用这些引脚,这些引脚连接到所有模块。
    这一切都需要软件支持。为此,我们已经完成了本线程开头消息中列出的事情,并且正在研究更多功能,包括面向对象的 Spindle 类(已经在工作),面向对象的 Pin 类以无缝处理已实现的引脚通过 GPIO、I2S、I2C 等,以及一个运行时配置系统,让您无需重新编译即可使用所有这些东西。
许多新的 Grbl_ESP32 功能! #449
贡献者

好听的说。我将更多地研究您使用的移位寄存器。通过快速计算,Root CNC 高速移动所需的步进脉冲大约为 50KHz 步进速度,这对机器来说似乎是一个舒适的速度,虽然可以使用大约 75KHz 的更高步进,但机器确实听起来有点联合国-快乐的。

你们有没有评估移位寄存器的数量,而不是可以菊花改变,同时仍然为运动控制产生良好的输出率?

我仍在考虑使用您和团队组合在一起的软件来生产以 Root CNC 为中心的控制器(因为它看起来非常符合要求)。我会将你所说的记在船上,并随时向你通报进展情况。

许多新的 Grbl_ESP32 功能! #449

我认为可以以 250 kHz 边沿速率/125 kHz 步进速率菊花链连接 8 个移位寄存器。