Configuración Klipper en laminadores

- English

Klipper es un firmware de impresoras 3D increíblemente flexible que podemos configurar basándonos en ficheros de configuración.

Generación de Gcode

Los laminadores disponen de una opción para indicar el tipo de gcode (G-Code flavor) que queremos generar.

Normalmente, estos usan por defecto Marlin que funciona bien con Klipper al igual que Smoothieware.

Nuestro laminador favorito, SuperSlicer o Bambu Studio/OrcaSlicer (PrusaSlicer lo tendrá disponible a partir de la versión 2.6) tiene una opción específica para Klipper que podemos encontrar en el perfil de impresora General/Firmware:

Importante!!!...Bambu Studio/OrcaSlicer

Bambu Studio/OrcaSlicer (fork del primero con opciones interesantes añadidas):

Bambu Studio utiliza ARC, significa que usa los gcodes G2/G3, por defecto en algunos perfiles y que funcione correctamente necesitaremos activar el soporte ARC en nuestro Klipper.

IMPORTANTE!!! por la forma de funcionar de Klipper ARC no proporciona mejoras en la calidad de las piezas y si más carga al procesar el gcode. Os aconsejamos ir a la parte final y deshabilitar las funciones ARC del laminador.

Lo ideal es crear un nuevo fichero de configuración, bambu_studio.cfg por ejemplo, y añadirlo como include en nuestro printer.cfg.

bambu_studio.cfg
[gcode_arcs]
resolution: 0.1

[gcode_macro m201]
gcode:
  {% if 'X' in params or 'Y' in params %}
    {% set accel = (params.X|default(params.Y)|float,
                    params.Y|default(params.X)|float)|min %}
      SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel * 0.5}
  {% else %}
    SET_VELOCITY_LIMIT
  {% endif %}

[gcode_macro m203]
gcode:
  {% if 'X' in params or 'Y' in params %}
    {% set speed = (params.X|default(params.Y)|float,
                       params.Y|default(params.X)|float)|min %}
    SET_VELOCITY_LIMIT VELOCITY={speed}
  {% else %}
    SET_VELOCITY_LIMIT
  {% endif %}

[gcode_macro M205]
gcode:
  {% if 'X' in params or 'Y' in params %}
    {% set corner_speed = (params.X|default(params.Y)|float,
                       params.Y|default(params.X)|float)|min %}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={corner_speed}
  {% else %}
    SET_VELOCITY_LIMIT
  {% endif %}

[gcode_macro M900]
gcode:
      SET_PRESSURE_ADVANCE ADVANCE={params.K}

Tenéis un ejemplo de nuestro compañer Laureano a modo de ejemplo también:

https://gist.github.com/LauOtero/9a5d392c374791fe4faace74c3a9979e

En el caso que no queráis usar ARC porque vuestra máquina no lo soporte o simplemente porque no le veis beneficio aseguraos que las siguientes funciones están deshabilitadas:

  • Arc fitting

  • Z-hop type : Spiral lift

Gcode de inicio y fin

Los laminadores suelen contar con gcodes de inicio y de final que se encargan de realizar los procesos pre y post-impresión que pueden impactar en la calidad de nuestra impresión.

Dado que en Klipper podemos configurar nuestras propias macros, algo que suele ser muy útil es la creación de macros para el inicio de impresión (START_PRINT) y final de impresión (END_PRINT).

Os vamos a sugerir como poder personalizar vuestros gcodes pre y post usando las macros de Klipper que os van a permitir:

START_PRINT

  • Recuperar automáticamente el tamaño de impresión, diámetro del filamento y nozzle

  • Purga de línea inteligente

  • Temperaturas de precalentado

  • Hacer el proceso de homing, z-tilt y nivelado

  • Temperaturas de impresión

https://gist.github.com/alienboyxp/fe225e1667da13557c270b7e5b73db10

END_PRINT

  • Ejecutar una retracción del filamento

  • Presentar la impresión para poder retirarla de forma sencilla

  • Apagado de los motores

https://gist.github.com/alienboyxp/1fe5c57b40c09a9d0095d027ffc0f5d7

Configurando nuestro laminador para usar las macros START_PRINT y END_PRINT

Para ejecutar estas macros en nuestro laminador:

  • gcode de inicio START_PRINT, usando placeholders para pasar los valores de temperatura de filamento y cama de forma dinámica:

M190 S0 ; Prevents prusaslicer engine from prepending m190 to the gcode ruining our macro
M109 S0 ; Prevents prusaslicer engine from prepending m109 to the gcode ruining our macro
SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] ; Provide layer information
START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[first_layer_bed_temperature] CHAMBER=[chamber_temperature] PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}

Los placeholders son unos "alias" o variables que usan los laminadores para que a la hora de generar el gcode sustituyen por los valores configurados en el perfil de impresión.

En los siguientes links podéis encontrar un listado de estos para: PrusaSlicer, SuperSlicer (además de los del anterior), Bambu Studio y Cura.

El uso de estos permiten que nuestras macros sean dinámicas.

  • gcode de final END_PRINT, en este caso al no usar placeholders es común a todos los laminadores

END_PRINT

Subir gcodes desde el laminador

Podemos subir nuestros gcodes directamente desde el laminador, algo que es muy cómodo. Moonraker emula la API de Octoprint, algo muy útil para hacerlo compatible con cualquier herramienta que use Octoprint.

Para habilitar la emulación Octoprint tendremos que añadir al ficher de configuración de Moonraker lo siguiente:

[octoprint_compat]

Habilitaremos el modo experto y cambiaremos las opciones en Printer Settings / General como podemos ver en la siguiente captura.

Thumbnails

Podemos generar previews de nuestras piezas que podemos visualizar en nuestra UI de Klipper para identificar mejor la pieza.

OrcaSlicer suele funcionar directamente, tenemos las opciones para ajustar la generación en las opciones avanzadas del perfil de impresión:

Progreso de capas

Para poder disponer del progreso de capas en nuestra UI de Klipper:

Para poder obtener más información detallada sobre el progreso de la impresión podemos mejorar desde el laminador de la siguiente manera:

  • En las opciones de la impresora iremos a Machine G-code

  • Añadiremos lo siguiente en Layer Change Gcode

M117 Layer {layer_num+1}/[total_layer_count] : {filament_settings_id[0]}
SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}

En el caso que usemos KlipperScreen podemos mejorar la información mostrada sobre las capas ajustando:

Coasting y Advanced extruder pressure

Estas opciones habilitadas puede provocar calidad pobre de nuestras impresiones y lo aconsejable es la utilización de Pressure Advance.

Por otro lado, las funciones que suelen ir bien es emplear los valores de retracciones desde el laminador, las opciones de wipe o wipe on retract.

Última actualización

¿Te fue útil?