que-es-el-g-code-y-su-importancia-en-la-impresion-3d

Qué es el G-Code y su importancia en la impresión 3D

En esta entrada vamos a ver qué es el G-Code, uno de los componentes fundamentales de la impresión 3D y que a veces es más desconocido dentro del proceso.

Como vimos en la entrada de introducción al proceso de impresión 3D junto al programa de dibujo, el software para slicer y la propia impresora, el G-Code es uno de los partes integrantes del proceso de impresión 3D.

Empezamos por recordar que nuestra impresora es “tonta” y no entiende ni sabe nada de ficheros 3D, superficies, o mallas trianguladas. Nuestra impresora 3D “solo sabe” desplazarse a la coordenada X, Y, Z y depositar una cierta cantidad de material.

Precisamente el G-Code es el fichero que contiene esa programación como un listado de instrucciones sencillas que la impresora tiene que seguir para imprimir la pieza correctamente.

En G-Code se obtiene del proceso de Slicer, donde sí se tiene en cuenta la geometría 3D a través del fichero STL, así como los distintos parámetros y configuración como, por ejemplo, del material e impresora.

El resultado es un fichero de texto plano que finalmente pasamos a la impresora, bien por cable, por tarjeta SD, o por WiFi, para realizar la impresión.

Si abrimos este fichero con un editor de texto, veremos un listado muy largo de instrucciones que tiene la siguiente pinta.

M140 S65
M105
M190 S65
M104 S246
M105
M109 S246
M82
G21
G90
M82
M107
G28 X0 Y0
G28 Z0
G1 Z15.0 F9000
G92 E0
G1 F200 E3
G92 E0
G1 F9000
M117
G92 E0
G1 F1320 E-3
G0 F3600 X84.088 Y79.686 Z0.3
G1 F1320 E0
G1 F1440 X84.796 Y79.083 E0.0464
G1 X85.354 Y78.663 E0.08124
G1 X86.273 Y78.068 E0.13586
G1 X87.654 Y77.305 E0.21458
;.... muchas más lineas

Afortunadamente para nosotros, la mayor parte de las veces no tendremos que hacer nada con el G-Code. Nuestra función se limitará en cogerlo y pasarlo a la impresora para ejecutar el trabajo.

Solo en raros casos donde queramos algo muy avanzado (variar la temperatura entre capas, añadir una pausa para poner un inserto) deberemos modificarlo. Y siempre con cuidado, porque la máquina va a hacer lo que digamos, y podemos cargárnosla.

Sin embargo, aunque la mayoría de las veces el G-Code va a ser transparente para nosotros, dado su papel fundamental en la impresión 3D bien merece la pena para que entendamos qué es y cómo funciona.

¿Qué es el G-Code?

El G-Code, también conocido como RS-274, lenguaje de programación G, o ISO-Code, es el lenguaje de programación más empleado en máquinas de control numérico (CNC).

El código G-Code no es exclusivo de la impresión 3D. Por el contrario, es ampliamente empleado en todo tipo de máquinas como tornos, fresadoras, corte por láser, desde muy pequeñas hasta de tamaño industrial.

Un fichero en G-Code está formado por un conjunto de instrucciones sencillas que indican a una máquina las operaciones que debe realizar. Por ejemplo, desplazar una parte (cabezal, garras, topes), realizar un cambio de herramienta.

Aunque el conjunto de instrucciones está “más o menos” estandarizado, existen distintas implementaciones como por ejemplo la ISO 6983, DIN66025, Siemens, FANUC, Haas. También es frecuente que algunos fabricantes añadan algunas instrucciones para trabajar con sus máquinas.

Cada línea (llamado bloque) de un programa escrito en RS-274 tiene la siguiente forma,

N , G , X , Y , Z , F , M , S , T ;

Cada bloque puede tener alguna o todas de esas direcciones aunque, de existir, el orden debe mantenerse. Además, se pueden poner comentarios empezando por ’;’

Los significados de cada una de estas letras es el siguiente

NLine number
GMotion
XHorizontal distance
YVertical distance
ZDepth
FFeed rate
SSpindle speed
TTool selection
MMiscellaneous functions
I and JIncremental center of an arc
RRadius of an arc

En internet encontraréis extensos listados con las instrucciones habituales en G-Code, su significado y parámetros

G-Code en impresión 3D

Como vemos, el G-Code es un lenguaje de programación de máquinas CNC y sus distintas implementaciones están pensadas para controlar distintos tipo de máquinas, por lo cual contienen un conjunto de instrucciones muy amplio para poder controlar a todas ellas.

Nuestra impresora 3D no deja de ser una máquina CNC. En este caso el firmware es el que se encarga de interpretar cada línea de G-Code y ejecutar las acciones oportunas en la impresora.

Sin embargo, lógicamente, no todas las instrucciones del estándar son de aplicación en una impresora 3D. Aquí tenéis un listado con algunas de las más importantes y que más frecuentemente encontraremos en el ámbito de impresoras FFF/FDM.

CódigoSignificado
M0Parada
M1Sleep
M2Fin de programa
M70Mostrar mensaje en pantalla
M104Temperatura del extrusor
M106Velocidad del ventilador
M107Apagar ventilador
M140 y M190Temperatura de la cama
M116Esperar que temperaturas se estabilicen
M112Parada de emergencia
G0Movimiento rápido
G1Movimiento controlado
G4Pausa
G10Retracción
G11Desretracción
G20Establecer unidades en pulgadas
G21Establecer unidades en milímetros
G28Mover al origen (Home)
G29Autonivelado
G90Posicionamiento absoluto
G91Posicionamiento relativo
G92Establecer posición

De esta forma, el fichero que antes hemos visto, significa lo siguiente.

G21                                    ;trabajar con milímetros
G90                                    ;usar posicionamiento absoluto
M82                                    ;colocar el extrusor en posicionamiento absoluto
M107                                   ;apagar ventilador
G28 X0 Y0                              ;mover el extrusor a la posición 0,0 del plano
G28 Z0                                 ;bajar el extrusor hasta la posición 0 en altura
G92 E0                                 ;iniciar la extrusión a 0
G1 F200 E3                             ;extruir 3 mm de filamento
G92 E0                                 ;resetear la extrusión a 0
G1 F9000                               ;establecer velocidad a 9000 milímetros/minuto
M117 Imprimiendo…                      ;escribir mensaje en el LCD
G0 F9000 X58.972 Y85.198 Z0.300        ;posicionamiento rápido en 58.972,85.198,0.300                                
G1 F1200 X60.320 Y84.421 E0.02927      ;establecer velocidad a 1200 milímetros/minuto, posicionar en 60.320,84.421 y extruir a 0.02927
G1 X61.800 Y83.771 E0.05967            ;posicionar en 61.800,83.771 y extruir a 0.05967
G1 X63.363 Y83.286 E0.09046            ;posicionar en 63.363,83.286 y extruir a 0.09046
...                                    ;codigo eliminado hasta primera capa para el ejemplo                                     
M106 S127                              ;encender ventilador a la mitad de potencia (127)
G0 F9000 X62.284 Y90.092 Z0.400        ;posicionar rápidamente en 62.284,90.092,0.400
G1 F540 X61.718 Y90.448 E4.19702       ;posicionar en 61.718,90.448 y extruir a 4.19702
G1 X61.271 Y90.723 E4.20031            ;posicionar en 61.271,90.723 y extruir a 4.20031
G1 X60.679 Y91.092 E4.20468            ;posicionar en 60.679,91.092 y extruir a 4.20468
                                       ;codigo eliminado hasta final extrusion para el ejemplo
M104 S0                                ;apagar extrusor
M140 S0                                ;apagar la cama caliente
G1 E-1 F300                            ;retraer filamento (para liberar presión)
G28 X0 Y0                              ;mover a 0,0
M84                                    ;apagar motores

Conclusión

Hemos visto qué es el G-Code, un lenguaje de programación para máquinas CNC, ampliamente empleado en la industria, y del que existen distintas implementaciones para todo tipo de máquinas, incluidas nuestras impresoras 3D.

El G-Code está formado por un conjunto de instrucciones sencillas que indican a la impresora los trabajos a realizar para conseguir imprimir la pieza correctamente.

En la mayoría nuestra función con el será únicamente traspasarlo a la impresora para ejecutar el trabajo. Aunque, en ocasiones, podemos hacer modificaciones a mano para añadir ciertas funciones.

Hasta aquí la entrada sobre G-Code en impresión 3D. En la próxima entrada empezaremos a ver las partes de una impresora FFF/FDM. ¡Hasta pronto!