El G-code es el idioma que entiende tu impresora 3D: una lista de órdenes de texto que le dicen dónde moverse, cuánto extruir y a qué temperatura calentar. En esta guía verás cómo está organizado un archivo, qué hacen los comandos más usados y cómo leer el G-code de inicio y de final de tu laminador.
Los ejemplos siguen la sintaxis de Marlin, el firmware más extendido. Klipper y RepRapFirmware aceptan la mayoría de estos comandos.
En resumen
- Los comandos G son movimientos; los M son funciones de la máquina (temperatura, ventilador, motores).
- Las letras que acompañan al comando son parámetros:
X,Y,Z,E(extrusor),F(velocidad) yS(valor).- El G-code de inicio calienta, hace home y purga; el de final apaga calefactores, aparta el cabezal y desactiva motores.
Qué es el G-code
El laminador (Cura, PrusaSlicer, OrcaSlicer…) convierte un modelo 3D en miles de líneas de G-code. La impresora las ejecuta de arriba abajo, una a una.
Cada línea tiene esta forma:
G1 X50 Y25.3 E0.42 F1500 ; comentario opcional
G1: el comando (movimiento lineal).X50 Y25.3: destino en milímetros.E0.42: filamento a extruir durante el movimiento.F1500: velocidad en mm/min (1500 mm/min son 25 mm/s).;: todo lo que va detrás es un comentario y la impresora lo ignora.
Estructura de un archivo G-code
Un archivo típico tiene cuatro bloques:
- Cabecera: comentarios del laminador con el perfil, el tiempo estimado y el filamento.
- G-code de inicio: calentar, hacer home, nivelar y purgar la boquilla.
- Cuerpo: capa por capa, con comentarios como
;LAYER:0o;TYPE:WALL-OUTER. - G-code de final: apagar todo y dejar la pieza accesible.

El G-code de inicio y final lo defines tú en los ajustes de la impresora del laminador. El cuerpo lo genera el laminador.
Comandos de movimiento
| Comando | Qué hace | Ejemplo |
|---|---|---|
G0 | Movimiento rápido (sin extruir) | G0 X10 Y10 F6000 |
G1 | Movimiento lineal, con o sin extrusión | G1 X60 E2.5 F1200 |
G28 | Home: lleva los ejes a sus finales de carrera | G28 o G28 Z |
G29 | Nivelación automática de cama (sondeo de malla) | G29 |
G90 | Coordenadas absolutas | G90 |
G91 | Coordenadas relativas | G91 |
G92 | Fija la posición actual sin moverse | G92 E0 |
G0 y G1
En Marlin, G0 y G1 se comportan prácticamente igual. Los laminadores suelen usar G0 para los desplazamientos y G1 para las líneas con extrusión, lo que hace el archivo más fácil de leer.
G90 y G91: absoluto frente a relativo
Con G90, G1 Z10 significa «ve a Z = 10 mm». Con G91, la misma orden significa «súbete 10 mm desde donde estés».

Es muy útil en el G-code de final para levantar la boquilla sin saber a qué altura terminó la pieza:
G91 ; modo relativo
G1 Z10 F600 ; sube 10 mm desde la posición actual
G90 ; vuelve a modo absoluto
El extrusor tiene su propio modo: M82 (absoluto) y M83 (relativo). Tu laminador debe usar el mismo que declara el G-code de inicio.
G92 E0
Pone a cero el contador del extrusor. Lo verás antes de cada purga y, en muchos laminadores, al comienzo de cada capa.
Comandos de temperatura
| Comando | Qué hace | ¿Espera? |
|---|---|---|
M104 S200 | Fija el hotend a 200 °C | No |
M109 S200 | Fija el hotend a 200 °C | Sí, hasta alcanzarla |
M140 S60 | Fija la cama a 60 °C | No |
M190 S60 | Fija la cama a 60 °C | Sí, hasta alcanzarla |
Según la documentación de Marlin, M109 con S solo espera mientras calienta. Con R espera también si la temperatura tiene que bajar, algo útil al cambiar de material.
Un truco habitual es calentar los dos a la vez y esperar después:
M140 S60 ; cama a 60 sin esperar
M104 S200 ; hotend a 200 sin esperar
M190 S60 ; ahora espera a la cama
M109 S200 ; y luego al hotend
Ventilador, motores y memoria
| Comando | Qué hace |
|---|---|
M106 S255 | Ventilador de capa al 100 % (el valor va de 0 a 255) |
M106 S128 | Ventilador aproximadamente al 50 % |
M107 | Apaga el ventilador de capa |
M84 | Desactiva los motores paso a paso |
M500 | Guarda la configuración actual en la EEPROM |
M501 | Carga la configuración guardada |
M503 | Muestra la configuración actual |
M420 S1 | Activa la malla de nivelación guardada |
M500 es importante: cambios como los pasos por milímetro (M92) o el Z-offset (M851) se pierden al apagar si no los guardas. En Klipper, el equivalente es SAVE_CONFIG.
Ejemplo de G-code de inicio
Un inicio típico para una impresora tipo Ender 3 con sensor de nivelación:
G90 ; coordenadas absolutas
M82 ; extrusor en modo absoluto
M140 S60 ; cama a 60 °C
M104 S150 ; hotend a 150 °C para no gotear mientras sondea
M190 S60 ; espera a la cama
G28 ; home de todos los ejes
G29 ; sondea la malla (o M420 S1 si ya está guardada)
M109 S210 ; hotend a temperatura de impresión
G92 E0 ; contador del extrusor a cero
G1 Z2.0 F3000 ; sube un poco la boquilla
G1 X0.1 Y20 Z0.3 F5000 ; va al inicio de la línea de purga
G1 X0.1 Y200 Z0.3 F1500 E15 ; primera línea de purga
G1 X0.4 Y200 Z0.3 F5000 ; se desplaza a un lado
G1 X0.4 Y20 Z0.3 F1500 E30 ; segunda línea de purga
G92 E0 ; contador a cero de nuevo
G1 Z2.0 F3000 ; sube antes de empezar la pieza

Por qué cada paso:
- Hotend a 150 °C durante el sondeo: así no gotea plástico sobre la cama ni sobre el sensor.
- G28 antes que G29: el sondeo necesita saber dónde está el origen.
- Línea de purga: llena la boquilla de plástico fresco antes de la primera capa.
Ten en cuenta que G28 desactiva la nivelación en Marlin por defecto. Si no haces G29 en cada impresión, necesitas M420 S1 después del home.
Ejemplo de G-code de final
G91 ; modo relativo
G1 E-2 F2700 ; retrae 2 mm de filamento
G1 Z10 F600 ; sube 10 mm
G90 ; modo absoluto
G1 X0 Y220 F3000 ; lleva la cama hacia delante para sacar la pieza
M106 S0 ; apaga el ventilador de capa
M104 S0 ; apaga el hotend
M140 S0 ; apaga la cama
M84 X Y E ; desactiva motores (deja Z bloqueado)
Dejar el motor Z activo evita que el eje baje por su propio peso en algunas impresoras.
Cómo enviar G-code a la impresora
- Pantalla de la impresora: muchas permiten ejecutar comandos sueltos desde un menú.
- Pronterface o el terminal de OctoPrint: conectas por USB y escribes comandos uno a uno. Mira cómo controlar la Ender 3 con OctoPrint.
- Mainsail o Fluidd en impresoras con Klipper.
Al enviar M503, la impresora responde con su configuración, algo útil para saber qué valores tienes guardados.
Errores habituales
- Olvidar que F va en mm/min.
F50mueve el cabezal a menos de 1 mm/s. - Mezclar modo absoluto y relativo del extrusor. La impresora extruye cantidades absurdas en la primera capa.
- No guardar con M500. Los ajustes desaparecen al apagar.
- Mover Z con G91 y no volver a G90. El resto de la impresión se interpreta mal.
- Esperar al hotend antes de nivelar. Gotea sobre la cama durante el sondeo.



