如何使用Arduino设置GRBL并控制数控机床

如果你正在思考或正在制作自己的数控机床,那么你很可能会遇到GRBL这个术语。所以在本教程中,我们将学习什么是GRBL,如何安装和如何使用它来控制基于Arduino的数控机床。

此外,我们还将学习如何使用通用G代码发送器,这是一种流行的开源GRBL控制器软件。

什么是GRBL?

GRBL是一种开源软件或固件,可实现CNC机床的运动控制。我们可以轻松地将GRBL固件安装到Arduino上,因此我们可以立即获得低成本、高性能的CNC控制器。GRBL使用G代码作为输入,并通过Arduino输出运动控制。

为了更好的理解,我们可以看看下面的图表:

GRBL与Arduino数控机床工作原理

从图中我们可以看到,在数控机床工作原理的“大图”中,GRBL发生在何处。这是一个固件,我们需要安装或上传到Arduino,以便它可以控制数控机床的步进电机。换句话说,GRBL固件的功能是转换刀位点进入运动状态。

所需硬件

  • 阿杜伊诺–正如我们已经说过的,我们需要一个Arduino来安装GRBL。具体来说,我们需要一个基于Atmega 328的Arduino板,这意味着我们可以使用Arduino UNO或Nano。
  • 步进电机——很明显,步进电机提供机器的运动。
  • 司机–对于驱动步进电机,我们需要驱动器,当涉及到较小的DIY数控机床(使用NEMA 14或17步进电机)时,常见的选择是A4988或DRV8825司机。
  • Arduino数控盾–要将步进驱动器连接到Arduino,最简单的方法是使用Arduino CNC屏蔽。它利用了所有Arduino引脚,提供了一种连接所有设备的简单方法,包括步进电机、主轴/激光器、限位开关、冷却风扇等。

请注意,这些只是基本的电子元件,我们需要了解数控机床如何工作。

事实上,作为一个所有东西都需要连接的例子我们可以看看我的DIY数控泡沫切割机

Arduino数控机床电路图-电子元件必威lol

您可以在这里查看并获得建造这台数控机床所需的主要电子元件:必威lol

必威外围提钱披露:这些是附属链接。作为一名亚马逊员工,我通过符合条件的购买赚取收入。

这台数控机床的主要工具是一根热线,它可以很容易地熔化或切割聚苯乙烯泡沫塑料,并做出我们想要的任何形状。要了解更多关于我是如何制造这台机器以及所有东西是如何工作的细节,你可以查看特定的教程。

Arduino数控泡沫切割机

尽管如此,我们在这篇文章中将以这台机器为例,因为它的工作原理适用于任何其他数控机床,无论是铣床还是激光机床。

如何安装GRBL

首先,为了能够将GRBL安装或上传到Arduino,我们需要Arduino IDE

然后我们可以下载GRBL来自github.com的固件

GRBL-用于控制数控机床的开源Arduino固件

将其下载为.ZIP文件,然后执行以下步骤:

  • 打开grbl-master.zip文件并解压文件
  • 打开Arduino IDE,导航到草图>包含库>添加.ZIP库…

将新库添加到Arduino IDE

  • 导航到提取的文件夹“grbl master”,在其中选择“grbl”文件夹并单击打开的文件。现在我们必须把GRBL作为Arduino图书馆。

如何在arduino上安装grbl

  • 接下来,导航到文件>示例> grbl > grblUpload。一个新的草图会打开,我们需要把它上传到Arduino板。代码可能看起来很奇怪,因为它只有一行,但不用担心,所有的事情都在库的后台发生。我们只需要选择Arduino板,COM端口然后点击上传按钮,就完成了。

GRBL配置

此时,我们应该为我们的机器配置或调整GRBL。我们可以通过ArduinoIDE的串行监视器来实现这一点。打开串行监视器后,我们将收到类似“Grbl 1.1h['$'获取帮助]”的消息。如果看不到此消息,请确保将波特率更改为115200。

如果我们键入“$$”,我们将得到命令或当前设置的列表,它们显示如下:

$100=250.000(x,台阶/mm)
101美元= 250.000 (y,步骤/毫米)
$102=3200.000(z,步长/毫米)
$110=500.000(x最大速率,毫米/分钟)
$111=500.000(y最大速率,毫米/分钟)
$112=500.000(z最大速率,毫米/分钟)
$120=10.000(x加速度,毫米/秒^2)
$121=10.000(y加速度,毫米/秒^2)
$122=10.000(z加速度,毫米/秒^2)

所有这些命令都可以或应该根据我们的数控机床进行调整。例如,使用第一个命令,$100=250.000(x,步长/mm),我们可以调整机器每mm的步长,或者我们可以指定电机应执行多少步,以便x轴移动1mm。

但是,我建议保持这些设置不变。有一种更简单的方法可以根据我们的机器使用控制器软件来调整它们,我们将在下一节中解释。

GRBL控制器

因此,一旦我们安装了GRBL固件,现在我们的Arduino知道如何读取G代码以及如何根据G代码控制CNC机器。然而,为了将G代码发送到Arduino,我们需要某种接口或控制器软件来告诉Arduino该做什么。实际上,有很多开源和商业程序都是为了这个目的。当然,我们将坚持开源,因此作为示例,我们将使用单变量G码发送器

用于控制Arduino数控机床的通用G代码发送器

如何使用通用G代码发送器

对于本例,我将使用2.0平台版本。下载后,我们需要解压缩zip文件,进入“bin”文件夹并打开任何可执行的“ugsplatfrom”文件。这实际上是一个JAVA程序,所以为了能够运行这个程序,首先我们需要安装JAVA运行时环境

一旦我们打开通用G代码发送器,首先我们需要配置机器,或者配置前面显示的GRBL参数。为此,我们将使用UGS设置向导,该向导比通过Arduino IDE的串行监视器手动键入命令方便得多。

通用g代码发送器- GRBL配置

这里的第一步是选择波特率,应该是115200,以及我们的Arduino所连接的端口。一旦我们将Universal G-code sender与Arduino连接起来,下一步我们就可以检查电机的移动方向。

设置电机的旋转方向

如果需要,我们可以通过向导反转方向,或者手动翻转Arduino CNC护罩上的电机连接。

在下一步中,我们可以调整前面提到的steps/mm参数。在这里,更容易理解如何调整它,因为安装向导将计算并告诉我们应该更新参数的值。

设置每毫米步数参数

默认值为250步/毫米。这意味着,如果我们单击移动“x+”按钮,电机将前进250步。现在,根据电机的实际步数、选定的步进分辨率和传动类型,机器将移动一段距离。使用直尺,我们可以测量机器的实际移动,并在“实际移动”字段中输入该值。基于此,向导将计算并告诉我们应该更改步长/mm参数的值。

设置数控机床的每毫米步长参数

在我的例子中,我制作的DIY数控机床移动了3毫米。根据这一点,向导建议将steps/mm参数更新为83。

grbl步数校准

更新此值后,机器现在可以正确移动,软件中的1 mm表示CNC机器的1 mm。

在UGS控制台中,当我们执行每个操作时,我们可以看到执行的命令。我们可以注意到,通过更新steps/mm参数,UGS程序实际发送到Arduino,或GRBL固件,即我们前面提到的命令。这是默认值:$100=250.000(x,步长/mm),现在我们更新为每mm 83个步长的值:$100=83。

在下一步,我们可以启用限位开关,并测试它们是否工作正常。

数控机床限位开关设置

取决于它们是常开连接还是常闭连接,我们也可以在这里将它们倒置。

这里值得注意的是,有时我们需要禁用Z轴限位开关。这就是我的DIY CNC泡沫切割机的情况,我不需要Z轴限位开关,我必须禁用它,以便能够正确地将机器归位。为此,我们需要编辑位于Arduino library文件夹(或Documents\Arduino\libraries)中的config.h文件。

编辑用于关闭Z轴限位开关的GRBL配置文件

在这里,我们需要找到归位循环线,注释3轴CNC机床的默认设置,并取消注释2轴机床的设置。为了使更改生效,我们需要保存文件并将grblUpload草图重新加载到Arduino板上。

然而,在下一步中,我们可以启用或禁用CNC标记的归位。

我们的数控机床的归位设置

使用“尝试归位”按钮,机器将开始向限位端开关移动。如果方向相反,我们可以很容易地反转方向。

最后,在安装向导的最后一步,我们可以为我们的数控机床启用软限制。

为数控机床启用软限制

软限制可防止机器超出设定的工作区域。

结论

所以,多亏了GRBL固件和Arduino,我们可以很容易地设置和让我们的DIY数控机床运行。当然,在本教程中我们只介绍了基础知识,但我认为这足以理解事情是如何工作的,以及如何让我们的第一台数控机床启动和运行。

Arduino Uno和Arduino CNC护罩

当然,还有许多其他设置和功能可用,因为GRBL是真正有能力的CNC控制器固件。GRBL文档详细解释了所有这些,因此您可以随时查看它们的github.com上的wiki页面

此外,还有许多其他的开源GRBL控制器程序,如通用g代码发送器,这里有几个:GRBLweb (Web浏览器),GrblPanel (Windows GUI), grblControl (Windows/Linux GUI), Easel(基于浏览器)等。你应该探索它们,看看哪一个最适合你。

关于“如何使用Arduino设置GRBL和控制CNC机床”的8点思考

  1. 嗨,德扬,

    感谢本教程!我真的很感激,但是我有一些问题…

    您使用哪种CNC护罩?在图中,您似乎正在使用与grbl 1.1 afaik不兼容的v3.0。我使用相同的屏蔽,实际使用grbl 0.8来运行电机。grbl 1.1和shield v3.0有任何问题/错误吗?

    非常感谢。

    回复
    • 嘿,谢谢!我一直使用的CNC屏蔽是v3.0,或者说它在板上是这么说的。我没有遇到任何问题/错误,因此我可以就此发表任何意见。

      回复
  2. 您好,这是一个非常有帮助的解释像我这样的电影。我已经建立了我的迷你数控雕刻机,但努力使机器移动。然而,这只是因为我缺乏arduino和grbl编码的知识。不过,我会到达那里。感谢您就如何将所有东西结合在一起展开讨论。

    回复
  3. 乍一看,这篇文章似乎很全面。我很感激你为我的生活付出的时间和努力。虽然我现在对雕刻、激光印刷或制造数控机床制造小零件没有兴趣,但我一直在做一个绘图仪,用于印刷PCB板,我可以在氯化铁溶液中蚀刻。我设计并3D打印了我的CNC绘制仪PLA零件,从各种来源订购了必要的零件,如不锈钢棒,NEMA 17步进电机,方法兰直线轴承等。我的组装几乎完成了,我需要一个“大脑”的机器,我希望这篇文章提供了我。所以,非常感谢你的这篇见解深刻的文章。

    回复
  4. 你好,感谢分享这个信息,我问你一个问题,我有一个“核心XY”数控激光,工作很好,但我不得不关闭限位开关,因为他们造成了随机错误打印,即使他们没有按下。
    您是否对固件进行了任何修改?非常感谢。

    回复
    • 嘿,谢谢!问题可能是触发开关的电气噪音。您可以尝试将1k到4.7k的上拉电阻器连接到5V,并将去耦电容连接到GND以过滤噪声。

      回复

留言