G-Code (1)

Cuando vamos a imprimir en 3D, partimos de un archivo STL que pasamos por un programa denominado slicer que lo convierte en g-code. Este es el código de instrucciones para la impresora.

Estoy estudiando este código para poder hacer algunos scripts que generen cosas útiles ("cosas nazis, Peter...". Odio a cierto técnico...). Sobre todo temas para testar (el autocorrector me acaba de cambiar testar por testar, no lo sabía...) la impresora.

He empezado mirando un archivo de prueba. Here we go!

G21; Establece las unidades en mm frente a G20 que lo haría en pulgadas
M107; Apagar los ventiladores
M190 S70; Esperar a que la temperatura de la cama alcance 70º 
M104 S235; definir la temperatura del nozzle sea de 235º y devolver el control


Se supone que M104 y M190 serán reemplazados por el código G10:
G10 P3 X0 Y0 Z0 R140 S235
Esto establecería las características de la herramienta 3 (que debería ser el extrusor) a las posiciones X, Y, Z correspondientes. R y S establecen la temperatura de la herramienta en stand-by y en operación. Si tenemos doble extrusor, sería algo así como:
G10 P3 X0 Y0 Z0 R140:140 S235:235
Esto me supone varias dudas:
1) ¿Cómo se establece con esto la temperatura de la cama? Es decir… ¿A qué corresponde cada P?
2) ¿La temperatura de stand-by… ¿Es, por ejemplo, para que cuando estamos utilizando dos extrusores se reduzca el goteo? En ese caso ¿A qué velocidad recuperamos la temperatura de funcionamiento cuando cambiamos otra vez de extrusor?

De cualquier forma… yo uso Marlin y Marlin utiliza G10/G11 para movimientos de retracción y desretraccion. Aunque esto no está presente en la chuleta de códigos que me he descargado de la web de RepRap... tendré que bucear en el código fuente de Marlin.

G28 ; mueve todos los ejes a Home

Creía que todos los motores se consideraban ejes… ¿Esto no es un problema para el extrusor? ¿O no cuenta como eje? Debo estar equivocado, obviamente.

M109 S235 ; Volvemos a establecer la temperatura a 235º, pero esta vez ESPERAMOS.

G90 ; Usar coordenadas absolutas desde este momento.

Es decir, Z10 debe ser mover Z hasta el punto Z=10mm, no mover Z a de su posición actual 10 mm

G92 E0; Establece el punto actual con el valor definido.

Es decir, el Extrusor pasa a ser el punto 0 de extorsión

M82; Establece valores absolutos para el extrusor.

G1 F1800.000 E-2.00000; Retrae 2mm del extrusor y establece la velocidad de movimiento del nozzle a 1800mm/minuto

Se comporta de manera lineal, de modo que la siguiente línea…

G1 Z0.500 F9000.000;

…lo que hace es moverse hasta Z=0.5mm y aumentar la velocidad durante ese movimiento hasta 9000 mm/minuto

G92 E0;

Vale. A partir de aquí es una serie de secuencias que manipulan las variables X, Y, Z, E y F de manera lineal. Si es verdad que hay otros códigos para hacer arcos, círculos y demás. Así que ya tengo información suficiente para empezar a hacer pruebas al respecto.

Primer objetivo. Conseguir dibujar unas cuantas líneas en la cama de la impresora. A ver que pasa...

Comentarios

Entradas populares