常见问题 - MillerRen/grbl GitHub Wiki

请随时贡献更多最新的答案或问题!

####你如何发音Grbl!?

这可能是第一个问题,答案是:“这取决于你问谁。”

当 Simen Svale Skogsrud 于 2009 年第一次坐下来编写 Grbl 时,他以更大版本的电脑鼠标命名。它小巧、有用,并且除了它的设计用途之外别无他物。所以,如果你问他,它的发音就像“gerbil”。如果你问自 2011 年以来的开发人员 Sonny Jeon,他会说它的发音是“grr-ble”,因为在项目工作时他被妻子戏弄了太多次。如果你问 Shapeoko 的 Edward Ford,他可能会说“garble”,即使他知道得更多。无论如何,你想怎么发音就怎么发音。我们喜欢听到对我们名字的各种解释!

我认为有一个错误!我该如何帮助?

多年来,Grbl 已经过充分的测试和审查,但我们是人类,仍然会犯愚蠢的错误。如果您认为自己发现了问题,请先快速搜索一下,看看我们是否知道它或者是否已经有修复程序。如果没有,请在此处发布新问题,并附上问题描述以及有关如何重现问题的任何说明。请也发布您的$I 构建信息字符串和$$ 设置!它使调试速度更快。最后,如果您没有使用最新版本的 Arduino IDE 来上传 Grbl 或正在刷新我们预编译的 hex 文件,请告诉我们什么 IDE 版本或您如何编译 Grbl。谢谢!!

v1.0 发生了什么?有 v0.9,然后是 v1.1。出了什么事?

Grbl v1.0 是一个未正式发布的开发版本。一些 OEM 和用户无论如何都开始使用这个开发 v1.0 版本。因此,GUI 开发人员有 v1.0 用户要求支持它。为了让 GUI 开发人员更容易,Grbl v1.0 被跳过了,所以他们不必试图弄清楚哪个 v1.0 是哪个。如果 - 仅出于遗留原因 - 您需要访问 v1.0,此处提供 v1.0c:https://github.com/doppelhub/grbl1.0c

我的 GUI 没有连接到 Grbl,但通过串行终端直接连接工作正常!出了什么事?!

通信协议在 Grbl v1.1 中进行了更新,以适应新的和更完整的实时数据,例如新的覆盖和引脚状态,并保持流带宽高效。这意味着曾经与 Grbl 一起使用的旧 GUI,如旧版本的 UGS,如果尚未更新以支持 v1.1,则可能无法使用。首先下载最新版本的 GUI,看看是否能解决您的问题。如果没有,请尝试另一个 Grbl GUI,如 UGS Platform 或 bCNC。

编译 Grbl

如何编译 Grbl 并上传它?

请参阅我们的 编译 Grbl 以获取推荐的方法列表!

我得到这个“可用内存不足,可能会出现稳定性问题。”编译 Grbl 后警告!有问题吗?!

不! Grbl 将 Arduino 328p 处理器打包到其绝对最大值。它确实使用了所有的可用内存和闪存,以使其尽可能好。 Grbl 被设计成不需要那么多堆栈内存。

在哪里可以下载预编译的 Grbl HEX 文件以烧录到我的 Arduino?

预编译 Grbl HEX 文件的链接位于首页的“版本”选项卡上。或者点击这里

HEX 文件大于 Arduino 可容纳的 32K。还会上传吗?

是的,应该。编译后的 HEX 文件是十六进制格式,而不是二进制格式。所以它可能比 Arduinos 上的 32K 闪存限制大一些。不过,不会超过 32K 的两倍。

烧录 Grbl

如何将 Grbl 烧录到我的 Arduino?

有关详细信息,请查看 Wiki 帮助页面。如果它们不是最新的,如果您发现它们有误或有其他方法,请通知我们或更新它们。谢谢!

Grbl 是否会覆盖 Arduino 引导加载程序?

不! Grbl 适用于 ATmega328P,无需覆盖引导加载程序;您仍然可以在刷新后上传 Arduino 草图,而无需重新烧录引导程序。注意:Grbl v1.0 对于 Arduino Duemilanove 兼容板来说可能太大了,因为它们的引导加载程序占用 1.5KB,而不是 Uno 上的 0.5KB。这意味着可用闪存少 1KB。

Grbl 不适合我的 Arduino Nano(或基于 FTDI 的 Arduino)!我是不是彻底完蛋了?

不!默认的 Grbl 构建将适合 Arduino Nano。只是勉强。如果启用 CoreXY 支持等编译时选项,则可以轻松超过 Nano 的 30.5KB 限制。 但是,您有几个选项可以释放更多闪存。首先,您可以使用 备用 Arduino 将更小的 Arduino Uno 引导加载程序(0.5KB 与 1.5KB)写入您的 Nano!只需连接起来,选择 Arduino Uno 作为您的开发板,然后将 Uno 引导加载程序写入您的 Nano。恭喜!现在您有 1 KB 的额外闪存。您的 Arduino Nano 现在将表现得像一个 Uno!只要确保 Arduino IDE 通过选择 Uno 作为板来了解它。 (注意:在某些 Nano 上,您可能必须在开始闪烁时硬重置您的 Nano。)第二个选项是使用备用 Arduino 通过 ISCP 头直接将 Grbl 写入 328p 处理器。这将完全摆脱引导加载程序并释放所有剩余的闪存。别担心,如果您愿意,您仍然可以重新编写引导加载程序。

Grbl 移植

你会为 X MCU 制作一个移植吗?

即将发布的 Grbl HAL 的目的是能够将工作负载分散给 MCU“专家”,以针对特定 MCU 以及该 MCU 可以做什么来定制他们的端口。它们各不相同,并且具有独特的需求/能力。

基于 Grbl 的项目包括具有硬件抽象的多个引脚分配。但这不包括 328p Uno。只有 Mega、ARM 或任何具有足够内存和闪存的微型设备。我自己不会支持移植,但有兴趣为社区维护特定移植的用户。

同时这里是最新社区移植的列表,如果您知道其他移植,请在此处贡献

Grbl 1.1

Grbl 0.9

扩展 Grbl

####我想给Grbl添加一些新功能,328p上还剩下多少空间? 字面上没有留下,v1.1 用尽了最后一点,使用 Grbl for Mega2560 代替!

好的,我正在使用 Mega,如何添加 LCD 或其他附加组件?

这样做的最佳做法是让 Grbl 完成它的工作,并使用另一个 arduino 进行显示和手动控制。

虽然可以为此直接编辑源代码,但编写与 Grbl 对话的发件人更容易、更安全,但您不会冒险破坏它,而且将来的更新也不会有问题。

以下是社区对此问题的一些已知贡献;

为什么我不能使用 Arduino 库?

Grbl 是用纯 C 语言编写的,不使用任何 Arduino 代码,如果你尝试的话,它会崩溃。它仅使用 IDE 作为工具来编译和烧写它。

如果您想添加功能,您必须仅使用 Grbl 源代码进行编辑和编写。 避免任何 Arduino 函数调用。

如果我对库进行硬编码怎么办?

Arduino 库有大量的依赖项。涉足这将需要您完全理解 Arduino 源代码的全部内容。这是可行的,但祝你好运。

连接 Grbl

当我启动我的 Arduino 时,我的 CNC 移动不规律!它为什么这样做?

在 Grbl 初始化之前,Arduino 引导加载程序需要一两秒钟才能启动。在此期间,步进器启用引脚为低电平,在 Grbl 完成初始化并将引脚设置为高电平以禁用步进器之前,该引脚已启用。这个短暂的时刻使您的步进驱动器容易受到电子噪声的影响,因此如果您的驱动器步进引脚有足够的噪音来错误地指示步进,则您的步进器可能会开始不规律地移动。

对于直接的 Arduinos,这可能是一个不可避免的问题。然而,有一些潜在的解决方案。您可以尝试找到电子噪音的来源并将其移除(风扇太靠近其他电子设备)。您可以在步进器启用线上放置一个上拉电阻,以在启动过程中禁用步进器。您还可以完全删除 Arduino 引导加载程序并通过 ICSP 头安装 Grbl,这需要特定的硬件来完成。

当 Arduino 板由 USB 供电并且步进驱动器有自己的逻辑电压供应时,不要忘记连接两个电路的地。

当我启动我的 Arduino 一两秒钟时,我的主轴会打开!它为什么这样做?

这仅适用于具有某些自定义编译时选项的用户,即在启用“VARIABLE_SPINDLE”(默认)时使用主轴方向引脚作为启用引脚(自定义选项),使用引脚 D13 作为主轴启用。问题来自 Arduino 引导加载程序本身。通电后,它会切换引脚 D13 一两秒钟,使 D13 LED 闪烁,让用户知道 Arduino 处于活动状态。如果您的主轴启用引脚连接到这个 D13 引脚,那么它会告诉您的主轴在每次闪光时打开和关闭,直到 Grbl 启动并且该引脚最终正确初始化。

你能做什么?有几个选项,难度越来越大。首先,您可以尝试在没有 Arduino 引导加载程序的情况下刷新 Grbl。你需要一个我SCP 程序员或备用 Arduino(将 Arduino 视为 ISP)直接刷入 Grbl。您只需要将编程器正确连接到目标 Grbl 板,并在 Arduino IDE 的“工具 -> 编程器”菜单中选择合适的编程器。其次,硬件解决方案是将 D13 引脚与在引导期间处于非活动状态的其他东西进行门控。第三,您可以更改 Grbl 固件以尝试选择另一个可用引脚作为主轴启用引脚。您应该能够更改 cpu_map.h 文件以在同一端口上使用不同的引脚,但由于存在 LED,D13 不能用作输入引脚。因此,您可能必须组合限制销以共享轴,例如 Z 和 X,以使端口上可用。否则,您需要更改 Spindle_control 源文件以将启用引脚移动到不同的端口,例如引脚 A0-A5。第四,您可以自定义 Arduino 引导加载程序以在初始化时不刷新引脚 D13。但是,修改、编译和刷新引导加载程序可能是一种痛苦,并且仅适用于高级用户。

我的 Z-limit 和 Z-homing 不起作用!我从 Grbl v0.8(或更低版本)更新,它曾经可以工作!怎么回事?

在 Grbl v0.9 及之后,Grbl 切换 z 限制(D11)和主轴启用引脚(D12)以访问引脚 D11 上的硬件 PWM,以启用可变主轴输出(也称为主轴速度)并启用激光支持。这在“连接 Grbl”维基页面和各种其他站点和问题线程中有详细记录。这最常见的原因是普遍使用基于旧的 v0.8 引脚配置的廉价开源 CNC 屏蔽。这些克隆板的制造商并没有并且似乎拒绝更新设计,但是该板的某些版本已更新为原始设计者的当前引脚配置。最简单的解决方案是恢复到旧的引脚配置。但是,这会牺牲您的激光支持和可变主轴输出。为此,只需在 Grbl 的 Arduino 库路径中编辑 config.h 文件,注释掉 #define VARIABLE_SPINDLE 行,然后重新编译和刷新。如果你想在这些廉价的克隆板上支持激光和可变主轴,有几种关于如何改变板的解决方案,比如焊接跳线,但这不是问题的地方。只需在网络上搜索即可。有很多解决方案和先前的问题线程已经非常深入和详细地回答了这个问题。

配置 Grbl

$$ 设置描述发生了什么变化!他们不见了!我很混乱。

我们也很想他们!在 Grbl v1.1 之前的版本中,$$ 机器设置打印输出过去常常在每个设置后都有漂亮的文本描述,让你知道你在看什么。在 Grbl v1.1 中,这些都消失了。基本上,它归结为使用近 1KB 的空间来进行这些漂亮的设置描述或删除新激光模式或实时覆盖等功能。正如您所看到的,功能赢了!然而,为了解决这个仅仅查看一大堆令人困惑的数字的问题,我们已经要求 GUI 开发人员帮助并在他们的程序中为用户添加这些描述。我们在 /doc/csv/ 文件夹中添加了一些易于解析的 CSV 文件,这些文件将始终保持更新。如果您的 GUI 没有这样做,请让他们知道 CSV 文件!

编写单个设置很乏味。有没有办法加快这个速度?

是的,有一种非常简单的方法可以一次性写入所有设置。只需将当前设置复制并粘贴到文本文件中,这意味着“$$”命令的整个打印输出以及所有内容。 Grbl 将忽略这些标签,因为它们在 '()' 注释内。将 '=' 字符后的值更改为您需要的任何值。保存文件并使用我们 repo 的“/script”文件夹中的“simple_stream.py”流脚本将其流式传输到 Grbl。 (或者,你可以使用带有 -s 设置模式标志的其他流脚本 stream.py。)一旦它被流式传输,你的所有设置都会更新!

我的 Grbl 设置和参数在烧录 Grbl 后都很奇怪!如何清除我的 EEPROM 以从头开始?!

烧录后,Grbl 尝试检查 EEPROM 中的设置。如果发现不兼容,它会自动清除 EEPROM 并恢复其默认值。我们试图在我们可以用于检查的有限闪存空间内涵盖所有场景,但有时我们会遗漏某些内容,并且 EEPROM 中的数据可能与您拥有的版本不兼容。或者,烧录过程出现问题并损坏了 EEPROM,这种情况偶尔会发生。这导致数据具有奇怪的数字和值。在 Grbl v0.9j 及更高版本中,清除 EEPROM 的最简单方法是使用 $RST=* 命令。这会将 Grbl 使用的 EEPROM 空间恢复为默认值。

在尝试此方法之前,请咨询您的 CNC 制造商!他们有时会在 EEPROM 中存储一些产品 ID 和校准数据! 对于早期版本的 Grbl 或做一个完整的 EEPROM 擦除,Arduino IDE 示例可以为您执行此操作,可在“文件->示例->EEPROM->eeprom_clear”中找到。将 for 循环中的 512 字节改为 1024 字节并上传。这应该会擦除您的 EEPROM。当您重新刷新 Grbl 时,您将从一个全新的状态开始。

归位循环不正常!动作都在错误的方向!或者它在点击限位开关时不停止!

当用户测试他们的硬限位开关并看到 Grbl 触发硬限位警报时,这是一个非常常见的错误。他们认为这意味着他们的限位开关接线正确。 不对。 Arduino AVR 处理器不会告诉您限制引脚处于什么状态以及触发了哪个引脚(更高级的处理器会告诉您这一点)。因此,Grbl 将在 pin 状态的任何 ** 变化** 时触发硬限制。因此,如果您的限位开关以某种方式反转,您将遇到归位问题。

为了检查和解决这个问题,Grbl 的归位循环假设您已经正确设置了轴方向。因此,在标准铣床上,这意味着每个轴的正方向是:Z 轴主轴向上移动,Y 轴工作台向您移动(或托架移开),X 轴工作台向左移动。完成此设置后,归位循环默认的“$23=0”方向设置是在所有轴的 方向开始运动,从 z 轴开始,然后是 x 轴和 y 轴一起。如果您使用 $23 设置反转了轴搜索方向,那么它将在 negative 方向开始搜索。

如果在您开始归位周期时它没有按预期方向移动,然后在一段短距离(大约 2.5 倍 $27 的回拉距离)后停止,那么您可能存在电气干扰问题。 Grbl 检测到您的限位开关由于噪音而被触发,并跳到归位周期的回拉运动阶段。您需要为限位开关添加噪声过滤和屏蔽功能。有关更多信息,请参阅 限位开关 wiki 页面。

为什么 Grbl 归位后所有负坐标?或者它太烦人了,而不是我习惯的!

启用归位后,Grbl 将所有机器空间设置为负空间。对于拥有 3D 打印机的人或新手来说,这似乎很不寻常,但这就是 CNC 铣床的历史(并且由于对如何使用工作坐标系和刀具偏移的误解。见下文。)3D 打印机具有单个坐标系统,它在所有正空间中。他们可以这样做,因为它是增材制造,而不是减材制造。 3D 打印机挤出机的长度和喷嘴位置是固定的,归位循环始终可以始终以喷嘴尖端为基准。因此,打印作业始终可以从零到正 Z 的打印床开始,并且将 X 和 Y 设置为正值也很简单,这样所有轴都在正空间中。

然而,数控铣床则相反。它从一块工件的顶部开始工作,然后向下铣削材料,或 Z-negative。如果您尝试在所有正空间中设置铣床,例如 3D 打印机,则它不起作用,因为您无法再从工具提示中进行参考。主要问题是铣床接受不同长度的不同刀具,并且可能会沿刀具长度不一致地夹住刀具。每次更换刀具并触发到床身时,机床坐标系都会发生变化,与实际机床行程不一致。这是不行的,尤其是当您需要为下一次操作重新夹头或更换刀具时,因为您已经丢失了参考系统。在 CNC 铣床上设置 Z 轴参考点的唯一自然且一致的位置是将其放置在 Z 行程的顶部,这样 Z 全为负且刀尖始终相对于行程(使用 G43.1刀具偏置)。

如果在 CNC 铣床上由于参考 Z 行程而不是刀尖,Z 始终为负,则认为 XY 轴也应设置在负空间中。作为快速向操作员显示他们正在查看的坐标系的一种方式,将带有 XY 工作台的 CNC 机床朝向操作员进行快速设置,或者让龙门式 CNC 将刀具移离操作员。事实是没有人真正知道为什么机器空间都是负的,而不是 Z 负和 XY 正的混合。即使是我的两个机械师朋友,他们拥有 70 年的经验,并且从运行第一台带有穿孔卡片或卷带盘的 CNC 机器的日子开始,他们也不知道为什么。请记住,Z-travel 几乎总是 Z-负,除非您碰巧拥有一个带有预设刀具的刀具更换器,每个刀具都具有已知的机器行程偏移(大多数都没有,因为这些非常昂贵,精度增加)上)。

无论如何,如何设置机器坐标系(全部为正、全部为负或混合)是没有意义的,因为 CNC 铣床(和其他传统的l CNC)主要在工件坐标系中运行,其中工件坐标系只是参考机床坐标系的可编程偏移。除非明确要求这样做,否则所有运动都在活动工件坐标系中执行(Grbl 有六个 G54-G59,默认为 G54)。它们非常有用,因为它们的原点可以放置在机器的任何位置并以多种不同的方式使用(使用 G10L2 和 G10L20 命令)。例如,您可以在任何时间和电源循环之间重新启动作业,以在限位开关的精度范围内,因为您的机器坐标系是可重复的,并且您的工作坐标偏移量保存在 EEPROM 中。或者,由于 CAM 程序根据零件零生成 g 代码,通常在要铣削的一块坯料的顶部,工作坐标系可以轻松地在机器的不同区域复制作业,无需额外的 CAM,只需简单更改每个作业之间的工作坐标偏移量。因此,机器坐标系仅用作一致且准确的机器位置作为参考,并确保您在有效的机器空间(软限制)内操作。

对于 CNC 铣床以外的用例或对机器处于负空间感到恼火的人,有一个编译时选项将强制 Grbl 将原点设置为归位循环结束的任何位置。因此,如果您想要一台机器在所有正空间中,只需在 config.h 文件中取消对 HOMING_FORCE_SET_ORIGIN 选项的注释,将限位开关设置在行程的负端,Grbl 将设置原点[0,0,0] 归位完成后。但是,请记住,如果您有铣床,强烈建议您参考 Z 行程的顶部,而不是刀尖,这样由于上述原因,行程将为 Z 负值。请记住,您可以使用 G10L2 和 G10L20 命令轻松地将工作坐标系设置为在所有正空间中操作!

将归位回拉设置为大于零时,为什么它会撞到我的限位开关?!

归位回拉问题几乎总是由用户在常闭限位开关而非常开开关中接线引起的。或者,用户针对他们的开关类型错误地反转了他们的限位开关设置。 Grbl 默认要求常开限位开关的原因纯粹是为了保持历史连续性。常开或常闭开关与 Grbl 一起工作,如果它们连接到地和限制引脚。 Arduinos 已经有一个很好的小内部上拉电阻,所以通常你不需要添加另一个。虽然建议您在引脚和地之间并联一个小电容器,以创建一个简单的低通滤波器电路,以帮助消除瞬态电噪声。

如何将我的归位循环配置为仅执行 2 轴?或者我有一个笔式绘图仪,但没有 Z 轴。

为 2 轴 CNC 机床配置 Grbl 很容易。 config.h 文件包含许多编译时选项,您可以根据特定需要启用或禁用这些选项,包括将归位循环更改为仅在 X 和 Y 轴上执行。每个选项都有说明和说明,但有些用户可能不熟悉 C 编程、注释和宏。所以,这是如何做到的。您将在 config.h 文件中看到两行,如下所示: #define HOMING_CYCLE_0 (1<<Z_AXIS) // 要求:首先移动 Z 以清除工作区。 #define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) // 可选:然后同时移动 X、Y。 将这两行更改为如下所示: #define HOMING_CYCLE_0 (1<<X_AXIS) #define HOMING_CYCLE_1 (1<<Y_AXIS) 而已!通过 Grbl Wiki 中概述的上传过程重新编译和重新刷新 Grbl。

如何为 RAMPS 板配置 Grbl?还是 Arduino 步进扩展?

简而言之,Grbl 与 RAMPS 或 Arduino 扩展板不兼容(除非它们是专门为 Grbl 制作并宣传与 Grbl 一起使用的)。主要原因是 Grbl 的引脚布局旨在确保 Arduino 微控制器产生的最大性能。虽然仍然可以改变 Grbl 以与 RAMPS 板一起工作,但需要深入了解 Grbl 的工作原理和非初学者编码技能才能这样做。目前,没有计划使 Grbl RAMPS 的 328p 版本兼容。然而,Grbl 的 Mega2560 版本最近添加了简单的 RAMPS 1.4 支持。

使用 Grbl

如何连接并开始使用 Grbl?

Grbl 通过串行端口进行通信,就像在 Arduino IDE 中一样。您可以通过任何标准串行终端程序(即 Coolterm)以 115200 波特(v0.8 及更早版本为 9600)连接到它。连接后,您应该会看到一条短消息,指示 Grbl 版本和设置方法。只需输入有效的 G 代码命令,然后回车,Grbl 应该以 okerror: 消息。注意:当您向 Grbl 键入命令时,您不会看到任何字符回显。

如何将完整的 G 代码程序流式传输到 Grbl?

可以通过串行端口通过简单的发送和响应方法将 g 代码程序流式传输到 Grbl。当 Grbl 准备好接收另一个命令时,每个命令后跟一个返回都会被响应。有关更多详细信息,请参阅 Using Grbl wiki 页面,因为有多个流脚本和 GUI 可以为您执行此操作。

为什么我不能将文件上传到 Grbl?或者我发誓 XON/XOFF 流量控制曾经工作过!

您会认为只需将文件上传到 Grbl 即可,但事实并非如此。此功能需要某种串行流控制来向计算机指示接收器 (Grbl) 的串行读取缓冲区何时已满以及何时准备好获取更多数据。 Arduino 的硬件流控制线被硬连线用于重置和重新刷新 Arduino,而不是用于流控制。 XON/XOFF 软件流控制不受 Arduinos 的正式支持,但它们用于在较旧的 Arduinos 上工作。这是由于 Arduino 的 USB 到串行仿真器芯片最近从 FTDI 切换到 Atmega。这个想法是允许人们将他们自己的固件刷到这些仿真器芯片上以满足他们自己的需求,其中 FTDI 芯片是一个封闭平台。此开关无意中删除了 FTDI 的 XON/XOFF 软件流控制支持。据我们所知,没有推动恢复 XON/XOFF 流量控制。虽然,由于这个固件现在是开源的,如果有人这样做或合适的人,它可能会出现。

我的步进驱动器需要在方向引脚和步进引脚设置之间有一个时间延迟! (或者我注意到我的步进电机在多次方向改变后漂移。)我该如何配置/解决这个问题?

这个问题来自Grbl的主要步进算法。它在步进器引脚之前立即设置方向引脚,这可能不会在某些步进驱动器之间有足够的时间来确认方向变化。在多次方向更改后,这可能会导致步进器轻微漂移。 Grbl 主分支有一个实验性编译时选项,可在设置方向引脚后和启动步进脉冲之前创建用户指定的时间延迟。这是通过启用另一个中断(Timer2 比较)来完成的。但是,由于它确实添加了另一个中断,因此这可能会对 Grbl 的高端性能(即高阶跃频率或复杂曲线)产生不利影响,但这尚未经过彻底测试以验证这一点。如果一切都证明是可靠的,我们将考虑在以后的版本中添加此功能。因此,请报告此功能的任何成功或问题! 还有一个不需要重新编译的黑客/解决方法。 Grbl 反转掩码设置不仅可以反转您的方向引脚,还可以反转您的步进器引脚。因此,它们不是正常的低,而是正常的高。由于大多数步进驱动器仅通过检测上升(或下降)沿来确认步进,而忽略另一个,因此您可以创建虚拟方向引脚时间延迟。请注意,现在您的 Grbl 脉冲微秒设置现在将定义此时间延迟,您将不再对步进脉冲时间长度有任何控制(但这应该无关紧要,因为您的步进驱动器不应该关心。)尽管有报告某些步进驱动器不喜欢长时间保持正常高位,但尝试一下也无妨。 :)

Grbl 表现得很奇怪。断开连接、冻结、断开线路。这是怎么回事?

这可能有很多原因,但最常见的是电磁干扰。如果您在逻辑线或 USB 线附近有交流电源线或步进电机接线,这些“高”电源线的电磁学可能会导致逻辑线偶尔出现尖峰。这会导致奇怪的连接问题、冻结等。确保将它们彼此分开,如果不能,请尝试将它们彼此成 90 度角(使用以太网电缆,应该在这里工作)同样)。另一种解决方案是将一个小电容器与您的逻辑线路并联,从而创建一个高频低通滤波器。这将消除一些尖峰。另外,检查接地。如果您的设置接地不良,接地回路会导致逻辑输入电压不稳定。确保您尽可能地接地,尤其是您的电机驱动器。

过去,报告此问题的用户通常指出,这是由共享交流电路上的设备过多、接地不良、真空电机太近或逻辑线离冷却风扇太近造成的。

此外,如果您在流式传输时掉线,这可能是由特定计算机或环境 (Java) 上的 USB 转串口驱动程序问题引起的。据报道,基于 Java 的 Universal GcodeSender 可以掉线(尽管最近报道已修复),其中 Grbl 支持的 Python 流g 脚本没有。如果您遇到此问题,请尝试使用支持的流脚本作为比较。

G 代码

G 代码在哪里定义?他们做什么?

Grbl 试图遵循伟大的 LinuxCNC 项目设置的 g 代码标准。单击 链接 以查看这些始终最新的描述。有一些细微的差异,并列在主 Wiki 页面上。 Grbl 曾经使用 NIST NGC/RS274 v3 标准进行数字控制,也就是 G 代码,但这个标准有点过时和僵化。如果您好奇,LinuxCNC 是 NIST 标准的直接延续。

为什么 Grbl 的某些 G 代码与其他 CNC 机器上的有些不同?

虽然 Grbl 遵循 LinuxCNC 标准,但 G 代码本身并未在所有现有 CNC 机器和制造商之间标准化。数值控制相当古老、神秘,并且早于 MS-DOS。换句话说,这是一团糟。已经推动标准化,就像 NIST 一样,它只对大多数常见的 G 代码命令成功。然而,有一些 G 代码没有标准化,例如 G 代码 G28/G30、G92.X 等。 Grbl 的目标是遵循已发布的标准,以便人们可以根据它进行构建,所以以免进一步混淆 G 代码。

那你为什么使用LinuxCNC 的G-codes 而不是NIST 标准呢?你不是在混淆 G 代码吗?

是的。这是不可避免的,但至少它是泥水,而不是粘糊糊的泥浆。 NIST 标准仅涵盖基本功能,其中一些已经过时。有一些其他 CNC 机器和制造商使用的非常有用的 G 代码功能未被 NIST 甚至 LinuxCNC 涵盖。我们选择了一个 LinuxCNC,它是用户支持的、开源的并且已经为爱好者所熟悉。所以我们认为只要坚持一个,每个人都会开心。

但是 Grbl 有一些与 LinuxCNC 不同的 G 代码命令?你是伪君子吗?

是的。完全地。也有点自私。说实话,G 代码变得混乱,因为它没有涵盖所有情况和场景。随着时间的推移,用户会开始更喜欢以某种方式操作机器,或者机器功能会发生变化,有些机器会拥有它,而另一些则不会。机器制造商会改变他们的 G 代码,或者编写新的代码,以方便他们的用户群或支持他们新的 undefined-by-gcode 功能。例如,3D 打印机热潮创造了大量 G 代码命令的意大利面条团,但由于他们必须控制新事物,例如挤出机和热控制器,其中大部分是不必要的。同样,Grbl 调整了“M3”和“M4”命令,使其特别适合激光模式下的激光切割机/雕刻机。由于激光极其危险且容易起火,因此为了安全起见,“M3”和“M4”仅在“G1 G2 G3”运动模式下才会开启。此外,为了添加 Grbl 的新动态功率激光模式,“M4”用于区分动态激光功率模式与使用“M3”作为恒定功率模式的激光 CAM 工具的现有支持。应该注意的是,在此 G 代码更改之前联系了 CAM 开发人员,以查看它是否符合规定。它是。

为什么要将圆分成多个弧?不只是画一个完整的圆圈?

这来自如何在 G 代码中定义弧的问题。在半径模式 R 中,求解一个完整的圆或半圆的路径会导致严重的数值舍入问题,这是不可避免的。这会导致刀具路径出错。事实上,NIST 指南声明仅对 0-165 度和 195-345 度的弧角使用 R 模式。一些 CNC 制造商实际上不允许用户画一个完整的圆来完全避免这个问题,只限制用户最多只能做 90 度或 180 度的弧形运动。将所有弧形运动分成 90 或 180 度运动是一种很好的做法。但是,增量弧模式I,J 没有这个问题,但是分开你的弧仍然是一个很好的做法。

当程序中有 G10、G28.1 或 G30.1 命令时,Grbl 在流式传输时似乎表现得很奇怪。这是怎么回事?

这与 EEPROM 写入以及它如何在写入时自动关闭所有中断进程有关,包括串行中断。这些暂停最多可能发生 20 毫秒,这意味着在该时间段内可能会丢失一个串行字符。 G10、G28.1 和 G30.1 命令都将坐标偏移参数写入 EEPROM,以便它们在会话之间保持不变。实际上,您几乎不需要在 G 代码程序中更新这些 **,因为它们是在机器设置期间执行的,并且通常是手动编码的。如果出于某种原因确实需要在程序中流式传输这些命令,那么遗憾的是没有真正的方法可以解决这个问题。如果您找到了一个好的解决方案,请告诉我们。

上面提到的这个 EEPROM 写问题,什么数据保存在 EEPROM 中?

Grbl 只在 EEPROM 中存储一些东西。 '$$' 主要设置数组、G54-G59 工作坐标偏移、G28/G30 预定义位置、$N 启动行字符串和 $I 构建信息用户字符串。