Recuperar impresión fallida en Klipper
No hay nada que duela más que ver una pieza al 80% y que, de repente, se produzca un atasco, se acabe el filamento o un gato decida que el cable de alimentación es un juguete.
Si no has movido la pieza de la cama, respira hondo. Aquí tienes posibles caminos de cómo resucitar tu impresión.
Antes de hacer nada, asegúrate de que:
La pieza sigue pegada: Si se ha despegado o la has movido, apaga y vámonos. No hay alineación que salve eso.
No hagas Home (G28): Si haces un Home completo, el cabezal chocará con tu pieza. Klipper necesita saber dónde está, pero lo haremos con "trampas".
Si la impresora se detiene, lo primero es mantener la temperatura de la cama. Si la cama se enfría, la pieza se contraerá y se despegará, haciendo imposible la recuperación. Para mantener la temperatura puedes utilizar el interfaz web o el comando
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=60asegúrate que tu definiciçón de cama se llameheater_bedo adápta el comando para poner el correcto y ajusta elTARGETa la temperatura utilizada.
Determinar la altura de fallo (Z)
Necesitamos saber exactamente en qué milímetro se quedó la impresora.
Método Pro (calibre): Mide la altura de la pieza impresa con un calibre digital. Si mide 42.4 mm, esa es tu referencia.
Método Klipper (Manual): Mueve el cabezal sobre una zona de la pieza que esté terminada. Baja el eje Z poco a poco (de 0.1 en 0.1) hasta que la boquilla casi toque la última capa. Mira el valor de Z en la consola o mide con un calibre esa distancia si la maquina no está posicionada en Z.
Engañar a Klipper (SET_KINEMATIC_POSITION)
Como no podemos hacer homing en Z porque la pieza estorba, usaremos un comando para posicionar manualmente Klipper sin realizar un homing. Una vez que hayas hecho Home en X e Y (G28 XY o desde vuestra interfaz Klipper...con cuidado), posiciona el cabezal y ejecuta:
SET_KINEMATIC_POSITION Z=42.4Sustituye 42.4 por tu altura medida. Ahora Klipper "cree" que está en esa altura y junto con el homing en X e Y ya está completamente posicionada. Ya puedes mover el cabezal con seguridad.
Macro emergencia para posicionar Z:
Con la siguiente macro tan solo añadiremos la altura medida y lanzará el comando por nosotros siendo más sencillo... recuerda que esta macro tiene que estar previamente cargada:
[gcode_macro RESCUE_Z]
gcode:
{% set z_height = params.Z|default(0)|float %}
SET_KINEMATIC_POSITION Z={z_height}
M117 Z Axis set to Z={z_height}Editar el G-Code
Aquí es donde ocurre la “magia”. Abre tu archivo .gcode en un editor de texto (Notepad++, VS Code):
Busca la altura: Busca el comando
Z42.4(o la altura donde falló).Borra el pasado: Elimina todo el G-code desde el final de la zona de "Inicio" (después de las mallas de nivelación y el purgado o la llamada a una macro... revisar el script de inicio que tenéis configurado en el laminador os va a ayudar a encontrar esa parte) hasta encontrar la línea de Z donde se quedó.
Mantén el flujo: Asegúrate de mantener los comandos de temperatura, velocidad y, sobre todo, el G92 E... si tu laminador usa coordenadas de extrusión absolutas.
¡IMPORTANTE! El contador de extrusión
La mayoría de laminadores usan extrusión absoluta. Si empiezas en la mitad del archivo, el G-code dirá algo como G1 E1500.5. Si tu impresora cree que está en E0, intentará empujar 1.5 metros de filamento de golpe.
Solución: Justo antes de la primera línea de impresión que has dejado, añade:
G92 E1500.5 ; Sustituye 1500.5 por el valor de E que aparece en la línea donde vas a empezar
Es importante también restaurar el estado del ventilador último antes del fallo; en muchas ocasiones puede ser que esté fijo o esté dinámico en las opciones del laminador, pero que el ajuste no esté cercano cuando retomamos la impresión. Para ellos buscaremos el anterior valor de
M106 S...desde el punto de reinicio del gcode y o bien lo insertaremos en el gcode después del G92 anterior o lo ajustaremos manualmente desde la interfaz o desde consola.También para evitar problemas relacionados con el mallado si se tiene cargada una malla; para ello añadiremos
BED_MESH_CLEAR para limpiar cualquier malla que se pueda usar.Otro problema que podemos minimizar accidentes al iniciar la impresión, para evitar que el cabezal se mueva en línea recta desde donde está hacia el punto de inicio de la capa y choque lateralmente con la pieza. Para ello añadiremos un pequeño bloque de G-Code de seguridad para poner al principio del archivo editado (y antes de las modificaciones anteriores):
G91 ; Coordenadas relativas G1 Z5 F600 ; Sube 5mm por seguridad G90 ; Coordenadas absolutas G1 X... Y... ; Mueve a la posición de inicio de la capa (mira el G-Code) G1 Z... ; Baja a la altura de la capa de rescateEsto realizará un movimiento de 5 mm en Z para evitar la pieza; irá a las coordenadas XY de forma segura y después se posicionará en Z.
Última actualización
