Sensor nivelación
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Un sensor de nivelación es uno de los mejores upgrades que podemos hacer a nuestra impresora 3D que simplificará el proceso de nivelación y mejorará la calidad de nuestras primeras capas las cuales suelen ser de las más críticas.
Aunque la instalación y configuración de un sensor de nivelación, en este ejemplo un o , no es extremadamente complicada si que va a requerir de ciertos cambios a nivel de cableado, montaje, configuración de firmware y calibración.
Un BlTouch es un sensor de nivelación que tiene un sensor de efecto Hall, determina la proximidad basándose en campos magnéticos, además incluye una bobina que permite un control del pin de sondeo y en su instalación en la máquina hemos de asegurarnos que el pin (recogido) se encuentre entre 2.3 y 4.3 mm de la punta del nozzle.
En algunos modelos o fabricantes podemos encontrar que sustituyen el sensor hall por uno óptico.
Para configurar nuestro sensor BLTouch conectado a nuestra electrónica de la impresora seguiremos los siguientes pasos:
Abriremos nuestro printer.cfg, lo ideal es hacerlo desde la UI que usemos normalmente ya sea Mainsail o Fluidd
Añadiremos una sección nueva llamada [bltouch] siempre por encima de la sección de SAVE_CONFIG donde se guardan todos los valores de ajuste de los diferentes asistentes como PID, mallado, etc... A continuación puedes ver un ejemplo:
La última parte a modificar será [stepper_z] que ya debería de existir, en este caso tendremos que asegurarnos que el endstop_pin es endstop_pin: probe:z_virtual_endstop
Usaremos la opción SAVE para guardar los cambios en nuestra configuración
Una vez que tenemos toda la configuración añadida deberemos de verificar que todo funciona correctamente antes de realizar ningún home.
Al encender la impresora el BLTouch debería de hacer el proceso de self-test. Este proceso despliega y recoge el pin varias veces y el sensor queda en color rojo. En el caso que el led se quede parpadeando o el pin no llegue a desplegar/recoger deberías de revisar en detalle el cableado y configuración.
En el caso de usar BLTouch clones tenemos que jugar con los valores pin_up de igual forma que puede que no funcionen muy bien con la macro QUERY_PROBE.
Si al realizar el QUERY_PROBE nos encontramos con el error "BLTouch failed to verify sensor state" será necesario ajustar pin_up_touch_mode_reports_triggered a False.
Si al realizar los tests de prueba del pin para su despliegue o recogida no funciona bien es posible que necesitemos pin_up_reports_not_triggered a False, normalmente el pin no funciona y el estado cambio de open a triggered cuando no debiera.
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 ~.
Es importante el orden de valores [^~] [!] pin_name
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.
Ejecutaremos el comando BLTOUCH_DEBUG COMMAND=pin_down desde el terminal. Este comando despliega el pin del sensor y el led rojo debería apagarse. En el caso que el led se quede parpadeando o el pin no llegue a desplegar/recoger deberías de revisar en detalle el cableado y configuración.
Ejecutaremos el comando BLTOUCH_DEBUG COMMAND=pin_up desde el terminal. Este comando recogerá el pin del sensor y el led debería de quedar en rojo. En el caso que el led se quede parpadeando o el pin no llegue a desplegar/recoger deberías de revisar en detalle el cableado y configuración.
Una vez verificada la parte servo de nuestro sensor comprobaremos la parte endstop lanzando el siguiente comando que desplegará el pin BLTOUCH_DEBUG COMMAND=pin_down
Seguidamente ejecutaremos el comando BLTOUCH_DEBUG COMMAND=touch_mode
Para comprobar el estado del endstop lanzaremos QUERY_PROBE que debería retornarnos probe:open
Manualmente subiremos el pin de nuestro sensor y volveremos a lanzar QUERY_PROBE que debería retornarnos probe:TRIGGERED
Si todo ha funcionado correctamente nuestro sensor parece bien instalado!!! lanzaremos el comando BLTOUCH_DEBUG COMMAND=pin_up
Ahora vamos a comprobar un homing lanzando el comando G28, idealmente te aconsejaría mover el eje Z a la mitad de su recorrido antes
Tan pronto como se inicie el proceso de homing para el eje Z se debería desplegar el pin y comenzar el movimiento hacia nuestra cama, para prevenir cualquier fallo os aconsejamos que de forma manual hagáis que el pin se active lo cual debería de parar el movimiento de homing simulando que se hizo correctamente.
Si todo ha ido según lo esperado lanzaremos, esta vez sin intervención manual, un homing con G28 de nuevo
IMPORTANTE!!!
Para evitar errores de movimientos fuera de rango en el proceso de z-offset u otras nivelaciones hemos de ajustar el position_min de nuestro stepper_z a un valor adecuado y con cierto margen para que nos permita esos movimientos.
Una configuración común para todos los sensores de nivelación suele ser el safe_z_home. Esta configuración nos ayuda a definir unas coordenadas seguras para que nuestro sensor pueda hacer el homing correctamente. Normalmente lo haremos en el centro de nuestra área de impresión.
Dentro de nuestro printer.cfg
crearemos, si no la tenemos ya, la sección [
safe_z_home
]
a continuación os vamos a mostrar un ejemplo:
Podéis encontrar la documentación oficial de Klipper sobre el Safe Z Home:
Una vez tengamos correctamente configurado nuestro sensor de nivelación es aconsejable realizar un test de precisión.
Realizamos el proceso de home para que nuestro cabezal de impresión quede en el medio de nuestra cama y desde el terminal lanzamos la macro PROBE_ACCURACY
El resultado ideal sería que el valor máximo y mínimo fueran idénticos. En la realidad pueden variar de un paso 0.005mm o rotation_distance/(full_steps_per_rotation*microsteps). En el ejemplo anterior el paso de Z es de 0.0125mm.
Pasos previos!!!
Realizar un pre-calentado de cama y hotend en la temperatura que normalmente imprimais durante unos 5-15m
Tener realizado la prueba del punto anterior de nivelación de la cama ya sea manual o asistida con sensor
Disponer de un folio o galga de 0.1
Realizaremos un homing:
en el caso que tengamos una máquina con 2 o 3 motores independientes en Z realizaremos primero un Z_TILT_ADJUST (nivelación del gantry) y a continuación un G28 (homing de todos los ejes)
en el caso que tengamos una máquina con 4 motores independientes en Z realizaremos primero un QUAD_GANTRY_LEVEL (nivelación del gantry) y a continuación un G28 (homing de todos los ejes)
si tu máquina no concuerda con ninguno de los casos anteriores realiza directamente un G28 (homing de todos los ejes)
Moveremos nuestro hotend al centro de la cama si no tenemos activo el safe_homing
Limpiaremos cualquier malla de nivelación de nuestra cama con un BED_MESH_CLEAR
Dependiendo del final de carrera que usemos en nuestra máquina:
si tenemos un final de carrera mecánico usaremos Z_ENDSTOP_CALIBRATE... por ejemplo máquinas como las Voron V0, Trident, V2.x o BLV
si usamos nuestro sensor de nivelación como final de carrera usaremos PROBE_CALIBRATE
Mediante comandos iremos bajando lentamente el nozzle hacia la cama usando TESTZ Z=-1 hasta que estemos cerca para en ese momento realizar movimientos más pequeños usando TESTZ Z=-.01 o incluso menos hasta que nuestro nozzle roce con el papel. Podemos alternar el TESTZ con valores positivos/negativos y mayores/menores hasta que tengamos nivelado a nuestro gusto en ese momento lanzaremos un ACCEPT y un SAVE_CONFIG para guardar la configuración.
En el caso que usemos una configuración modular en la que nuestro zoffset no se encuentre directamente en nuestro printer.cfg puede dar errores al hacer el SAVE_CONFIG.
En estos casos puedes añadir, solamente la primera vez seria necesario, la sección bltouch y el valor de z_offset después de SAVE_CONFIG:
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
En el caso de un sensor bltouch
#*#
#*# [bltouch]
#*# z_offset = 0.685
#*#
En el caso de un probe normal
#*#
#*# [probe]
#*# z_offset = 0.320
#*#
Os recordamos que Klipper usa valores positivos para su ZOffset para aquellos que vengáis de Marlin.
Ahora que ya tenemos nuestro Z-Offset ajustado lo ideal seria hacer una malla de nuestra cama si disponemos de sensor
Es muy probable que después del proceso anterior no acaben de quedar nuestras primeras capas en ese caso lo ideal es realizar un ajuste fino de nuestro Z-Offset durante una impresión de test.
Dentro de nuestro interfaz Mainsail/Fluidd, normalmente en la sección toolhead, usaremos los controles de babystepping para ajustar en tiempo real la altura de primera capa a nuestro gusto.
Dentro del menu Tune podremos encontrar los controles para ajustarlo.
Ahora que ya tenemos el ajuste fino del Z-Offset deberemos guardarlo en nuestro printer.cfg:
En el caso que usemos un endstop físico para ajustar el valor position_endstop lanzaremos el comando Z_OFFSET_ENDSTOP seguido de SAVE_CONFIG... ojo que estor reiniciará tu impresora!!!
En el caso que usemos un sensor como final de carrera en Z y para ajustar el valor z_offset lanzaremos el comando Z_OFFSET_APPLY_PROBE seguido de SAVE_CONFIG... ojo que estor reiniciará tu impresora!!!
En ocasiones nos podemos encontrar que después de ajustar y nivelar nuestra cama de forma manual, tener unas lecturas precisas del sensor o incluso realizar multiprobing para mejorar las lecturas... el resultado no es el correcto.
Klipper y su compensación de eje torcido no es compatible con todos los tipos de sensores de nivelación.
Para activar la compensación de ejes tocidos, a partir de ahora axis_twist_compensation
realizaremos los siguientes pasos:
Desde la consola lanzaremos la macro de sistema AXIS_TWIST_COMPENSATION_CALIBRATE
que lanzará un asistente para medir el Z Offset en diferentes puntos de nuestra cama, inicialmente utiliza 3 puntos pero podemos realizar más añadiendo el parámetro SAMPLE_COUNT=
y el número de puntos al lanzar la macro anterior
En la sección [bltouch] podemos encontrar ():
Deberemos añadir nuestra sección [bed_mesh]
y ajustarla para nuestra máquina, tenéis .
También es más que aconsejable añadir la sección [safe_z_home]
para ubicar el sensor en una posición segura para realizar el proceso de homing... tenéis más .
Tenéis más información de estos errores en el .
Parece que todo esta correcto así que os sugerimos continuar hacia el .
En la sección [probe] podemos encontrar ()::
Deberemos añadir nuestra sección [bed_mesh]
y ajustarla para nuestra máquina, tenéis .
También es más que aconsejable añadir la sección [safe_z_home]
para ubicar el sensor en una posición segura para realizar el proceso de homing... tenéis más .
El primer paso es asegurarnos que nuestra Raspberry puede ser usada por Klipper como MCU . Al final si todo ha ido correctamente dispondremos en nuestro printer.cfg con una sección para nuestra rpi como MCU:
El siguiente paso será adaptar el cableado al siguiente esquema (es necesario disponer de conectores Dupont o similares para adaptar estas conexiones) os aconsejamos tener a mano el :
normalmente cuando activamos un sensor de nivelación este marca nuestra coordenada 0 de Z por encima de la altura física, esta diferencia la encontraremos con el proceso de explicado más abajo.
En el caso que nuestra mediana sea superior a 0.025mm deberiamos de revisar y ajustar nuestra configuración o sensor. Usaremos la macro para testear los diferentes parámetros y ver como afectan a la precisión.
Una vez encontrados los valores óptimos se aconseja realizar el proceso de .
Es necesario haber de nuestro hotend y cama previo a la realización de estos pasos.
De todas formas normalmente es acabar realizando este test con un test de calibración de primeras capas y el .
Nuestro eje X/Y puede estar torzido, una situación que no es extraña en muchas ocasiones es que nuestro eje X esté torcido y dado que normalmente los sensores de nivelación se colocan alejados del eje y con respecto al nozzle (que este si que suele estar bastante más cercano al eje, el ángulo puede llegar a provocar problemas serios a la hora de realizar nuestro mallado. En el anterior dibujo podéis ver como puede impactar a la fiabilidad de las lecturas del sensor el tener este tipo de problemas en el que observamos que en determinadas áreas de nuestra área de impresión no podemos obtener unas correcciones buenas acabando en unas malas primeras capas. Aunque os vamos a explicar las opciones disponibles en Klipper para minimizar/compensar estos fallos mecánicos es siempre aconsejable que antes intentemos arreglar el problema mecanicamente intentando ajustar nuestro chasis y cinemática lo máximo posible.
Activaremos [
]
en nuestro printer.cfg para habilitar el módulo de compensación e idealmente ajustar sus opciones de ser necesario.
Realizaremos el proceso de normal explicado en puntos anteriores
Realizaremos los ajustes de nivelado manual asistido por sensor o , en el caso que los tengamos habilitados para asegurarnos que tenemos todo ajustado correctamente
Haremos un home de todos los ejes y haremos un
Realizaremos un test de impresión de primeras capas y haremos los durante este.
Si necesitas más información sobre las configuraciones del módulo axis_twist_compensation puedes encontrarlas en la .
Para los comandos relacionados con axis_twist_compensation puedes encontrarlos también en la .