Sensor nivelación
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 BLTouch o inductivo, 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:
[bltouch]
sensor_pin: ^bltouch_sensor_pin
control_pin: bltouch_control_pin
speed: 7
pin_move_time: 0.675
pin_up_reports_not_triggered: True
pin_up_touch_mode_reports_triggered: True
x_offset: -28
y_offset: -13
samples: 3
sample_retract_dist: 10
samples_result: median
samples_tolerance: 0.02
samples_tolerance_retries: 5
Deberemos añadir nuestra sección
[bed_mesh]
y ajustarla para nuestra máquina, tenéis información aquí.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 información aquí.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
[stepper_z]
...
endstop_pin: probe:z_virtual_endstop
...
Usaremos la opción SAVE para guardar los cambios en nuestra configuración
Comprobaciones previas Bltouch
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
Parece que todo esta correcto así que os sugerimos continuar hacia el ajuste del Z-Offset y nivelación de cama.
IMPORTANTE!!!
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 ajuste del z-offset explicado más abajo.
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.
[stepper_z]
...
position_min: -5
...
Safe Z Homing
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:
[safe_z_home]
home_xy_position: 125, 125
z_hop: 10
z_hop_speed: 25
speed: 20
Podéis encontrar la documentación oficial de Klipper sobre el Safe Z Home:
Test de precisión
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
Recv: // probe accuracy: at X:0.000 Y:0.000 Z:10.000
Recv: // and read 10 times with speed of 5 mm/s
Recv: // probe at -0.003,0.005 is z=2.506948
Recv: // probe at -0.003,0.005 is z=2.519448
Recv: // probe at -0.003,0.005 is z=2.519448
Recv: // probe at -0.003,0.005 is z=2.506948
Recv: // probe at -0.003,0.005 is z=2.519448
Recv: // probe at -0.003,0.005 is z=2.519448
Recv: // probe at -0.003,0.005 is z=2.506948
Recv: // probe at -0.003,0.005 is z=2.506948
Recv: // probe at -0.003,0.005 is z=2.519448
Recv: // probe at -0.003,0.005 is z=2.506948
Recv: // probe accuracy results: maximum 2.519448, minimum 2.506948, range 0.012500, average 2.513198, median 2.513198, standard deviation 0.006250
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.
En el caso que nuestra mediana sea superior a 0.025mm deberiamos de revisar y ajustar nuestra configuración o sensor. Usaremos la macro PROBE_ACCURACY 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 Z-Offset y el mallado de la cama que podeis encontrar en esta guía.
Ajuste del Z-Offset (usando papel o galga)
Pasos previos!!!
Es necesario haber realizado un PID de nuestro hotend y cama previo a la realización de estos pasos.
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
Ajuste fino del Z-Offset
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.
Usando nues UI (Mainsail/Fluidd)
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.

Usando una pantalla
Dentro del menu Tune podremos encontrar los controles para ajustarlo.
Guardando el nuevo valor de Z-Offset
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!!!
Compensación en caso de eje torcido
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.

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.
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:
Activaremos
[
axis_twist_compensation
]
en nuestro printer.cfg para habilitar el módulo de compensación e idealmente ajustar sus opciones de ser necesario.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ámetroSAMPLE_COUNT=
y el número de puntos al lanzar la macro anteriorRealizaremos el proceso de ajuste del Z Offset normal explicado en puntos anteriores
Realizaremos los ajustes de nivelado manual asistido por sensor o screws_tilt_adjust, z-tilt en el caso que los tengamos habilitados para asegurarnos que tenemos todo ajustado correctamente
Haremos un home de todos los ejes y haremos un mallado de nuestra cama
Realizaremos un test de impresión de primeras capas y haremos los ajustes finos de Z Offset durante este.
Última actualización
¿Te fue útil?