Primeros pasos con Klipper
Ajustar nuestro printer.cfg y primeros tests de máquina
Última actualización
Ajustar nuestro printer.cfg y primeros tests de máquina
Última actualización
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.
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.
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.
Nuestro host no conecta a nuestra red:
Es un problema que puede surgir os damos algunas sugerencias de que mirar.
Si conectamos por WiFi tenemos que tener algunos aspectos en cuenta:
Algunos hosts no se llevan bien con redes mesh y algunas de sus funciones
Al igual que el punto anterior en ocasiones el host solamente puede utilizar redes 2.4GHz y usando WPA-Personal + WPA 2 como método de autenticación
En el caso de conectar por cable de red asegurarse que el cable hace link con nuestro hub/router y verificar que la configuración de red para nuestra red sea la correcta si forzamos una IP en el interfaz o usamos DHCP
Por otro lado, si necesitáis más información podéis conectar a vuestro host utilizando un cable y SSH, una pantalla o un teclado con los siguientes comandos:
dmesg
nos va a listar el estado de los diferentes componentes en el arranque del sistema
ifconfig,
nos va a proporcionar información de nuestra conexión e interfaces
sudo iw dev
, nos va a proporcionar información del estado de nuestros interfaces de red
sudo iw list
, nos va a proporcionar una información de tallada de nuestros interfaces
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:
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.
df
o du
, permite mostrar la información de uso de nuestro sistema de archivos tenemos opciones como df -h
para mostrar el espacio de una forma mas entendible, df -a
nos muestra todo el sistema de ficheros. Muy útil cuando queremos ver el espacio disponible o ver donde se nos va el espacio utilizado.
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 (si modificamos el fichero nos preguntará si queremos guardar los cambios antes de 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>
chmod
, nos permite modificar los permisos de lectura/escritura/ejecución de un archivo o directorio. Linux cada archivo/directorio esta asociado a tres clases de usuarios propietario/grupo/otros. Ejemplo chmod 777 printer.cfg
con esto permitimos acceso total acualquier usuario/grupo
chown
, permite cambiar la propiedad de un archivo/directorio/link simbólico a un usuario específico chown pi printer.cfg
cambiaria la propiedad de printer.cfg
al usuario pi.
Si queréis tener más datos de otros comandos Linux os aconsejamos revisar el siguiente link con los 40 comandos básicos de Linux que todo usuario debe saber.
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:
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.
BACKUP/COPIA de seguridad de vuestras configuraciones!!! 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.
Procesado del printer.cfg por parte de Klipper!!!
Klipper procesa la configuración de una forma secuencial, esto quiere decir que si tenemos una sección o parámetros de esta en varios sitios de nuestra configuración la configuración efectiva para Klipper será la última que procese.
Si tenéis una configuración modular o un printer.cfg muy extenso, aconsejable siempre modularizarlo, siempre se pueden crear conflictos de configuraciones así que en caso que algo no funcione como deseamos siempre revisar el log de Klipper donde se podrá encontrar la configuración efectiva que este ha procesado y será un claro indicativo que puede que tengamos duplicada esa sección o parámetro.
Zonas del printer.cfg donde colocar las configuraciones y donde no!!!
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 ---------------------->
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
En caso de errores de Klipper a la hora de procesar nuestra configuración os aconsejamos revisar la guía de troubleshooting/resolución de problemas ya que os pueden aportar ideas para resolver la mayoría de estos.
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
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.
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á:
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:
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
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:
Controles de movimientos:
Y otras herramientas que nos facilita el interfaz de Klipper para gestionar nuestra máquina.
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
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.
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 el pin de nuestra electrónica que controle el driver/motor que falle
si al encender la máquina y sin hacer nada intentamos mover los ejes de forma manual no nos deja porque los motores están activados, o la inversa... si vamos a realizar un movimiento de estos y entonces si que quedan libres pudiendo mover el eje con la mano, probablemente deberemos modificar la lógica de enable_pin añadiendo o eliminando ! al inicio de la definición.
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.
Para verificar que nuestros pasos sean correctos podemos utilizar la macro SET_KINEMATIC_POSITION que se utiliza para diagnóstico/debug en este tipo de situaciones.
El proceso sería el siguiente y os aconsejamos el uso de una regla:
IMPORTANTE!!! aunque ya verificamos motores y finales de carrera es más que aconsejable que estemos delante de la máquina para poder apagarla de emergencia en caso de que algo salga mal durante el proceso.
colocaremos manualmente nuestro cabezal de impresión en la mitad de recorrido de todos los ejes.
lanzaremos el comando SET_KINEMATIC_POSITION X=xxx Y=yyy Z=zzz donde ajustaremos los valores xxx yyy zzz a la mitad del valor del área de impresión que soporte nuestra impresora
verificaremos cada eje desde la consola primero indicando que los movimientos serán relativos al punto actual usando G91 para después ordenar un movimiento de, por ejemplo, 100mm con un G1 X100 F300 donde el valor de X serán los mm a mover el eje X y el F el feedrate en mm/min... realizaremos lo mismo para el restos de ejes : G1 Y100 F300 o G1 Z50 F300 (en el caso de Z os aconsejamos reducir el movimiento para evitar sustos)
con una regla por ejemplo, del tamaño adecuado a los movimientos de test a realizar, mediremos desde el origen del movimiento hasta el final para asegurarnos que están correctos... tampoco es imprescindible que lleguen hasta la micra ya que más adelante ajustaremos fino esto pero si que no veamos que las distancias son sustancialmente menores/mayores a lo solicitado
para evitar cualquier problema del este proceso de check es más que aconsejable, y lo tenéis más adelante en el proceso de homing, hacer un homing de todos los ejes o apagar la impresora totalmente o lanzar gcodes M84/M18 para deshabilitar los motores
En el caso que la dirección o distancia no sean adecuadas revisar de nuevo lo comentado al inicio de esta sección del ajuste de dirección y rotation distance de nuestros ejes de movimiento.
Otro método alternativo pero también más peligroso tenerlo activo es el uso de la función FORCE_MOVE que nos va a permitir mover los ejes sin realizar un homing:
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.
Desde la consola enviaremos el comando QUERY_ENDSTOPS y deberemos de ver una respuesta como:
Dejaremos pulsados todos nuestros finales de carrera y volveremos a lanzar el comando con ellos pulsados:
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
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.
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:
Una vez verificado que nuestros motores van en las direcciones correctas y los finales de carrera (endstops) funcionan correctamente ya podemos iniciar con más seguridad el proceso de homing.
Simplificando, el homing es el proceso por el cual nuestra máquina permite ubicar el punto de origen de sus coordenadas para a partir de este poder realizar los movimientos dentro de su área de movimiento o impresión.
Básicamente el proceso mueve los motores para encontrar el punto de activación de los finales de carrera en cada eje y a partir de ahí ya poder establecer su ubicación y límites de movimiento definidos en nuestra configuración.
Para verificar el proceso de home en cada eje:
IMPORTANTE!!! aunque ya verificamos motores y finales de carrera es más que aconsejable que estemos delante de la máquina para poder apagarla de emergencia en caso de que algo salga mal durante el proceso.
Comenzaremos haciendo el home del eje X, podemos hacer esto de diferentes formas ya sea mediante el interfaz web (siguiente captura), desde la pantalla de la impresora/host, o desde la propia consola lanzando el comando G28 X
Haremos lo mismo para nuestro eje Y, desde el interfaz web, pantalla o desde consola con G28 Y
Por último haremos lo mismo con el eje Z, desde el interfaz web, pantalla o desde la consola con G28 Z
En el caso que algo no funcione según lo esperado es aconsejable volver a revisar el apartado de comprobación de motores y endstops de nuevo para verificar que no se nos pasó nada por alto.
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
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.
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.
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.
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.
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.
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:
automático usando un acelerómetro... lo más aconsejable, cómodo y preciso
de forma manual... calculando de forma manual el efecto de las vibraciones en una pieza de test
Dado que es un ajuste clave para la calidad final de nuestras piezas os aconsejamos realizar con paciencia el proceso!!!
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 para Klipper utilizando un método simple para máquinas cartesianas.
Además disponemos de otro más completo, compatible con Marlin y compatible con máquinas delta, en nuestra guia de calibración FDM.
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:
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...
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í.
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.
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.
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.
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.
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.
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.
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.
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.
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!!!
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:
tests de cinemática... donde encontraremos la máxima velocidad de movimientos sin pérdida de pasos
tests de extrusión volumétrica... donde encontraremos la máxima velocidad de extrusión de nuestro sistema y filamento
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.
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.
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:
Distribución | Usuario/Password | |
---|---|---|
Vamos a describir a grandes rasgos las cosas a tener en cuenta para configurar sensorless en Klipper y no morir en el intento
MainsailOS
Raspberry Pi
pi/raspberry
Orange Pi
pi/armbian
RatOS
Raspberry Pi
pi/raspberry
Bigtreetech CB1
CB1
biqu/biqu