马林G代码终极指南--如何将其用于3D打印

Roy Hill 06-08-2023
Roy Hill

G-Code在3D打印中被广泛使用,特别是通过Marlin固件。 许多人想知道如何使用G-Code使其受益,所以我决定写这篇文章来帮助读者。

在本文的其余部分有一些关于G-Code的有用细节,请继续阅读以了解更多。

    什么是3D打印中的G代码?

    G-Code只是一种用于CNC(计算机数控)机器的编程语言,如3D打印机、数控铣床等。它包含一组命令,固件用来控制打印机的操作和喷头的运动。

    G代码是如何创建的?

    用于3D打印机的G代码是通过一个称为切片机的特殊应用程序创建的。 这个程序将你的3D模型切成薄的2D层。

    然后,它指定打印头通过的坐标或路径,以建立这些层。 它还控制和设置特定的打印机功能,如打开加热器、风扇、摄像头等。

    市场上流行的切片机包括PrusaSlicer和Cura。

    G代码的类型

    虽然CNC命令的一般名称是G代码,但我们可以将命令大致分为两类;它们包括::

    • G-Code
    • M-代码

    G-Code

    G代码是指几何代码。 其主要功能是控制打印头的运动、位置或路径。

    使用G代码,你可以在一条直线上移动喷嘴,将其定位在一个特定的地方,提高或降低它,甚至移动它通过一个弯曲的路径。

    它们的前言是一个 G 以表明它们是G代码。

    M-代码

    M-Code代表杂项命令,它们是控制打印机除喷头运动外的其他功能的机器命令。

    他们负责的事情包括:打开和关闭电机,设置风扇速度等。另一个M-Code负责的事情是设置床的温度和喷嘴的温度。

    它们的前言是一个 M, 它代表着杂项。

    什么是G代码的 "口味"?

    G-Code风味是指你的打印机固件(操作系统)期望其G-Code格式化的方式。 由于不同品牌的打印机使用不同的G-Code标准和固件,因此存在不同的风味。

    例如,像移动、加热器开启等标准命令在所有打印机中都是通用的。 然而,一些小众的命令并不一样,如果用错机器,就会导致打印错误。

    为了应对这种情况,大多数切片机都有设置打印机配置文件的选项,这样你就可以为你的机器选择合适的味道。 然后,切片机将把3D文件翻译成适合你机器的G代码。

    G代码的一些例子包括RepRap.Marlin、UltiGcode、Smoothie等。

    3D打印中的主要G代码列表

    有许多G代码命令可用于不同的3D打印机固件。 以下是你在打印时可能遇到的一些常见命令以及如何使用它们。

    马林M0[无条件停止]

    M0命令被称为无条件停止命令。 它在最后一个动作后停止打印机的运行,并关闭加热器和电机。

    在停止打印机的操作后,它或者休眠一段时间,或者等待用户的输入,然后重新上线。 M0命令可以接受三个不同的参数。

    这些参数是::

    • [P <; 时间(ms) >]: 这是你想让打印机休眠的时间,以毫秒为单位。 例如,如果你想让打印机休眠2000ms,你将使用 M0 P2000
    • {S<; 时间(s) >]: 这是你想让打印机休眠的时间,单位是秒。 例如,如果你想让打印机休眠2秒,你就用 M0 S2
    • [ 信息 ]: 你可以使用这个参数在打印机暂停时在其LCD上显示一条信息。 例如、 M0 按中间的按钮,重新开始打印 .

    请注意: ǞǞǞ M0 命令与 M1 指挥。

    马林M81

    M81命令关闭了打印机的PSU(电源装置)。 这意味着所有的加热器、马达等将无法工作。

    此外,如果电路板没有任何替代电源,它也会关闭。

    马林M82

    M82命令使挤出机处于绝对模式,这意味着如果G代码要求挤出机挤出5毫米的长丝,它就会挤出5毫米,而不考虑之前的任何命令。

    它覆盖了G90和G91命令。

    该命令只影响挤出机,所以它与其他轴无关。 例如,考虑这个命令;

    M82;

    G1 X0.1 Y200.0 Z0.3 F1500.0 E15;

    G1 X0.4 Y20 Z0.3 F1500.0 E30;

    挤出机被设置为绝对模式,使用 M82 在第2行,它通过挤出15个单位的长丝来绘制第一条线。

    在第2行之后,挤压值并没有被设置为零。 因此,在第3行中, E30 指挥部使用 "挤出30个单位的长丝"。 E30 指挥。

    马林M83

    M83命令将打印机的挤出机设置为相对模式。 这意味着如果G代码要求挤出5毫米的长丝,打印机就会根据之前的命令累计挤出5毫米。

    M83命令不接受任何参数。 例如,让我们把上一个例子的命令运行回来,用 M83 .

    M83;

    G1 X0.1 Y200.0 Z0.3 F1500.0 E15;

    G1 X0.4 Y20 Z0.3 F1500.0 E30;

    E15 所以,在第2行,E值并没有设置为零,而是保持在15个单位。 所以,在第3行,不是挤出30个单位的长丝,而是挤出30-15=15个单位。

    马林M84

    Marlin M84命令禁用一个或多个步进和挤出机电机,你可以将其设置为立即禁用或在打印机空闲一段时间后禁用。

    它可以接受四个参数。 它们包括:

    • [S<; 时间(s) >]: 这指定了在命令启动和禁用电机之前的空闲时间。 例如、 M84 S10 在不活动10秒后禁用所有步进器。
    • [e], [x], [y], [z]: 你可以使用其中的一个或多个来选择一个特定的电机来空转。 例如、 M84 X Y 使X和Y马达空转。

    请注意: 如果你不在命令中使用任何参数,它会立即使所有步进电机空转。

    马林M85

    M85命令在一段时间不活动后关闭打印机和固件。 它输入一个时间参数,单位为秒。

    如果打印机闲置不动超过设定的时间参数,那么打印机就会关闭。 例如,如果你想在打印机闲置5分钟后关闭它,你可以使用以下命令:

    M85 S300

    马林M104

    M104命令为打印机的热端设置一个目标温度并开始加热。 设置目标温度后,该命令不等待热端达到该温度。

    在后台加热时,它立即转入运行其他G-Code命令。 它需要五个参数,分别是::

    • [S<; 温度(摄氏度 )>]: 它规定了挤出机的目标温度,单位是摄氏度。
    • [T<; 指数(0 >]: 如果打印机有一个以上的喷嘴,你可以用它来选择你要设置温度的喷嘴。
    • [B <; 温度(摄氏度 )>]: 它设置了允许热端达到的最高温度。 你可以将其与 S 参数为热端设置一个温度范围。

    例如,如果你想把双挤出机的第二个喷嘴加热到200℃,你将使用命令 M104 S200 T1 .

    马林M105

    M105 G-Code命令要求向主机发送温度报告。 据报道,有些主机可以隐藏M105命令的回复,所以最好使用M155命令。

    你可以得到挤出机温度、床层温度,甚至是建造室温度,单位是摄氏度。 这是一个独立的命令,所以你只需要发送 M105 命令给打印机。

    报告应包括可用加热器的实际和目标温度。

    • T - 挤出机温度
    • B - 床位温度
    • C - 室内温度

    马林M106

    M106命令打开打印机的风扇并设置其速度。 你可以通过使用其参数选择风扇并设置其速度。

    这些参数包括:

    • [S<; 0-255 >]: 该参数设置风扇的速度,数值范围从0(关闭)到255(全速)。
    • [P<; 索引(0,1,...)。 >]: 它决定了你要打开的风扇。 如果留空,它默认为0(打印冷却风扇)。 你可以根据你拥有的风扇数量,将它设置为0、1或2。

    例如,如果您想将喷嘴冷却风扇设置为50%的速度,命令是 M106 S127。 ǞǞǞ S 值是127,因为255的50%是127。

    你也可以使用 M106 命令,不带任何参数,将冷却风扇的速度设置为100%。

    请注意: 在前面的G代码命令完成之前,风扇速度命令不会生效。

    See_also: 如何在3D打印机上进行冷拉 - 清洁灯丝

    马林M107

    M107每次关闭打印机的一个风扇。 它只需要一个参数、 P ,这是你想关闭的风扇的索引。

    如果没有给出参数、 P 默认为0,并关闭打印冷却风扇。 例如,命令 M107 关闭打印冷却风扇。

    马林M109

    比如说 M104 命令,则 M109 命令为热端设置一个目标温度并对其进行加热。 然而,与此不同的是 M104 它等待着热端达到目标温度。

    在热端达到目标温度后,主机继续执行G-Code命令。 它采取的参数与M104命令采取的参数相同。

    然而,它增加了一个额外的内容。 这个内容就是:

    • [R<; 温度(摄氏度 )>]: 这个参数设置加热或冷却的目标温度。 与此不同的是 S 命令,它等待,直到打印机将喷嘴加热或冷却到这个温度。

    ǞǞǞ S 命令在加热时等待,但在冷却时不等待。

    例如,如果你想让喷嘴从一个较高的温度冷却到120℃,命令是 M109 R120。

    马林M112的停产

    M112是一个紧急停止的G代码命令。 一旦主机发送该命令,就会立即停止打印机的所有加热器和电机。

    任何正在进行的移动或打印也会立即停止。 激活该命令后,你将不得不重置打印机以恢复打印你的模型。

    在Marlin固件中,命令可能会被卡在队列中,需要一段时间才能执行。 为了避免这种情况,你可以启用 紧急情况_解析器 标志,以便在命令发送至打印机后立即执行该命令。

    你可以通过进入你的高级打印机配置文件(Marlin/Configuration_adh.v)来启用这个功能,然后从里面删除一些文字,如下所示:

     // 启用一个紧急命令解析器,在某些命令//进入串行接收缓冲区时对其进行拦截,使其不能被阻止。 // 目前处理M108、M112、M410 // 在使用AT90USB(USBCON)处理器的板子上不起作用! //#define EMERGENCY_PARSER 

    你需要删除#define EMERGENCY_PARSER之前的//,并重新编译源代码。

    你可以在下面的视频中了解更多关于更新Marlin固件的信息。

    马林M125

    M125命令暂停打印并将打印头停放在预先配置的停放位置。 它还在停放前将喷嘴的当前位置保存在内存中。

    在打印机的固件中通常有一个预先配置的停放位置。 您可以通过使用 "停放 "来将喷嘴停放在这个位置。 M125 单独的命令。

    然而,你可以使用这些参数中的一个或多个来改变它。

    • [L<; 长度 >]: 在停车后,这将从喷嘴中缩回设定长度的灯丝。
    • [X<; 姿势 >], [Y<; 姿势 >], [Z <; 姿势 >]: 您可以结合这些坐标参数中的一个或多个来为喷头设置一个新的停放位置。

    如果你想把喷嘴停在原点并缩回9毫米的长丝,命令是 m125 x0 y0 z0 l9.

    马林M140

    M140命令为床身设置一个目标温度,并立即继续执行其他G代码行。 它不等待床身达到目标温度后再将控制权返回给主机。

    在打印机执行其他行的G代码时,床身继续在后台加热。 它需要一个参数,就是:

    • [S<; 温度(摄氏度 )>]: 该参数设置床的目标温度,单位为摄氏度。

    例如,要将床铺加热到80 ° C,该命令为 M140 S80。

    马林M190

    M190命令为床铺设置一个目标温度,并等待床铺达到该温度。 在床铺达到该温度之前,它不会将控制权返回给主机或执行任何其他G代码。

    请注意: 如果你用 S 参数,它只在加热床时等待。 上升 然而,如果床必须冷却以达到该温度,主机就不会等待。

    为了使命令在加热和冷却时等待,你必须用以下方法设置目标温度 R 例如,要将床铺冷却到50 ° C,并等到它达到该温度,命令是 M190 S50。

    马林M400

    M400命令暂停G代码处理队列,直到缓冲区中的所有当前动作完成。 处理队列循环等待,直到所有命令完成。

    完成所有动作后,打印机继续执行该行之后的G代码。 例如,请看下面的G代码:

    M400;

    M81;

    第1行暂停处理,直到当前的所有动作完成,然后第2行使用以下方法关闭3D打印机 M81 关闭G代码的电源。

    马林M420

    M420命令检索或设置3D打印机的床身调平状态。 该命令仅适用于具有自动床身调平系统的打印机。

    在调平后,这些打印机会从打印床创建一个网目,并将其保存在EEPROM中。 M420命令可以帮助从EEPROM中检索这个网目数据。

    它还可以启用或禁用打印机使用该网格数据进行打印。 它可以采取几个参数,其中包括:

    • [S<; 0 1 >]: 它启用(1)或禁用(0)床面平整。 打印机必须在EEPROM中有一个有效的网孔才能启用床面平整。
    • [l<; 指数 >]: 如果有多个文件,它指定你要使用的床面平整网。 它接收网状数据的索引作为其值。
    • [V]: 如果设置为1,它将打印出网格数据,默认值为0。
    • [T]: 它设置检索到的网格数据的打印格式。0打印为人类可读的格式,1打印为CSV格式,4打印为紧凑格式。
    • Z<; 线型 >]: 它为打印机设置了一个Z淡化高度。 超过这个高度,打印机就会停止使用网格补偿。

    例如,假设你想把EEPROM中的第二个网格数据以CSV格式打印出来。 正确的命令是: M420 V1 I1 T1

    马林M420 S1

    M420 S1是一个子集。 M420 它使用从EEPROM中检索到的有效网格,在打印机上启用床身调平。

    如果EEPROM中没有有效的网格,它将不会做任何事情。 它通常是在 G28 归航指令。

    Marlin G0

    Marlin G0是快速移动命令。 它通过尽可能短的距离(直线)将喷嘴从构建板上的一个位置移动到另一个位置。

    它在移动时不铺设任何长丝,这使它能比G1命令移动得更快。 以下是它的参数:

    • [X<; 姿势 >], [Y <; 姿势 >], [Z<; 姿势 >]: 这些参数设置了在X、Y和Z轴上移动到的新位置。
    • [F<; 毫米/秒 >]: 打印头的进给率或速度。 如果没有,打印机将自动使用最后一条G1命令的进给率。

    因此,如果你想以100毫米/秒的速度快速移动喷头到原点,命令是 g0 x0 y0 z0 f100。

    马林G1

    G1命令以线性路径将打印机从一个点移动到构建板上的另一个点。 它被称为线性移动命令,因为它在各点之间移动时挤出长丝。

    这使它区别于快速移动( G0 它需要几个参数,包括:

    • [X<; 姿势 >], [Y <; 姿势 >], [Z<; 姿势 >]: 这些参数设置了在X、Y和Z轴上移动到的新位置。
    • [E<; 姿势 >]: 这设置了移动到新点时要挤出的长丝量。
    • [F<; 毫米/秒 >]: 打印头的进给率或速度。 如果没有,打印机将自动使用最后一条G1命令的进给率。

    例如,要在两点之间以50mm/s的速度直线铺设长丝,正确的命令是 G1 X32 Y04 F50 E10。

    Marlin G4

    G4命令使机器暂停一段时间,在这段时间内,命令队列暂停,所以它不会执行任何新的G代码命令。

    在暂停期间,机器仍然保持其状态。 所有的加热器都保持其当前的温度,而且马达仍然在运转。

    它需要两个参数,它们是::

    • [P<; 时间(ms) >]: 这指定了以毫秒为单位的暂停时间。
    • [S<; 时间(s) >]: 这设置了以秒为单位的暂停时间。 如果两个参数都设置了,则以S为优先。

    要想让机器暂停10秒,你可以使用命令 G4 S10。

    马林G12

    G12命令激活了打印机的喷嘴清洁程序。 首先,它将喷嘴移动到打印机上预设的位置,那里安装了一个刷子。

    接下来,它积极地在刷子上移动打印头,以清理粘在上面的任何灯丝。 以下是它可以采取的一些参数。

    • [P]: 该参数让您选择您想要的喷嘴清洁模式。0是来回直线,1是之字形模式,2是圆形模式。
    • [S<; >]: 你希望清洁模式重复的次数。
    • [R<; 半径 >]: 如果你选择模式2,清洁圈的半径。
    • [T<; >]: 这指定了 "之 "字形图案中三角形的数量。

    如果你想在刷子上以来回的方式清洁你的喷嘴,正确的命令是 G12 P0。

    Cura在其实验性设置中提供了一种使用该命令的方法。 你可以在我写的这篇关于如何在Cura中使用实验性设置的文章中阅读更多关于擦拭喷嘴命令的内容。

    马林G20

    G20命令将打印机的固件设置为将所有单位解释为英寸。 因此,所有的挤压、移动、打印,甚至是加速值都将以英寸为单位解释。

    因此,打印机将用英寸表示线性运动,用英寸/秒表示速度,用英寸/秒2表示加速度。

    马林G21

    G21命令将打印机的固件设置为将所有单位解释为毫米。 因此,线性运动、速率和加速度将分别以毫米、毫米/秒和毫米/秒2为单位。

    马林G27

    G27命令将喷嘴停放在构建板上的预定位置。 它等待,直到队列中的所有动作完成,然后它将喷嘴停放。

    当你想暂停打印,对打印进行调整时,这是非常有帮助的。 你可以停放喷嘴,以避免在打印物上盘旋并融化它。

    它需要一个参数,那就是:

    • [P]: 这决定了Z-park的位置。 如果你选择0,只有当喷嘴的初始高度低于Z-park的位置时,固件才会将喷嘴提升到Z-park的位置。

    选择一,无论其初始高度如何,都将喷嘴停放在Z区位置。 选择二,将喷嘴提高到Z区位置,但将其Z区高度限制在低于Z区最大值。

    如果你使用 G27 命令,没有任何参数,它默认为P0。

    See_also: 如何提高3D打印机的最高温度 - Ender 3

    马林G28

    G28命令使打印机在原点建立一个已知的位置。 归位是打印机找到打印机原点(坐标[0,0,0])的过程。

    它通过移动打印机的每个轴,直到它们碰到各自的限位开关。 每个轴触发其限位开关的地方是其原点。

    以下是它的一些参数:

    • [X], [Y], [Z]: 你可以添加这些参数中的任何一个来限制对这些轴的归位。 例如、 G28 X Y 只有X轴和Y轴的家庭。
    • [L]: 它在归位后恢复床位的平整状态。
    • [0]: 如果喷头的位置已经被信任,该参数将跳过归位。

    例如,如果你只想把X轴和Z轴作为原点,正确的命令是 G28 X Z. 要将所有的轴归位,你可以使用 G28 单独的命令。

    马林G29

    G29是自动床身调平指令。 它部署安装在你机器上的自动或半自动床身调平系统来调平床身。

    根据打印机的品牌,你可以在你的固件中拥有五种复杂的床身调平系统之一。 它们包括:

    • 网床平整
    • 自动调平床面
    • 统一床面平整
    • 自动床面平整(线性)。
    • 自动床面平整(3点)。

    每个人都有特定的参数来与打印机的硬件配合使用。

    马林G30

    G30命令用自动床身平整系统的探针探测特定点的构建板。 它这样做是为了确定该点的Z高度(从喷嘴到床身的距离)。

    在得到高度后,它将喷嘴设置为高于构建板的适当距离。 它需要一些参数,其中包括:

    • [C]: 将该参数设为1,可以进行温度补偿,因为大多数材料在加热时都会膨胀。
    • [X<; 姿势 >], [Y<; 姿势 >]: 这些参数指定了你要探测的坐标。

    要在喷嘴的当前位置探测床层,可以使用没有任何参数的命令。 要在一个特定的位置如[100, 67]探测,正确的命令是 G30 X100 Y67。

    马林M76

    M76命令暂停打印作业计时器。

    马林G90

    G90命令将打印机设置为绝对定位模式。 这意味着G代码中的所有坐标都被解释为相对于打印机原点的XYZ平面的位置。

    它也将挤出机设置为绝对模式,除非M83命令将其覆盖。 它不接受任何参数。

    马林G92/G92 E0

    G92命令将喷嘴的当前位置设置为指定的坐标。 你可以用它来排除打印床的某些区域,还可以为你的打印机设置偏移量。

    G92命令接收了几个坐标参数。 它们包括:

    • [ X<; 姿势 >], [Y<; 姿势 >], [Z<; 姿势 >]: 这些参数为喷头的新位置提供了坐标。
    • [E<; 姿势 >]: 该参数接收一个值并将其设置为挤出机的位置。 如果挤出机处于相对或绝对模式,你可以使用E0命令来重置挤出机的原点。

    例如,假设你想让你的床的中心成为新的原点。 首先,确保你的喷嘴在床的中间。

    接下来,发送 G92 X0 Y0 命令给你的打印机。

    请注意: G92命令保持端点设置的物理边界。 你不能用G92在X限位开关之外或在打印床下面移动。

    所以,就是这样!上面的G代码代表了每个3D打印爱好者应该知道的G代码库中的一小部分,但却是必不可少的。

    当你打印更多的模型时,你可能会遇到更多的G代码命令,你可以添加到你的库中。

    祝您好运,印刷愉快

    Roy Hill

    Roy Hill is a passionate 3D printing enthusiast and technology guru with a wealth of knowledge on all things related to 3D printing. With over 10 years of experience in the field, Roy has mastered the art of 3D designing and printing, and has become an expert in the latest 3D printing trends and technologies.Roy holds a degree in mechanical engineering from the University of California, Los Angeles (UCLA), and has worked for several reputable companies in the field of 3D printing, including MakerBot and Formlabs. He has also collaborated with various businesses and individuals to create custom 3D printed products that have revolutionized their industries.Aside from his passion for 3D printing, Roy is an avid traveler and an outdoor enthusiast. He enjoys spending time in nature, hiking, and camping with his family. In his spare time, he also mentors young engineers and shares his wealth of knowledge on 3D printing through various platforms, including his popular blog, 3D Printerly 3D Printing.