G-code para Impresoras 3D – Tutorial 2020

Las impresoras 3D son máquinas basadas en microprocesadores, así como lo son las computadoras o teléfonos celulares de hoy en día. Todos los dispositivos basados en microprocesadores tienen un lenguaje máquina específico basados en unos y ceros (lenguaje binario).

Como este lenguaje es poco entendible por nosotros y es específico para cada procesador, no es muy práctico trabajarlo directamente. Lo mejor es un lenguaje un poco menos complejo y más genérico.

El lenguaje de programación de control numérico (CNC programming) se ha consolidado como el estándar en el mundo de la fabricación automatizada. Existen diversos tipos de lenguajes de control numérico y Gcode es uno de los populares debido a su menor complejidad y pequeño tamaño.

g code

¿Que es G-code?

Gcode (o código G) es un lenguaje de control numérico usado para enviar instrucciones a la mayoría de equipos de fabricación automatizada, incluyendo las impresoras 3D. Es un lenguaje simple que usa líneas de código con diferentes letras y números para indicar a la impresora, dónde moverse, cuando moverse, encendido y apagado de ventilador, inicio de calentamiento de la boquilla, por nombrar algunas.

Aunque Gcode es el lenguaje más usado para el control de las impresoras 3D, no es el único. x3g es otro lenguaje usado por impresoras 3D como la ReplicatorG y la MakerBot. Sin embargo, x3g es un lenguaje binario (basado en unos y ceros) más difícil de entender que Gcode.. Por otro lado, G code es más usado por las impresoras DIY y Open Source.

¿Cómo están formados los comandos?

Puedes crear múltiples líneas de código combinando las diferentes instrucciones que conforman el lenguaje. Cada línea de código representa una instrucción que debe realizar la impresora 3D. Por ejemplo, la siguiente línea de código le indica a la impresora que debe mover su extrusor hasta la posición X=10 mm de la cama, a una velocidad de 3600 mm/min

G1 X10 F3600

Esto representa una línea de código y es una instrucción única para la impresora 3D.

También podemos crear muchas líneas de código, cada una indicando una instrucción distinta a la impresora. Por ejemplo, 


1 G1 X0 Y0 F2400 ; mover el extrusor a la posición X=0 y Y=0 de la cama, a una velocidad de 2400 mm/min.

2 G1 Z10 F1200 ; mover el eje Z a la posición Z=10 mm, a una velocidad de 1200 mm/min.

3 G1 X30 E10 F1800 ; pasa 10 mm a través de la boquilla mientras mueves el extrusor a la posición X=30 mm.


Estas 3 líneas de código le indican a la máquina 3D que debe moverse a las provisiones indicadas en los comentarios y a la velocidad indicada.

Las letras del Código G

Cada línea de código está compuesta por diferentes combinaciones de letras y números. Cada combinada le indican algo específico a la impresora. A continuación, vemos el significado de cada letra:

G = Comandos G. Comandos G code geométricos para indicar movimientos del extrusor de la impresora 3D. Se usan para iniciar las instrucciones de movimientos a través de la plataforma de impresión.

M = Comandos M. Comandos máquina no geométricos usados para iniciar acciones que no están asociados a movimientos sobre la plataforma de impresión. Encender/apagar, calentar/enfriar, etc.

X/Y/Z = Ejes de coordenadas. Indican que el extrusor debe moverse en alguna de los ejes X, Y o Z.

F = Velocidad del movimiento. Se usa para indicar la velocidad a la que debe moverse el extrusor de la impresora 3D.

E = Extrusión de filamento. Se usa para indicar la cantidad de filamento que debe ser pasado a través de la boquilla del extrusor.

S = Temperatura del extrusor o velocidad del ventilador de enfriamiento. Cuando se usa con los comandos G, se usa para indicar la temperatura (en grados centígrados) que debe alcanzar el extrusor. También se usa para ajustar la velocidad del ventilador que enfría el objeto impreso, cuando se usa con los comandos M.

T = Especificar extrusor. Cuando tenemos más de 1 extrusor, podemos especificar cual extrusor se usará en cada comando específico. Con T0, normalmente, solicitamos el extrusor derecho. T1, se suele usar para pedir el extrusor izquierdo.

Cada letra va acompañada de uno o varios números que representan el valor a ejecutar o un argumento que complementa el comando.

Más abajo vemos cómo el número puede influenciar bastante la ejecución de la tarea de impresión 3D.

El símbolo Punto y Coma (;)

El signo de punto y coma (;) se usa para agregar comentarios al código sin que esto afecte la programación. Es decir, el compilador no toma en cuenta nada que esté después del punto y coma.

Los números en Gcode

Los números indican el valor del comando a ser ejecución. En el caso de los comandos con G y M, los números cambian el tipo de comando. Veamos algunos casos:

F3600. El número 3600 indica el valor de velocidad a la que debe moverse el brazo de la impresora 3D. En este caso, es 3600 mm/min.

E20. El 20 representa la cantidad de filamento que debe ser pasada a través del extrusor. En este caso, es 20 mm.

X15, Y10. En este caso, el 15 indica los milímetros que debe moverse el extrusor en el eje X, mientras que el 10 indica que debe moverse 10 mm en el eje Y.

Z10. En este caso, la impresora debe elevar el extrusor 10 mm hacia arriba en el eje Z.

G1. En este caso, el 1 no representa un valor geométrico. Solo se usa para indicar el tipo de comando que se quiere enviar. En este caso, G1 indicar que el comando es un movimiento lineal.

M104. Al igual que en el caso del comando G, El número 104 del comando M no representa un valor geométrico sino que se usa para indicar una función que se debe realizar. El M104 es un comando de máquina usado para iniciar el calentamiento del extrusor.

S255, S0, S127. Cuando se usa el comando S para representar la velocidad de ventilación, el número que lo acompaña puede estar entre 0 y 255. 0 representa el 0% de velocidad, es decir, apagado, y el 255 representa el 100 % de la velocidad, es decir, velocidad máxima.

Argumentos en el Gcode

Los comandos G y M pueden requerir argumentos para que la instrucción sea completada.

El resto de los comandos E, F, X, Y o Z junto con sus números de valor sirven de argumentos para los comandos G y M. Por ejemplo, 

G1 E10 F800

G1 es el comando G que especifica un movimiento lineal. E10 y F800 son los argumentos del comando que especifican empujar el filamento 10 mm a través de la boquilla y hacerlo a una velocidad de 800 mm/min, respectivamente.

Modos de posicionamiento en Gcode

Cuando envías un comando de movimiento a la impresora 3D, se lo puedes enviar en forma absoluta o relativa.

gcode impresora 3d

Un movimiento absoluto requiere indicar la posición específica dónde quieres que vaya el.extrusor sobre la cama. En estos casos, los valores indicados en X, Y y Z representan valores exactos en milímetros sobre la plataforma de impresión.

Al pedir una ubicación relativa, le dices a la máquina 3D que se mueva ciertos milímetros desde la ubicación actual del extrusor.

El movimiento absoluto es mayormente usado en los códigos G ya que los slicers suelen conocer la posición cero de la impresora 3D y suelen determinar previamente las opciones exactas a dónde moverse.

El comando G90 pide un movimiento absoluto, mientras que el comando G91 pide un movimiento relativo. Más adelante, veremos ejemplos de estos comandos.

El comando E – Extrusor

El extrusor es controlado como si fuera un eje adicional en la impresora 3D. En este caso, la letra E se usa para representar el eje del extrusor y suele ser usada en muchos comandos de movimiento como un eje más.

En el siguiente ejemplo se muestra como se le pide al extrusor que pase 2 mm de filamento a través de la boquilla. El comando G1 indica que el comando es lineal, como pasa con los ejes X, Y y Z.

G1 X7 Y18 F500 E2

¿Cuáles son los comandos G?

Como ya hemos dicho, la comandos G son instrucciones geométricas que inician los comandos del código G. Los comandos G inician con la letra G (de ahí el nombre) y siempre van acompañados por un número que especifica el tipo de comando a ser ejecutado.

Veamos los comandos G más comunes usados en impresión 3D:

Comando G1 – Movimiento lineal

G1 es el comando G más usado en el código G y especifica un movimiento en línea recta de cualquiera de los ejes X, Y y Z. Puedes pedir el movimiento de uno de los ejes o de varios en un solo comando. Por ejemplo,

G1 Z18 F2400

Se usa para pedir un movimiento lineal del eje Z. La impresora 3d debe elevar el extrusor 18 mm hacia arriba a una velocidad de 2400 mm/min.

G1 X10 Y10 F1200

Está instrucción pide un movimiento lineal de los ejes X y Y en un solo comando. El extrusor debe moverse hasta la posición X=10 mm y Y=10 mm de la cama de impresión. En ambos casos, debe ejecutarse a una velocidad de 1200 mm/min.

Por otro lado, como el extrusor es tratado como un eje adicional, se puede usar el comando E dentro de las instrucciones para pedir el empuje de filamento a través de la boquilla, como se muestra a continuación:

G1 X30 E10 F1800 ; pasar 10 mm de filamento a través de la boquilla a una velocidad de 1800 mm/min y, al mismo tiempo, mover el extrusor a la posición X=30 mm.

Comando G2 y G3 – Movimiento circular

G2 inicia el movimiento del extrusor en el sentido de las agujas del reloj hasta una posición determinada. Cómo argumento se establecen las coordenadas de la ubicación final del extrusor y su eje de rotación con los parámetros I y J.

El parámetro I especifica cuánto se desplaza el eje X respecto a su posición actual.

El parámetro J establece cuánto se desplaza el eje Y respecto a su posición actual.

Por ejemplo,

G2 X15 Y5 I0 J-12

Se pide que el extrusor realice un movimiento circular en el sentido de las agujas del reloj. El eje central lo tendrás desplazando 0 mm en el eje X y -12 mm en el eje Y. El movimiento termina cuando el extrusor alcance las posiciones X=15 mm y Y=5 mm.

El comando G3 usa los mismo parámetros pero específica que el movimiento circular se ejecutar en sentido contrario al de las agujas del reloj. Por ejemplo,

G3 X-20 Y10 I1 J-15

Comandos G90 y G91 – Modo de posicionamiento del extrusor

Antes de iniciar un movimiento del extrusor, debes especificar si el movimiento es absoluto o relativo.

Para un movimiento absoluto, el extrusor se mueve a una ubicación específica en los ejes X, Y, Z y E. El comando G90 se usa para especificar un movimiento absoluto. Un ejemplo se muestra a continuación:

G90
G1 X25 F3600 E0.02

El movimiento relativo implica que el extrusor avanzará ciertos milímetros en alguno de los ejes desde su provisión actual. Esto se especifica con el comando G91, tal como se muestra en el siguiente ejemplo:

G91
G1 X10 Y10 F2400

Comando G92 – Ajustar posición actual

El comando G92 se usa para ajustar el valor actual de alguno de los ejes o funciones a un valor deseado. Por ejemplo, puedes indicar a la impresora 3D que el filamento se ubique en la posición 0 mm en el extrusor como se muestra a continuación:

G92 E0 ; ajustar posición del filamento en la posición 0 mm.

En este caso, el argumento especifica el tipo de función o movimiento requerido. En vez de E, pudiste usar las coordenadas X, Y, o Z, para ajustar la posición del extrusor.

Comando G28 – Enviar el extrusor a Home

Lo más recomendable antes de iniciar la impresión 3D es llevar el extrusor hasta la posición conocida como Home. Esta es la posición en los bordes más lejanos de la impresora y es una ubicación conocida a nivel de programación.

Con Gcode se puede hacer iniciar la secuencia de Home con el comando G28, como se muestra a continuación:

G28

Este es el comando sin el uso de argumentos y totalmente válido para llevar a los 3 ejes a su posición de Home.

Si queremos hacer Home de 1 o 2 ejes en específico, lo podemos hacer usando argumentos como se muestra a continuación:

G28 X ;  iniciar la secuencia de Home del eje X.
G28 Y Z ; iniciar la secuencia de Home de Los ejes Y y Z.

Comando G0 – Movimiento rápido

Si queremos llevar el extrusor a una posición específica de forma rápida, podemos usar el comando G0 e indicar las coordenadas del movimiento. Al usar G0, la impresora mueve el extrusor a las coordenadas indicadas usando la máxima velocidad de viaje de la máquina.

Por ejemplo,

G0 X5 Y10

Comandos G17, G18 y G19 – Establecer planos de circunferencia

Aunque se usan poco, los comandos G17, G18 y G19 te permiten establecer los planos para circunferencias de tus impresiones tridimensionales. Es decir, cambia el plano de referencia para la impresión.

G17 establece el plano en los ejes X y Y. En este caso, el círculo va alrededor del eje Z. Este es el plano predeterminado en todas las impresoras 3D.

G18 establece el plano en los ejes X y Z, mientras que G19 establece el plano en los ejes Y y Z. Ambos comandos cambian el significado de los parámetros I, j y k para los comandos G2 y G3.

Estos comandos se usan cuando realizar interpolación circular y, para ello, deben estar acompañados de los comandos G02 y G03.

Usarlos estos comandos en tan simple como se muestra a continuación:

G18

Comandos G20 y G21 – Establecer unidades de medida

Si estás en USA seguro quieres que tus impresiones sean en pulgadas, pero si estás en el resto del mundo quieres que las medidas de tus coordenadas sean en milímetros.

El comando G20 establece que las medidas sean en pulgadas, mientras que G21 las establece en milímetros. Sería algo así para pulgadas,

G20
G0 X5 Y13

Así sería para milimetros,

G21
G0 X5 Y13

Los comandos M

Los Comandos M son comandos a nivel de máquina que permiten ejecutar acciones no geométricas. Por ejemplo, encender o apagar el ventilador, subir o bajar temperatura de la boquilla, etc. Los comandos M arrancan con una M ( de allí su nombre).

Veamos los comandos M más importantes:

Comandos M104 y M109 – Calentar Extrusor

Cuando queremos calentar el Extrusor para pasar el filamento a través de la boquilla, recurrimos a los comandos M104 y M109.

El comando M104 inicia el calentamiento del extrusor y al mismo tiempo permite la ejecución de otras acciones por parte de la impresora 3D. Por ejemplo:

M104 S190 T0 ; Iniciar el calentamiento del Extrusor T0 hasta 190 grados centígrados.
G28 X0 ; enviar todos los ejes a Home, mientras se calienta el Extrusor.

Recordemos que el comando S representa la temperatura deseada en grados centígrados y T se usa cuando existe más de un extrusor en la impresora.

El comando M109 ejecuta el calentamiento del extrusor pero no permite ejecutar otras actividades hasta que se alcance la temperatura programada.

M109 S190 T0 ; esperar a que el Extrusor T0 alcance los 190 grados centígrados para poder hacer alguna otra acción.

Comando M106 – Ajustar Velocidad del ventilador

Para controlar el ventilador que apunta hacia el objeto impreso podemos usar el comando M106 de la siguiente forma:

M106 S255 ; se ajusta el ventilador a la velocidad máxima.

En este caso, S especifica la velocidad del ventilador y 255 es el valor de velocidad máxima, siendo 255 = 100 % de la velocidad.

En el ejemplo siguiente, la velocidad del ventilador es ajustada a 50% con el 127 (255/2) acompañando a la S.

M106 S127

Si queremos apagar el ventilador, solo debemos ajustar la velocidad a 0, lo cual significa un 0% de velocidad.

M106 S0

Comando M112 – Parada de emergencia

Cuando las cosas se salen de control, se puede usar el comando M112 para detener inmediatamente el proceso de impresión. Los motores y los calentadores se enfrían cuando se activa este comando.

Comandos M140 y M190 – Calentar la cama

Cuando queremos calentar la cama caliente podemos usar los comandos M140 y M190, los cuales funcionan de forma similar a los comandos M104 y M109.

Con el comando M140, se iniciar el calentamiento de la plataforma de construcción mientras otros comandos se ejecutan en paralelo. A continuación se muestra un ejemplo:

M140 S50 ; iniciar el calentamiento de la cama hasta 50 grados centígrados.
G28 ; Llevar los 3 ejes a Home.

Por otro lado, el comando M190 se usa para bloquear cualquier otro comando hasta que se alcance la temperatura programada. En el ejemplo, a continuación, se muestra como programar el comando M190:

M190 S50 ; Calentar hasta 50 grados centígrados. Esperar alcanzar esta temperatura para poder ejecutar algún otro comando.

¿Cómo crear instrucciones G-code?

Todas las impresoras comerciales tienen su propio programa slicer que se encarga de convertir el modelo 3D y las instrucciones en Gcode. Es un proceso automático realizado por el software y es la forma recomendada para la mayoría de los proyectos.

En el programa slicer, configuras los parámetros de temperatura, velocidad de ventilador, etc. Todo lo haces con ventanas fáciles de manejar. 

Cuando haces la compilación del código y lo envías a la impresora 3D, el slicer convierte esos parámetros en comandos M.

El slicer también filetea el modelo 3D (que vino en formato stl) y lo convierte en código G (Comandos G).

También puedes crear Gcode desde cero como se explica a continuación:

Crear Gcode desde cero

Si eres un fanático del DIY o estás creando tu propia impresora 3D, puedes crear tu propio código G desde cero respetando los comandos asociados al firmware de tu impresora 3D. Recuerda que cada impresora tiene su propio firmware y cada firmware tiene su propio Gcode.

Para las impresoras Open source RepRap que suele usar el muy popular firmware Marlin. Todas las impresoras 3D DIY que tienen este firmware respetan los comandos estándares de código G indicados al principio de este artículo.

Para crear tu código G desde cero solo necesitas un editor de texto como notepad++ y empezar a escribir las instrucciones y comandos para el firmware de tu impresora 3D.

Nota: no recomendamos realizar la creación de Gcode desde cero a menos que estés muy especializado en programación de lenguaje máquina. Ten en cuenta que un comando mal colocado puede causar daños a tu impresora.

Slicers como Simplify3D, Cura o Slic3r tienen herramientas para la edición y prueba de las instrucciones que vas creando paso a paso

¿Cómo editar un archivo G code?

Para editar un archivo de código G necesitas usar un editor de texto como Notepad++. La gente de Simplify3D ofrecen un archivo XML que permiten remarcar la sintaxis del código. En los siguientes enlaces puedes descargar el Notepad++ y la el archivo creado por Simplify3D.

https://notepad-plus-plus.org/downloads/

https://www.simplify3d.com/public/3DP-Gcode-Styling.xml

Scroll to Top