Sensor nivelación
Última actualización
Última actualizació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:
En la sección [bltouch] podemos encontrar (más información detallada en la documentación de Klipper):
sensor_pin: donde indicaremos el pin de la parte endstop de nuestro sensor
control_pin: en este caso indicaremos el pin del servo
speed: la velocidad del eje Z al realizar el sondeo
pin_move_time: el tiempo de espera para realizar un despliegue o recogida del pin de sondeo
samples: el número de veces que queremos que se sondeen cada punto, en inductivos es aconsejable dependiendo del tipo de sensor realizar más de un sondeo
sample_retract_dist: en el caso que usemos multi-probing (multiples sondeos por punto) indicara la distancia de retracción de Z para estos sondeos y deberemos ajustar esta para que nuestro sensor cambie de estado antes de realizar el siguiente sondeo
samples_result: tipo de media de lectura de valores en multi-probing
samples_tolerance_retries : indicaremos cuantos reintentos queremos realizar en un sondeo en el caso que su desviación sea superior al valor en samples_tolerances
x y offsets: son los offsets del sensor con respecto a nuestro nozzle
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
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.
Antes de nada, su sensor se queda parpadeando en rojo al iniciar la máquina? que puede causar este error...
Si nuestro BLTouch parpadea rápidamente en rojo (mismo tiempo encendido y apagado...50%) significa que nuestro sensor está en fallo, indicando un fallo durante el proceso de self-test... como por ejemplo un problema de cableado, configuración, obstrucción o fallo servo del pin, etc...
Por otro lado, un patrón de parpadeo más lento (más tiempo de encendido que apagado...80%) es un signo que puedes tener un problema de cableado incorrecto o dañado en 5v o GND.
BLTouch parpadeando rápido con patrón 50% on/off, indica un fallo durante el self-test... os sugerimos algunas cosas a revisar:
El pin se queda obstruido o no se mueve con normalidad, puede ser por diferentes razones como un incorrecto ajuste de altura del pin central, dañada la parte servo o por factores externos como suciedad
El sensor se encontraba muy cerca de la cama y no permitió el correcto despliegue del pin golpeando esta antes de poder activar su señal de check
Velocidad de homing en Z muy lenta o rápida
Problemas con la configuración de tu firmware
Tu sensor está dañado
BLTouch parpadeando lentamente con patrón 80% on/off, indica un fallo en la alimentación del sensor:
Lo más normal suele ser tener invertidos los cables de alimentación 5v y GND
Cableado dañado o problemas de contacto en este
BLTouch con el led rojo encendido sin ningún patron de parpadeo, indica que nuestro sensor está funcionando normalmente.
Tenéis más información de estos errores en el manual del BLTouch.
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.
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:
En la sección [safe_z_home] podemos encontrar:
home_xy_position: el cual indica la coordenada donde nuestro eje Z realizará el proceso de homing. Por seguridad esta coordenada se aconsaja que sea el centro de la nuestra cama. Recuerda que las coordenadas en Klipper siempre usan la refencia del nozzle por lo que si quieres dejar tu sensor en el centro de tu cama deberás de calcular esas coordenadas teniendo en cuenta los offsets de tu sensor. En el caso que nuestro sensor tenga estos offsets X-20Y20 y una cama de 235x235mm la coordenada seria... X= (235mm/2)+20 (tamaño total de X dividido entre 2 para encontrar el centro y sumamos el offset de nuestro sensor en X al ser este un valor negativo)=X97 Y= (235mm/2)-20 (tamaño total de Y dividido entre 2 para encontrar el centro y, en este caso, restamos el offset de nuestro sensor en Y al ser un valor positivo)=Y147
speed: la velocidad a la que se moverán los ejes XY a la coordenada indicada
z_hop: la distancia que se alzará el eje Z antes de realizar el proceso de homing
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.
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.
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.
Klipper normalmente asume que este proceso se realizó en frío, en nuestro caso al hacerlo en caliente normalmente se aconseja realizar un TEST Z=-0.1 o -0.5 antes de guardar los cambios.
De todas formas normalmente es acabar realizando este test con un test de calibración de primeras capas y el ajuste fino de la altura en Z o babystepping.
Ahora que ya tenemos nuestro Z-Offset ajustado lo ideal seria hacer una malla de nuestra cama si disponemos de sensor
Si disponemos de una pantalla nativa de nuestra impresora configurada o tenemos KlipperScreen podremos tener un asistente para el proceso.
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:
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ámetro SAMPLE_COUNT=
y el número de puntos al lanzar la macro anterior
Realizaremos 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.
Si necesitas más información sobre las configuraciones del módulo axis_twist_compensation puedes encontrarlas en la documentación oficial de Klipper.
Para los comandos relacionados con axis_twist_compensation puedes encontrarlos también en la documentación oficial de Klipper.
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.