Links
Comment on page

Primeros pasos con Klipper

Ajustar nuestro printer.cfg y primeros tests de máquina
En esta guía intentaremos aconsejaros los diferentes pasos iniciales usando Klipper para poner nuestra máquina en marcha.
Para realizar los pasos explicados en esta guía anteriormente vuestra máquina tiene que ser funcional a nivel mecánica/electrónica, instalamos Klipper en vuestro host, se creó/aplicó el firmware Klipper a vuestra electrónica y obtuvimos nuestra cadena de conexión serial para nuestra electrónica... si alguno no lo tienes puedes seguir los links.

Conexión al interfaz web de Klipper

Una vez tenemos nuestro Klipper instalado y este conectado a nuestra red podremos acceder al interfaz web de control.
Para ello, sabiendo la IP de nuestra red asignada a nuestro Klipper, abriremos nuestro navegador favorito y pondremos http://IP_HOST (donde IP_HOST será la IP de nuestra red asignada a nuestro Klipper) y podremos ver el interfaz web para la gestión remota de este:
En ocasiones si se hace una instalación personalizada de estos interfaces estos se montan en un puerto quedando la URL de acceso de la siguiente forma: http://IP_HOST:puerto (donde puerto es el número que se usó o se facilitó durante la instalación personalizada.
Conocer la IP de acceso a nuestro host Klipper: Fing que es una aplicación multiplataforma que nos escaneará y listará todos los dispositivos de nuestra red. Con ella podremos encontrar nuestro host Klipper buscando por su nombre (mainsailos, ratos, etc...)
En el caso de que no encontremos la IP tenemos diferentes opciones a revisar:
  • conectaremos la SD de nuevo a nuestro ordenador y revisaremos el fichero que utilice para configurar nuestra Wifi (normalmente wpa-suplicant pero revisa cual usa tu sistema operativo de tu host) en busca de cualquier fallo al añadir nuestros datos WiFi. En el caso de sistemas MainsailOS ya sea Raspberry o Armbian podemos encontrar información aquí
  • Conectar fisicamente un cable de red de nuestro router a nuestro host nos puede ayudar si tenemos problemas con nuestra WiFi o reconfigurarla ya sea:
    • ajustando manualmente el fichero wpa-suplicant
    • si tienes una Raspberry Pi ejecutando el comando raspi-config que contamos con un apartado para configurar la Wifi
    • si tienes una Orange Pi tienes un comando similar al anterior armbian-config donde tienes configuraciones avanzadas
  • Si nuestro host es RatOS, sobre Raspberry o CB1, si no conecta a ninguna red montará un punto de acceso Wifi al cual nos podremos conectar y configurar nuestros datos Wifi, tienes más información en la documentción de RatOS
También poder conectar un teclado y pantalla al host puede ayudarnos a ver las razones por lo que no es capaz de conectar.

Conexión a SSH

Dependiendo del método elegido para instalar Klipper o si creamos manualmente el firmware Klipper para nuestra MCU (electrónica de la impresora) probablemente vimos que algunos de estos pasos se hacían por "línea de comandos" utilizando SSH para conectarnos a nuestro host (dispositivo donde instalamos Klipper).
Si no ha sido el caso tarde o temprano, más bien esto último, vas a necesitar lanzar comandos en el terminal de Klipper (Linux) dado que algunos procesos van a requerir ser lanzados desde línea de comandos
¿Que es SSH?
SSH (Secure SHell) es un protocolo de administración remota con el que podemos conectarnos a nuestro host de una forma segura para poder enviar comandos al sistema operativo de esto.
Para conectarnos por SSH a nuestro host deberemos tener en cuenta:
Es importante que revises tu host para habilitar el servicio SSH para que puedas utilizarlo, normalmente las distribuciones de Klipper como MainsailOS o RatOS ya lo llevan habilitado... si usas otros revisa su documentación para habilitarlo.
  • disponer de un cliente SSH en o los equipos (ordenadores, tables, teléfonos...) desde donde queramos administrar. En nuestro caso siempre aconsejamos Terminus por ser multiplataforma, sencillo y no tiene coste para el uso de administrar tus máquinas con Klipper. También dispones de otras como Putty.
  • lo segundo a tener en cuenta es conocer la IP de acceso a nuestro host Klipper que ya vimos en el paso anterior
  • por último para poder conectar necesitamos conocer el usuario/contraseña que nos va a permitir conectar con nuestro host. A continuación os facilitamos algunos de los usuarios/password por defecto usados en diferentes distribuciones:
Text
Distribución
Usuario/Password
MainsailOS
Raspberry Pi
pi/raspberry
Orange Pi
pi/armbian
RatOS
Raspberry Pi
pi/raspberry
Bigtreetech CB1
CB1
biqu/biqu
Si ya tenemos todo lo anterior ya estaremos listos para conectar y verificar nuestra conexión SSH a nuestro host.
Os facilitamos algunos comandos útiles:
  • ls, permite listar los ficheros de un path o directorio. Podemos añadir parámetros como ls -l que nos darán más informacion como el tamaño o permisos.
  • cd , nos va a permitir cambiar de path o directorio cd <nombre_directorio> (podemos comenzar a poner las primeras letras y pulsar el tabulador para ver opciones que coincidan con lo introducido). También podemos volver a un path o directori padre del que nos encontremos con cd ..
  • cp y mv , el primero permite hacer una copia o duplicado de un fichero cp <nombre original> <nuevo_nombre>. Con el comando mv podemos mover el fichero pudiendo cambiar el path/directorio y el nombre.
  • nano , es un editor simple de ficheros nano <nombre_fichero>. Una vez dentro de el podemos usar ctrl-x para salir o ctrl-o para guardar el fichero... podemos ver más en la parte inferior del editor.
  • sudo , por defecto en Linux el usuario no tiene permisos de super administrador o root así que para lanzar según que comandos es necesario lanzarlo, es aconsejable ponerlo antes del comando a lanzar en lugar de solo.
  • tail , nos permite mostrar las últimas lineas de un fichero lo que es ideal para ver logs tail <nombre_fichero>

printer.cfg ... configuraciones Klipper para nuestra máquina

A día de hoy Klipper cuenta con muchos ejemplos de configuración de impresoras y electrónicas que nos pueden ayudar a disponer de una configuración base para comenzar.
Podéis revisar estos ejemplos aquí desde su Github o por otro lado podréis acceder a ellos usando el interfaz de Klipper (Mainsail, Fluidd u otro) en el apartado de ajuste de configuraciones de máquina accediendo al directorio /config.
La forma más sencilla de manejar nuestro printer.cfg es usando la propia UI:
Ejemplo de acceso a los cfg usando Mainsail
Una vez localizado el o los ejemplos que necesitemos los copiaremos en nuestro printer.cfg asegurándonos que tenemos el serial id correcto para nuestra/s MCUs que encontramos durante la instalación de Klipper.
Os sugerimos lo primero de todo antes de comenzar con pruebas o cambios en vuestros ficheros de configuración tener un backup de estos ficheros, podéis usar nuestra macro de backup a Github que además de crearos un backup de forma sencilla podréis comparar entre ellos para ver las diferencias.
Al usar determinadas funciones o asistentes/macros de Klipper que guardan información de configuración de máquina de forma automática nos podemos encontrar hacia el final de nuestro printer.cfg con estos datos.
Es importante que NO pongamos ninguna configuración nuestra dentro o por debajo de la zona #*# <---------------------- SAVE_CONFIG ---------------------->

Secciones a revisar de tu printer.cfg

Si usamos un printer.cfg de algún ejemplo debemos de prestar especil atención a las siguientes secciones antes de continuar con las comprobaciones iniciales:
  • cadena de conexión o serial id de nuestra MCU, asegurándonos que tenemos el serial id correcto para nuestra/s MCUs que encontramos durante la instalación de Klipper
  • tipo de termistores definidos para nuestro hotend y cama
  • configuración de nuestros drivers/steppers, en especial:
    • posición de los endstops
    • posición máxima del area de impresión
    • tipo de driver
  • nivelacion de cama que trataremos con más detalle más adelante
  • posición y configuración de nuestro sensor de nivelación o z endstop

Definiciones de nuestra impresora

En la sección [printer] de nuestro printer.cfg deberemos definir los parámetros que defined nuestro tipo de impresora como por ejemplo:
  • cinemática que usa nuestra impresora
  • velocidad máxima
  • aceleraciones máximas
// Ejemplo de configuración de impresora corexy
[printer]
kinematics: corexy
max_velocity: 350
max_accel: 3000
max_z_velocity: 50
max_z_accel: 350
square_corner_velocity: 10.0
La configuración anterior es de ejemplo, si no tenéis una referencia para vuestra máquina es aconsejable comenzar con valores conservadores que podemos obtener de las especificaciones del fabricante o de Marlin.

Otras secciones importantes

Vamos a revisar otras secciones importantes para asegurarnos que estas están correctamente configuradas:
  • secciones [stepper...] deberemos tener por lo menos position_endstop y position_max que se ajusten a nuestra impresora
IMPORTANTE!!! Ajustes de los límites de impresión. En el caso que nuestro home deje la punta del nozzle fuera de la cama deberemos jugar con el position_endstop y position_min (o max dependiendo de la máquina).
Como ejemplo imaginemos que tenemos una maquina donde tenemos nuestros endstops/home en las coordenadas XY -5 (usando como referencia X0Y0 que es el inicio de la cama).
En este caso lo que haremos será:
printer.cfg
[stepper_x]
...
position_endstop: -5 # Ajustamos la distancia antes calculada desde el inicio de cama
position_min: -5 # Ajustamos al mismo valor que el parametro anterior
...
Realizaremos el mismo proceso en el eje Y.
En el caso que realicemos el proceso de homing en max es similar pero ajustando el valor de position_endstop a la coordenada adecuada, usando en este caso position_max para asegurarnos que llega, y usando homing_positive_dir a true para indicar que el movimiento de home se hará a coordenadas positivas:
[stepper_x]
...
position_endstop: 350 # Ajustamos la distancia antes calculada desde el inicio de cama
position_max: 350 # Ajustamos al mismo valor que el parametro anterior
homing_positive_dir: true
# If true, homing will cause the stepper to move in a positive
# direction (away from zero); if false, home towards zero. It is
# better to use the default than to specify this parameter. The
# default is true if position_endstop is near position_max and false
# if near position_min.
...
  • en [tmcXXXX stepper...] donde XXXX será e tipo de drivers por ejemplo [TMC2208 stepper_x] indicará que nuestro eje X usará un TMC2208
Tal como indica la propia documentación de Klipper algunas de las propiedades de estas secciones es aconsejables eliminarlas, si has extraído un ejemplo de configuración de Klipper de terceros y basado en configuraciones antiguas es aconsejable revisarlo:
  • interpolate: True, aunque es una función interesante que el propio driver permita seleccionar dinámica mente el valor de micropasos dependiendo de las necesidades en la práctica esto puede repercutir en pérdida de precisión de ahí que sea aconsejable cambiarlo a interpolate: False
  • hold_current, otra función que se aconseja deshabilitar/borrar es la de definir un valor de corriente cuando los motores están en modo descanso. Estos cambios de corrientes pueden provocar imprecisiones en su posicionamiento en determinados casos
  • [stepper_z] deberiamos definir position__max, en algunos casos podemos tener varios Z que iremos añadiendo con Z1 Z2 Z3
  • [extruder] es la seción de nuestro extrusor y deberemos prestar atención al tipo de termistor definido en sensor__type
  • [heater__bed] lo mismo que hicimos para el extrusor, revisaremos que el tipo de termistor es el correcto

Comprobaciones iniciales

Una vez ya tenemos nuestro printer.cfg listo revisaremos que al recargar nuestra configuración no nos de ningún error y procederemos a realizar unos tests básicos.
Para ello usaremos principalmente la consola:
Consola en Mainssail
Controles de movimientos:
Y otras herramientas que nos facilita el interfaz de Klipper para gestionar nuestra máquina.

Sensor temperaturas

La primera comprobación que debemos realizar es verificar que nuestros termistores están reportando temperatura de forma correcta y estable:
En el apartado de temperaturas de nuestro interfaz Klipper verificaremos que las temperaturas del nozzle y cama están presentes y no fluctúan de forma anormal.
Si vemos que la temperatura comienza a subir nada más encender la impresora procederemos a apagar de forma inmediata la impresora y a revisar el estado de cableado y del MOSFET de nuestra placa.
En el caso de ver lecturas de temperaturas que fluctúan o no son precisas deberemos revisar:
  • el cableado y estado de nuestro termistor en el caso de fluctuaciones extrañas en las lecturas, sobretodo con la máquina en movimiento
  • que en nuestro printer.cfg hemos definido correctamente sensor_type que coincida con el tipo/modelo de termistor instalado, normalmente cuando tengamos lecturas extrañas tanto por altas como por bajas
  • también e nuestro printer.cfg el sensor_pin y revisar que el termistor esta en el conector correcto en el caso de no tener lecturas

Calentadores

Una vez que ya tenemos correctamente nuestras lecturas de temperatura el siguiente paso será verificar que nuestros calentadores funcionan correctamente.
Para ello y desde la parte de temperaturas que ya vimos en el paso anterior:
  • En la columna Target de nuestro Extruder le pediremos que caliente a 60 grados nuestro extrusor, en unos segundos deberíamos de ver que la gráfica y lecturas de temperatura comienzan a ascender. Una vez llegue a la temperatura y después de unos segundos manteniendola podemos seleccionar en Target Off
  • Realizaremos el mismo proceso para Heater Bed
En siguientes pasos veremos como realizar un ajuste del PID antes de intentar hacer ningún test de impresión.

Motores

Este test nos permitirá identificar si nuestros motores están conectados a nuestra placa/drivers y que están en la ubicación correcta.
Usaremos el comando STEPPER_BUZZ STEPPER=stepper_x desde la consola donde el valor de STEPPER es el eje que queremos verificar.
A continuación os mostramos los valores que normalmente podemos usar en STEPPER, aunque depende de vuestra configuración pueden variar:
  • stepper_x
  • stepper_y
  • stepper_z
  • stepper_z1
  • stepper_z2
  • stepper_z3
  • extruder
El comando STEPPER_BUZZ lanzado sobre uno de los ejes realizará un movimiento oscilante que nos ayudará a identificar que motor está asignado/conectado al eje que queramos comprobar.
Este movimiento se iniciara hacia coordenadas positivas (1mm y en el caso que nuestro endstop se encuentre en MIN/0) y volverá a su posición anterior durante 10 veces.
En el caso que no obtengamos ningún movimiento o este no sea en el sentido deseado:
  • asegurarnos que el valor de STEPPER es el adecuado para nuestra configuración
  • verificar que los valores enable_pin y step_pin son los correctos para e driver/motor
  • en el caso que el movimiento no sea hacia cordenadas positivas deberemos verificar dir_pin y añadiremos o eliminaremos ! al inicio de la definición del pin para invertir el giro del motor
  • en el caso que veamos que el movimiento es significativamente mayor o menor a 1 mm deberemos revisar la configuración de nuestro rotation_distance
En cuanto a rotation_distance os aconsejamos que os paséis por la guía de calibración FDM, en concreto por el apartado de pasos ejes ya que contiene información muy interesante de como funciona rotation distance e incluso como compensar de forma adecuada nuestras impresiones dimensionalmente en nuestra impresora cartesiana/CoreXY y Delta.
Otro aspecto importante es el de ajustar el run_current de nuestros motores, aquí tenéis una guia y calculadora para ello.
En cualquier caso os indicamos una forma de calcularlo:
  • Revisaremos las características de nuestro motor y nos fijaremos en el valor limite de pico de corriente del mismo
  • Multiplicaremos este valor por 0.707 para determinar el valor máximo de corriente RMS el cual redondearemos en .1.
Por ejemplo usando un motor LDO 42STH130-1684 que su datasheet indica un pico de corriente de 1.68A calcularemos que su runcurrent es... 1.68*0.707=1.1877, lo redondearemos a 1.1A que será el valor que usaremos como run_current: 1.1
Es importante, dado que en muchas ocasiones estos datos del motor no suelen ser fiables del todo, realizar el cálculo de este valor usando un % de seguridad. Entre un 80-90% del valor A puede ser un buen punto de partida para después ajustarlo durante el uso: - en el caso de temperaturas excesivamente altas en el motor (bajar el % de seguridad para hacer el cálculo) - si observamos pérdida de pasos (subir el % de seguridad para hacer el cálculo).
También, si usamos un fichero de configuración de ejemplo y si este es antiguo, es importante eliminar cualquier ajuste the hold_current dado que no es aconsejable su uso.
Es importante tambien saber las limitaciones de nuestros drivers en la entrega sostenida de corriente, por ejemplo la máxima capacidad de un TMC2209 es de unos 1.2A.
Una vez ajustados es importante verificar:
  • los motores pierden pasos, iremos subiendo el valor en 0.1 hasta encontrar el valor óptimo
  • los motores se calientan en exceso, bajaremos el valor en 0.1 hasta encontrar el valor óptimo
Os incluimos también la calculadora de nuestros compañero Laureano con diferentes fórmulas que nos ayudarán a ajustar nuestros motores que podéis acceder desde aquí que os puede ser de ayuda para convertir steps de Marlin a Klipper.
En todo caso tal como os aconsejábamos arriba es mejor ir a la guía de calibración FDM, en concreto por el apartado de pasos ejes ya que contiene información muy interesante de como funciona rotation distance e incluso como compensar de forma adecuada nuestras impresiones dimensionalmente en nuestra impresora cartesiana/CoreXY y Delta.

Endstops

El siguente paso imprescindible/básico es la comprobación de nuestros finales de carrera, en este caso para aquellas máquinas que usen sensores físicos, este procedimiento no nos será de ayuda en el caso de usar sensorless.
Endstops - Tradicionales
Endstops - Sensorless
Endstop - Sensor Nivelación Z (probe/bltouch)
Desde la consola enviaremos el comando QUERY_ENDSTOPS y deberemos de ver una respuesta como:
Send: QUERY_ENDSTOPS
Recv: x:open y:open z:open
Dejaremos pulsados todos nuestros finales de carrera y volveremos a lanzar el comando con ellos pulsados:
Send: QUERY_ENDSTOPS
Recv: x:triggered y:triggered z:triggered
En el caso que tengamos problemas con los estados reportados:
  • en el caso que sin el endstop activado nos devuelva el estado triggered y con el pulsado open, invertiremos la lógica de Klipper para ese endstop añadiendo o quitando ! delante del pin asignado
endstop_pin: P1.28 -> endstop_pin: !P1.28
  • en el caso que no cambie su estado al ser pulsado deberemos revisar el cableado, el puerto que hemos usado en placa y la definición del endstop sean correctas
Los fiales de carrera o endstops usan un pin de entrada input normalmente. Este tipo de pines pueden ser del tipo pull-up o pull-down.
Aunque normalmente la mayoría de nuestras impresoras usan pull-up dependiendo de nuestra electrónica o endstops para estos pines deberemos de indicar si es pull-up ^ o pull-down ~.
En ocasiones no definir esto de forma correcta puede inplicar que todo este bien pero el estado del endstop no cambie correctamente al estar este activado o no.

Sensorless

Algo que viene siendo muy común y aconsejable es el uso de sensorless si disponemos de una electrónica que lo soporte dado que funciona muy bien, si lo configuramos correctamente, y nos ayuda a aligerar el número de cables y componentes en nuestra máquina.
IMPORTANTE!!!
La función sensorless solamente es aconsejable usarla en ejes X e Y.
Vamos a describir a grandes rasgos las cosas a tener en cuenta para configurar sensorless en Klipper y no morir en el intento
😄
  • Asegurarnos que a nivel hardware/electrónica tenemos todo de forma correcta:
    • La funcionalidad sensorless suele venir implementada en drivers TMC pero recuerda que no todos los TMC cuentan con ella, revisa las características de tus drivers antes.
    • Para que funcione correctamente tu placa ha de disponer en su zócalo de drivers de un pin llamado DIAG.
    • Los drivers han de estar en modo UART o SPI dependiendo del modelo
    • Normalmente deberemos poner un jumper en la electrónica para que un driver funcione en sensorless, revisa las características de tu electrónica.
    • Asegurate que los endstops o finales de carrera fisicos, si los tenias, esten desconectados totalmente de la electrónica.
  • Configuración de steppers en Klipper deberemos tener en cuenta lo siguiente:
    • Asegurarte que tus drivers están en UART/SPI
    • Asegurarte que diag_pin está definido en el pin o alias correcto, normalmente suele ser el endstop de ese eje
    • Ajustar la sensibilidad mediante driver_SGTHRS, revisa el cuadro a continuacion
    • Asegurarte que en la sección stepper de tu eje tengas homing_retract_dist a 0
[stepper_x]
...
homing_retract_dist: 0 ## TMC SENSORLESS
[tmc2209 stepper_x]
uart_pin: PC11
tx_pin: PC10
uart_address: 0
diag_pin: ^x_diag_pin ## Definiremos el pin del endstop/sensorless
driver_SGTHRS: 14 ## Ajustaremos la sensibilidad
  • TMC2209/TMC2226 donde el valor más bajo es 0 y el más alto es 255
  • Otros TMC, TMC2130/TMC2160/TMC2660/TMC5130/TMC5160, donde el valor más bajo es +63 y el más alto -64
  • Otro apartado importante es el proceso de homing, el cual lo ideal es hacer un homing_override incluyendo la reducción del voltaje en los motores para que mejore el funcionamiento de sensorless (podéis encontrar un ejemplo muy completo aquí)
Si usamos home_override y tenemos/usamos z_safe_homing Klipper nos mostrará un error de incompatibilidad, lo ideal es comentar o borrar z_safe_homing y asegurarnos que nuestro home_override realiza el homing de Z en una posición segura.
En el ejemplo de home_override de la parte de abajo podéis ver como realiza este en el centro de nuestra cama.
[homing_override]
...
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=0.5
SET_TMC_CURRENT STEPPER=stepper_y CURRENT=0.5
G28
  • También dentro de nuestro homing_override es importante ajustar las aceleraciones ya que pueden crear falsos positivos...
    • en el proceso de homing_override bajaremos las aceleraciones al inicio y volveremos a dejarlas por defecto una vez finalizado el proceso usando el comando M204 Sxxxx
    • También es muy aconsejable realizar una pequeña pausa de 2 segundos entre los movimientos de homing para asegurarnos que el proceso funciona bien usando el comando G4 P2000
    En el siguiente ejemplo podemos ver un homing para sensorless de forma completa y correcta en los pasos.
En el ejemplo de macro home_override incluída en esta guía usaremos notificaciones para indicar en que paso estamos durante el proceso de homing sensorless. Necesitamos que tu printer.cfg o includes del mismo tengan la sección [respond]:
printer.cfg
[respond]
[homing_override]
set_position_z: 5
gcode:
M400 # Wait for moves to finish
G90 # Absolute positioning
G0 Z10 F600 # Hop Z-Axis
M204 S1000 # Set homing acceleration (important!)
{% set x_homed = 'x' in printer.toolhead.homed_axes %}
{% set y_homed = 'y' in printer.toolhead.homed_axes %}
# Set homeing current
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=0.5
SET_TMC_CURRENT STEPPER=stepper_y CURRENT=0.5
# Home X
{% if params.X is defined or params.Y is not defined and params.Z is not defined %}
G4 P2000 # Set 2s pause to clean internal stall flag
G28 X
G0 X{printer.toolhead.axis_maximum.x / 2} F9000
{% set x_homed = True %}
{% endif %}
# Home Y
{% if params.Y is defined or params.X is not defined and params.Z is not defined %}
G4 P2000 # Set 2s pause to clean internal stall flag
G28 Y
G0 Y{printer.toolhead.axis_maximum.y / 2} F9000
{% set y_homed = True %}
{% endif %}
# Restore current
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer.configfile.config["tmc2209 stepper_x"].run_current}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer.configfile.config["tmc2209 stepper_y"].run_current}
# Home Z
{% if params.Z is defined or params.Y is not defined and params.X is not defined %}
{% if x_homed == False or y_homed == False %}
M118 X and Y must be homed before homeing Z
{% else %}
G0 X{printer.toolhead.axis_maximum.x / 2} Y{printer.toolhead.axis_maximum.y / 2} F9000
G28 Z
{% endif %}
{% endif %}
# Safe Z
G0 Z10 F600
# Restore acceleration
M204 S{printer.configfile.config.printer.max_accel}
  • Nos aseguraremos de indicar que nuestros drivers X Y usen el virtual endstop sensorless
[stepper_x]
rotation_distance: 40
...
endstop_pin: tmc2209_stepper_x:virtual_endstop
  • Por último el otro factor importante es ajustar la velocidad de homing en la definición de nuestros steppers, debemos encontrar una velocidad media que permita detectar sin reducir el rango de sensibilidad. Una velocidad de homing aconsejada es usar el valor de rotation_distance dividido entre 2:
[stepper_x]
rotation_distance: 40
...
endstop_pin: tmc2209_stepper_x:virtual_endstop
homing_retract_dist: 0 ## TMC SENSORLESS
homing_speed: 20 ## TMC SENSORLESS
[tmc2209 stepper_x]
uart_pin: PC11
tx_pin: PC10
uart_address: 0
diag_pin: ^x_diag_pin ## Definiremos el pin del endstop/sensorless
driver_SGTHRS: 14 ## Ajustaremos la sensibilidad

Sensor de nivelación (PROBE)

Antes de proceder con ninguno de estos tests es aconsejable revisar la guía de sensores de nivelación Klipper donde encontraréis información más detallada sobre estos.
Con el cabezal de impresora en el centro de la cama usaremos el comando QUERY_PROBE en este caso para verificar el estado de nuestro sensor, aplicaremos las mismas soluciones dependiendo de la repuesta de estado que usamos en el punto anterior.

Prueba de precisión del sensor de nivelación (PROBE)

Con la cama y el hotend fríos (por ahora) podemos realizar un test de precisión lanzando el comando PROBE_ACCURACY.
Este test va a realizar 10 lecturas para comprobar la desviación de cada una de esas lecturas:
Send: PROBE_ACCURACY
Recv: // PROBE_ACCURACY at X:125.000 Y:125.000 Z:7.173 (samples=10 retract=2.000 speed=2.0
Send: M105
Recv: // probe at 125.000,125.000 is z=4.975000
Recv: // probe at 125.000,125.000 is z=4.960000
Recv: // probe at 125.000,125.000 is z=4.955000
Recv: // probe at 125.000,125.000 is z=4.952500
Recv: // probe at 125.000,125.000 is z=4.950000
Recv: // probe at 125.000,125.000 is z=4.947500
Recv: // probe at 125.000,125.000 is z=4.942500
Recv: // probe at 125.000,125.000 is z=4.937500
Recv: // probe at 125.000,125.000 is z=4.937500
Recv: // probe at 125.000,125.000 is z=4.932500
Recv: // probe accuracy results: maximum 4.975000, minimum 4.932500, range 0.042500, average 4.949000, median 4.948750,
standard deviation 0.011948

TESTS BÁSICOS

Ahora que ya tenemos nuestra máquina y configuración de Klipper correctamente ajustada para por lo menos poder usar su cinemática y sistema de extrusión os aconsejamos realizar los siguientes pasos:

NIVELACIÓN CAMA

Antes de comenzar a fundir filamento, es aconsejable asegurarnos que nuestro área de impresión esté lista para poder imprimir cualquier test necesario para el ajuste de la máquina.
Para ello os aconsejamos seguir las siguientes guías específicas, en el caso que apliquen a nuestra máquina, para tener nuestra cama correctamente nivelada:
  • Nivelado manual, disponemos de diferentes asistentes en Klipper para ayudarnos en el ajuste manual (típicas ruedas de ajuste) ya sea con o sin sensor... este último siempre es aconsejable ya que además de facilitar el proceso lo hará más preciso.
  • Nivelación del gantry (o z-tilt), en el caso que nuestra máquina disponga de 2 o más motores (en drivers independientes) en nuestro eje Z podemos usar esta función que nos va a permitir alinear correctamente nuestro gantry de una forma automatizada y precisa.
  • Mallado de cama, podremos generar una tabla o malla de desfases en nuestra cama para que el sistema pueda compensar desviaciones de nuestra mecánica o cinemática... de nuevo, aunque se puede hacer un mallado de forma manual, es aconsejable el uso de un sensor de nivelación

PID

El PID, Proportional Integral Derivative, es un algoritmo que nos va a permitir que el proceso de calentado de nuestra cama o hotend sea consistente (suele afectar a la calidad de impresión) y más eficiente.
Ejemplo de gráfica de temperaturas Klipper con un PID incorrecto y corregido.
El ajuste del PID se realiza de uns forma sencilla mediante macros de sistema, que podemos incluir en propias tal como veréis en la guía sugerida para automatizar el proceso, y realiza unos tests usando la temperatura del material que normalmente usemos. Por ejemplo si normalmente usamos PLA a 210º (hotend) y 45º (cama) usaremos estos valores para realizar el proceso de ajuste del PID. En el caso que usemos diferentes materiales podemos usar una temperatura en medio del rango de dichos materiales o realizar los tests en el peor de los casos con el material que use más altas temperaturas.

Z-OFFSET

En el caso que usemos un sensor nivelación en nuestra máquina es importante, además de su configuración de sensor de nivelación en Klipper que podéis encontrar en la siguiente guía, el ajuste de su z-offset.
El z-offset es la distancia entre el nozzle y el punto en que se activa el sensor, en la siguiente imágen tenéis un ejemplo, y es crucial ajustar este z-offset de forma correcta dado que la calidad y fiabilidad de vuestras impresiones van a depender del correcto ajuste... así que te aconsejamos que realices el proceso sin prisas!!
Podéis encontrar el proceso de ajuste de z-offset en la siguiente guía.

E-STEPS (rotation_distance)

El siguiente paso aconsejable es ajustar nuestra configuración de Klipper para encontrar el valor apropiado de rotation_distance para nuestra máquina y filamento, que en ocasiones pueden diferir bastante con lo que tengamos en las configuraciones de ejemplo de Klipper o terceros.
Podéis encontrar el proceso con detalle en la siguiente guía de ajuste de e-steps. No os preocupéis en el caso que uséis diferentes tipos de filamentos, normalmente ajustaremos los e-steps para el material que uséis normalmente y para el resto lo podéis ajustar con test de flujo en cada uno de ellos y ajustarlo en vuestro laminador.

SLICER (laminador)

Antes de comenzar a realizar tests que requieran generar piezas de tests usando un laminador es importante seleccionar aquel que se adecue a nuestras necesidades/conocimientos, idealmente que disponga de soporte Klipper nativo y si este dispone de tests de calibración integrados mejor.
Nuestro laminador favorito actualmente es OrcaSlicer ya que incorpora soporte a Klipper, incluye funciones y mejoras de otros laminadores (como Bambu Studio del cual es un fork basado en PrusaSlicer pero con un cambio de interfaz y flujo de trabajo que nos encanta, SuperSlicer el cual parece que su desarrollo a día de hoy está parado pero que por su número de ajustes en el laminado y generador de tests de calibración era una delicia, PrusaSlicer que continúa siendo un referente hoy en día en cuanto a funciones y soporte, y por último Cura que a día de hoy pese a tener grandes funciones su soporte para Klipper requiere de ciertos ajustes extras).
Os aconsejamos revisar nuestra guía de laminadores ya que a parte de configurar correctamente ciertos parámetros es muy importante como adaptar este a las macros de Klipper en especial para el START y END scripts.

INPUT SHAPER

Con Klipper podemos llegar, normalmente, a imprimir a más velocidad y aceleraciones que con otros sistemas/firmwares 3D lo cual puede provocar llevar a límite a nuestra máquina afectando en la calidad de nuestras impresiones creando un efecto de olas también llamado ghosting.
Klipper cuenta con Input Shaper como función para eliminar/disminuir/minimizar este efecto que tenéis explicado con más detalle aquí.
El proceso de Input Shaper podremos realizarlo de varias formas:
Dado que es un ajuste clave para la calidad final de nuestras piezas os aconsejamos realizar con paciencia el proceso!!!

SKEW

La corrección skew nos va a permitir compensar un descuadre provocado por nuestra mecánica o chasis que pueden original piezas geométricamente imperfectas.
Dado que son descuadres mecánicos normalmente por un ensamblado de la máquina incorrecto o por falta de un correcto mantenimiento os aconsejamos siempre intentar corregir estos físicamente y solo recurrir a la corrección por software en última instancia.
La corrección skew por el sistema va a hacer que este realice pequeños ajustes en los movimientos de nuestro cabezal para asegurar que compensa esos desfases de nuestra mecánica.
El test básicamente consta de la impresión de una pieza de test y añadir configuración en nuestro fichero printer.cfg de Klipper tal como tenéis explicado en nuestra guía de corrección de skew.

TESTS FILAMENTOS

Una vez ya tenemos realizados los tests básicos es importante conocer aquellos ajustes que son específicos según el filamento que usemos en nuestra máquina y que van a requerir de unos tests específicos:

TORRE TEMPERATURA

Cada material y tipo pueden y van a tener unas propiedades diferentes siendo una de ellas la temperatura óptima de fusión. A esta van a influir otros aspectos como nuestro tipo de hotend, las condiciones ambientales y de estado del filamento... etc.
Para encontrar el valor óptimo para nuestra máquina, material y condiciones de impresión normalmente realizaremos un test de temperaturas para encontrar la ideal para nuestro caso.
Podéis encontrar la guía para realizar una torre de temperatura aquí. Estos tests también nos permiten ver como afecta la temperatura en puentes, voladizos, retracciones, etc...

PRESSURE ADVANCE (PA)

Otro ajuste que depende del tipo de filamento es el Pressure Advance o PA. El PA permite controlar el flujo de extrusión para disminuir los artefactos en determinados movimientos como cambios de dirección o aceleraciones.
Para realizar los tests puedes seguir la siguiente guía de PA aquí.

EXTRUSION MULTIPLIER (flujo)

En pasos anteriores cuando os comentamos el ajuste de los e-steps de vuestra máquina ya os adelantamos que dependiendo del tipo de filamento puede ser necesario ajustar el EM (Extrusion Multiplier) de este en nuestro laminador.
Para realizar el test de EM os aconsejamos seguir la siguiente guía donde tenéis más detalle del proceso.

MEJORAS KLIPPER

Klipper es un firmware que por su arquitectura es modular y permite que tanto sus componentes tradicionales puedan incorporar mejoras como que se puedan añadir mejoras de terceros. A continuación os sugerimos algunas interesantes.

3DWORK KLIPPER BUNDLE

Desde 3Dwork hemos recopilado y ajustando un conjunto de macros, configuraciones de máquinas y electrónicas, así como otras herramientas para una gestión sencilla y potente de Klipper.
Gran parte de este paquete está basado en RatOS mejorando las partes que creemos interesantes, así como otras aportaciones de la comunidad.
Si queréis más información de sus funciones y como instalarlo pasaros por la siguiente guía.

M600 (cambio filamentos)

Dado que en Klipper muchas de las funciones especiales como un cambio de filamentos se realizan mediante macros y, aunque puedes encontrar diferentes opciones en Internet, os sugerimos revisar la que solemos utilizar en nuestras máquinas y sugerimos en nuestros canales de Telegram.
Dado que ahora nos centramos en el 3Dwork Klipper Bundle que incluye M600 y muchas más macros interesantes te aconsejamos usar las de este.

LAYER PAUSE (macro para pausado avanzado)

Al igual que el M600 podemos crear macros que permitan realizar una pausa en una capa de forma programada si se nos olvidó realizar ese ajuste en nuestro laminador.
Si os parece de utilidad podéis encontrar información de como implementarla aqui.

EXCLUDE OBJECTS

Una función muy útil para nuestro Klipper es Exclude Objects, con ella podemos cancelar/omitir un objeto de nuestra impresión en caso de que tenga algún problema, ponga en peligro el conjunto de la impresión o que lo incluyésemos por equivocación.
En la siguiente guía sobre Exclude Objects podéis encontrar información para habilitarlo en vuestras máquinas.

MALLADO CAMA INTELIGENTE

Un excelente añadido si contamos con sensor de nivelación que nos va a permitir poder realizar una malla de nivelación del área de la pieza que imprimamos haciendo esto que nuestros ajustes de desfases en nuestra cama sean más precisos.
Podéis encontrar más información aqui.

TELEGRAM (control remoto)

En Klipper contamos con diferentes integraciones para poder controlarlo desde fuera de nuestra red. En nuestro caso por su simplicidad y utilizar nuestro IM favorito (Telegram) solemos usar este.
Podéis encontrar más información aqui.

TESTS AVANZADOS

Si hemos llegado a este paso nuestra máquina probablemente esté ajustada lo suficiente como para comenzar a imprimir con una buena calidad... pero seguro que podemos sacarle un punto extra para aprovecharla!!!

MAX SPEED (velocidad máxima)

Gracias a las bondades de Klipper podemos realizar fácilmente tests donde podremos encontrar la velocidad máxima de nuestra máquina.
Estos tests constan de dos partes:

TMC TUNNING

Este es un ajuste para usuarios muy avanzados pero que puede mejorar el rendimiento de la máquina significativamente en ocasiones y reducir algunos tipos de artefactos como el VFA.
Básicamente mediante unos cálculos por nuestro tipo de motores y drivers vamos a poder ajustar las opciones avanzadas de drivers TMC para que estos rindan de una forma más óptima.
Podéis encontrar más información en la guía de ajustes avanzados TMC.

FIRMWARE RETRACTION (retracciones por firmware)

Klipper cuenta con opciones de ajuste de retracciones por firmware que podemos ajustar durante una impresión y que podéis configurar siguiendo la siguiente guía.
Aunque poder controla las retracciones desde el firmware puede tener algunos puntos positivos dado que en un momento dado podremos realizar el ajuste fino, probablemente la gestión de estas desde el laminador va a aportar más opciones y ajustes aún perdiendo ese ajuste "en caliente".
Aconsejamos el usar el proceso clásico de ajuste de retracciones por el laminador tal y como tenéis en la guía de calibración FDM.
Última actualización 12d ago