Bltouch/3DTouch/CRTouch/MicroProbe
Tener instalado un sensor de Nivelación nos permite asegurar unas primeras capas perfectas sin tener que estar ajustando manualmente nuestra mecánica.
Última actualización
Tener instalado un sensor de Nivelación nos permite asegurar unas primeras capas perfectas sin tener que estar ajustando manualmente nuestra mecánica.
Última actualización
En este caso usaremos un sensor por contacto con servo o comúnmente conocido como Bltouch, que es un sensor con mucha precisión y polivalente ya que puede trabajar en cualquier superficie.
Su funcionamiento es muy sencillo, básicamente consta de un solenoide que gracias al imán que lleva en la punta de sondeo permite recoger o desplegarlo. En las diferentes generaciones de sensores o marcas podemos encontrar que la detección de sondeo se realiza mediante un sensor hall (campos magnéticos) o uno óptico... cada uno tiene sus ventajas e inconvenientes en cualquier caso ambos dan una excelente precisión.
Para más información visita https://3dwork.io/configurar-bltouch-en-marlin/
Podéis encontrar como ejemplo el sensor original de AntcLabs y un clónico 3DTouch:
Es importante asegurarte que el pineado es correcto, depende de la versión o modelo del sensor el orden de los pines o los colores del cable pueden variar!!!
No nos hacemos responsables de ningún problema de conexionado, es vuestra responsabilidad aseguraos que el orden del cableado es correcto en cada caso.
Los siguientes ejemplos se muestran como ejemplos
En el caso de disponer de una Spider v1.1 esta cuenta con un conector específico para el Bltouch/3Dtouch
Es importante colocar el jumper rojo en la posición de 5v para alimentar correctamente nuestro sensor.
Creality tiene un amplio catálogo de máquinas y electrónicas que montan en ellas:
En el caso de electrónicas antiguas montadas sobre Ender 3/Pro, Ender 5 o CR-X no disponen de conectores y se usa un adaptador que extrae algunos pines del conector EXP
Electrónicas más actuales (4.2.x) ya disponen de un conector destinados al uso del sensor, normalmente Ender 3 V2 y Ender 5 Pro aunque algunas de las anteriores pueden llevar también estas electrónicas.
En estas electrónicas podemos utilizar dos métodos para la conexión de la parte endstop del sensor:
utilizando el conector PROBE específico, este es el caso aconsejable
utilizando el conector ZMIN, en este caso es importante asegurarnos que cogemos el firmware oficial correcto o al configurarlo por nosotros mimos asegurarnos que usamos #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
Dependiendo del método de conexión y como veremos mas adelante deberemos coger el firmware oficial correcto para que coincida con la conexión o asegurarnos que especificamos correctamente en las opciones de nuestro Marlin donde se conectó el sensor.
También algunos modelos que cuentan con una placa intermedia de conexiones en el hotend como las CR-10 V2 y V3 disponen de un conector pre-cableado
También os añadimos esquemas de pines para los modelos de BLTouch y clones más extendidos:
En el caso que uséis Klipper como firmware para vuestra impresora podéis acceder a esta guía específica.
Dependiendo de como conectemos nuestro sensor de nivelación a nuestra placa podemos optar por dos tipos de configuración en Marlin:
En el caso que el sensor de nivelación de cama se encuentre en el conector del final de carreras Z-MIN/Z-STOP dependiendo de la placa:
En el caso que nuestra placa disponga de un conector especial PROBE para sensores de nivelación y dependiendo de la versión de Marlin usada (normalmente 2.0.7.x ya soporta la mayoría de placas actuales)
Si nuestro fichero pin de nuestra placa no contempla la definición del PROBE_PIN deberemos definirla aqui (XXX sera el pin usado):
Indicamos el tipo de sensor de nivelación
#define BLTOUCH
Una parte muy importante del proceso de instalación de un sensor de este tipo es ajustar los valores de offset del sensor.
Los offsets del sensor, en X e Y, es la distancia entre la punta de nuestro nozzle y la punta del pin de nuestro sensor... en las siguientes capturas podréis verlo de una forma visual.
Dependiendo de la ubicación del sensor estos valores han de indicarse como un valor positivo o negativo... en la siguiente imagen, sacada del fichero de configuración de Marlin, puede aclararnos como identificar si es uno u otro.
Entendiendo del diagrama anterior que FRONT es el frontal de nuestra impresora y N nuestro sensor tomaremos los numeros 1 2 3 4 como posibles ubicaciones de nuestro sensor y dependiendo de ello usaremos de Example en cada caso para obtener si el valor es positivo y negativo para X dependiendo del valor de right/left y en el caso de Y lo mismo pero con back/front.
Por ejemplo si nuestro sensor se encuentra en 3 usaremos la distancia offset con valor positivo (right+) para X y negativo (front-) para Y.
Otro aspecto importante a la hora de instalar el sensor es la colocacion de altura en el eja Z, en el siguiente esquema tenéis un ejemplo:
Con el pin recogido del sensor ha de quedar entre 2.3-4.3mm del nozzle en su vertical, para que al desplegar el pin durante el sondeo (6.6mm) nos aseguremos que este se activa correctamente antes de chocar el nozzle con la cama.
Por último y en referencia al offset de Z o Z-Offset es la distancia entre que el sensor se activa durante el proceso de sondeo y la punta del nozzle como podéis ver en la siguiente imágen... en todo caso no hay que preocuparse en esta fase del proceso ya que esta medida/ajuste la realizaremos más adelante en la sección de ajuste de Z-Offset.
Ajustamos los offsets (localización del sensor de nivelación con respecto a la punta del nozzle) del sensor de nivelación
#define NOZZLE_TO_PROBE_OFFSET…
Es muy importante una vez subidos los cambios veríficar que los offsets esten correctamente cargados en la EEPROM. Esto lo podemos verificar usando el comando M503 desde Pronterface/Octoprint o desde la propia pantalla (segun version y opciones habilitadas en Marlin) en Configuración/Avanzado/Probe Offsets.
En el caso que no estén cargados correctamente esros valores podemos refrescar los datos desde Pronterface/Octoprint usando M502 M500 o desde la pantalla de la impresora Configuración Reset Load Save Eeprom.
Si deseamos cambiarlos sin tener que compilar Marlin podemos desde Pronterface/Octoprint usar el comando M851 y despues un M500 (guardarlos en EEPROM) y un M503 para verificar que se guardaron correctamente. Por ejemplo para un desfase X de -1.7 e Y -1.3 de nuestro PROBE usariamos el siguiente comando.
En el caso de tener cama de cristal con grapas/clips ajustamos el margen de seguridad para que el sensor no toque con las grapas/clips
#define MIN_PROBE_EDGE 20 // En este caso decimos 20mm de seguridad
Para versiones 2.0.6 de Marlin o superiores:
#define PROBING_MARGIN 20 // En este caso decimos 20mm de seguridad
Márgenes en el área de sondeo:
A la hora de realizar el sondeo de nuestra cama Marlin calcula los puntos en base al tamaño de nuestra cama y a los offsets del sensor. Por eso es crítico/importante que tanto los offsets de la cama sean correctos (nuestro X0Y0 coincidan con el inicio de la cama y XmaxYmax con el final de esta) como los del sensor.
En cualquier caso en ocasiones nos interesa disponer de más o menos márgenes para la zona de sondeado... por ejemplo si nuestro sensor dispone de un punto de sondeado grueso que pueda quedar fuera de márgenes o si disponemos de clips para sujetar nuestra superficie de impresión. En estos casos contamos con dos valores que nos pueden interesar conocer y en que afectan exactamente:
PROBING_MARGIN : este valor aplica un margen sobre los valores calculados del área de nuestra cama + los offsets del sensor. En la práctica, que si ponemos a 0 sondeará justo en los limites de nuestra cama pudiendo ser un riesgo.
MESH_INSET: al igual que el anterior aplica un margen pero en este caso sería un margen extra al área calculado sobre PROBING_MARGING. Por ejemplo si configuramos un PROBING_MARGING de 10 (mm) solamente e imaginando que no tenemos offsets en nuestro sensor (algo poco probable pero lo usamos para que se entienda el concepto de forma más sencilla) el primer punto de sondeo será sobre X10Y10. Si además de PROBE_MARGIN usamos MESH_INSET con un valor de 5 (mm) el primer punto de sondeo será X15Y15.
Para una mayor resolución en las medidas del sensor podemos habilitar que realice diferentes medidas en un mismo punto
#define MULTIPLE_PROBING 3 // Realizar tres medidas en cada punto
Para poder encontrar el Z-offset que necesitaremos más adelante y para el cual tenemos varios métodos es interesante poder bajar nuestro eje Z por debajo de su límite. Para ello podemos comentar la siguiente línea de Marlin:
// #define MIN_SOFTWARE_ENDSTOP_Z // Permite mover el nozzle por debajo de 0 en Z
Aconsejamos realizar este cambio solamente si eres un usuario avanzado ya que puede ser peligroso no deshabilitar los limites de la máquina.
Es preferible usar el proceso de Z-Offset desde el Wizard o desde Pronterface.
Para sensores tipo BlTouch es necesario invertir el funcionamiento de final de carrera
#define Z_MIN_PROBE_ENDSTOP_INVERTING false
Este valor para Z_MIN_PROBE_ENDSTOP_INVERTING puede variar dependiendo de que versión de Marlin usemos y dependiendo de la configuración puede tener que tener su valor sincronizado con el de Z_MIN_PROBE_INVERTING en ambos casos el SanityCheck de Marlin nos avisará de este ajuste al compilar.
Por seguridad y teniendo en cuenta la localización del sensor es aconsejable que el homing en Z se realice en el medio de la cama
#define Z_SAFE_HOMING
Es importante habilitar esta linea dado que un G28 desactiva el autonivelado, de esta forma no lo hará
#define RESTORE_LEVELING_AFTER_G28
Es muy útil y necesario habilitar las opciones de nivelación en el LCD
#define LCD_BED_LEVELING
LCD_BED_LEVELING no es compatible con pantallas que no usan modo Marlin, en el caso que de error de compilación se deberá de deshabilitar.
Seleccionar el método de nivelado a usar, descomentar solamente una de las líneas solamente:
UBL es el sistema de nivelación más avanzado y aconsejable de Marlin, en especial y creemos que de uso obligatorio para camas con un tamaño superior a 235x235.
Dado que el proceso de configuración y ajuste requiere de algunos pasos extras podéis encontrar una guía específica UBL aquí.
En esta guía y dado que el objetivo es la configuración del sensor y el tipo de nivelado va a depender de las necesidades de cada uno usaremos BILINEAR como ejemplo para simplificar el proceso.
Aunque recordamos de nuevo que usar UBL es siempre aconsejable por sus ventajas.
Tal como hemos comentado, y para simplificar esta guía vamos a utilizar el mallado BILINEAR como ejemplo... podemos ajustar el tamaño de nuestra malla ajustando GRID_MAX_POINTS donde podremos indicar los puntos de sondeo por eje... el número de puntos totales será el resultado de multiplicar ambos valores:
Dependiendo del estado de vuestra cama es más o menos aconsejable añadir más o menos puntos, en todo caso y por nuestras preferencias entendiendo el uso en una máquina con una cama bien mecanizada:
camas > 220x220 utilizar al menos 3 puntos por eje
camas = > 220x220 utilizar al menos 5 puntos por eje
camas = > 300x300 utilizar al menos 7 puntos por eje
Otro valor interesante es el de ajustar hasta que punto de la impresión se realizarán las correcciones, por defecto Marlin aplica estas correcciones en los primeros 10mm pero dependiendo de las necesidades se puede ajustar asegurando que habilitamos
Habilitar el homing por eje, muy útil para ver que cada eje funciona correctamente en el proceso de homing
Otro cambio muy interesante e útil es la activación del nivelado mediante sensor/probe en el asistente de nivelación de cama de 4 esquinas que nos ayudará a dejar nuestra cama de una forma sencilla y fiable lo más recta posible.
Actualmente diponemos de dos tipos de asistentes que pueden ser más adecuados o no dependiendo de nuestra impresora y sensor.
Nivelado de cama usando la activación del sensor, en este caso nuestro sensor toma la lectura de uno de las esquinas y la usa como referencia para ajustar el resto de esquinas... en este caso movera a cada una de las esquinas y moveremos manualmente las ruedas hasta que active el sensor y de por buena la nivelación de ese punto.
Para versiones de Marlin anteriores a la 2.0.9.x:
Para versiones de Marlin posteriores a la 2.0.9.x
Es necesario ajustar las coordenadas donde se realizará el test de las 4 esquinas para que al compilar no genere un error. Primero revisaremos el valor que tenemos en los offsets de nuestro sensor/probe, tomamos el siguiente como ejemplo:
A continuación cogiendo como referencia el valor absoluto mayor en los offsets del sensor/probe para los ejes X e Y de la anterior linea le sumaremos 5, en nuestro caso 35+5=40 y colocaremos ese valor en la siguiente linea:
Esto es una sugerencia de cálculo rápido y válido para el cálculo para las 4 esquinas con sensor aunque dependiendo de la máquina puede variar, es importante entender que ese punto que elijamos para las 4 esquinas el sensor de nivelación quede dentro de la cama ya que las coordenadas hacen referencia a la punta del nozzle
Nivelado de cama usando las lecturas del sensor, en este caso nuestro sensor toma la lectura de uno de las esquinas y la usa como referencia para ajustar el resto de esquinas... a diferencia del anterior en este caso el asistente pasa por las diferentes esquinas y podemos realizar lecturas de ese punto y vamos ajustando a mano hasta ajustar al valor más ajustado que podamos.
Al igual que con LEVEL_CORNERS_INSET_LFRB deberemos ajustar las coordenadas de TRAMMING_POINT_XY correctamente para nuestra impresora. Las coordenadas son las físicas de nuestros tornillos de ajuste pero teniendo en cuenta nuestro offset del sensor así que tendremos que ajustar en el caso que al aplicar esos offsets quede fuera la coordenada de nuestra área de impresión. Tenéis, como referencia, una calculadora aquí que podéis encontrar más abajo.
Asistente de Tramming o nivelado de cama manual asistido por sensor:
Desde Marlin 2.0.6 disponemos del asistente para nivelado manual de cama asistido por nuestro sensor de nivelación. Este asistente toma medidas de nuestra cama y nos devuelve la corrección a aplicar sobre las ruedas de nivelación para un ajuste óptimo.
Al activarlo dispondremos de una nueva opción en nuestra pantalla para lanzar el asistente pero... y si no disponemos de una pantalla o esta no es compatible?
Podremos mediante Pronterface, u otro cliente terminal como Octoprint, lanzar el comando G35
que realizará el proceso y nos mostrará por consola los ajustes a realizar:
Es importante que al lanzar el comando indiquemos el parámetro S que añadiendo el valor de la métrica de nuestro tornillo (3 para M3, 4 para M4 y 5 para M5) seguido del sentido de la rosca (0 sentido horario CW, 1 sentido anti-horario CCW).
https://marlinfw.org/docs/gcode/G035.html para más información
Es aconsejable aumentar el tiempo de respuesta para evitar problemas de comunicaciones en sensores clones especialmente, para sensores originales revisa la documentación del fabricante:
#define BLTOUCH_DELAY 500
Otra funcion interesante a activar para prevenir problemas de comunicación en el caso de cables no apantallados o muy largos es forzar el modo SW que permite el enviar pulsos más largos mejorando ruido en las señales
#define BLTOUCH_FORCE_SW_MODE
Es aconsejable activar reintentos en el proceso de generacion de malla G29 para prevenir problemas durante el proceso (esta función puede no ser compatible con todos los sistemas de nivelación como por ejemplo UBL)
# define G29_RETRY_AND_RECOVER
Esta funcionalidad es muy útil para un ajuste fino durante la impresión de la altura del eje Z En configuration_adv:
Es más que aconsejable que antes de intentar cualquier movimiento con nuestra máquina realicemos unas comprobaciones previas para asegurarnos que todo funciona correctamente y no llevarnos algún susto o dañar nuestra máquina.
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.
Comprobación del sensor:
Revisar la parte SERVO, la parte servo funciona con el grupo de tres cables (rojo/amarillo/negro). Para comprobar si funciona correctamente lo aconsejable es desde la pantalla ir a Configuración donde encontraremos un menu para gestionar el bltouch. Tambien se puede hacer esta parte con gcode desde un terminal:
En este caso, si nos falla la parte SERVO, tenemos que comprobar que podamos desplegar y recoger el pin manualmente. Si manualmente funciona pero no funciona lanzando los comandos deberemos revisar el cableado o en el caso de placas antiguas la definición del SERVO en Marlin. También se puede dar el caso de que nuestro pin del sensor no mantenga el imán en buenas condiciones y sea necesario imantarlo de nuevo. Tienes un video del proceso mas abajo.
Comprobación de la parte ENDSTOP, la parte endstop funciona como cualquier endstop y esta gestionado por el par de cables negro y blanco que normalmente colocamos en el puerto PROBE o Z-STOP/Z-MIN de la placa. Dependiendo de las versiones de Marlin debera colocarse en uno o en otro si esta soportada la placa o no completamente. Para comprobar que funcione correctamente y tal como hicimos en el paso anterior mediante el menu o comandos desplegamos y recogemos el pin y comprobamos con M119 que el enstop cambia de TRIGERED (pin recogido) a OPEN (pin desplegado) correctamente.
En el caso que la parte servo funcione correctamente y el estado del ENDSTOP no sea el correcto, normalmente el pin vuelve a recogerse automáticamente al detectar el sistema que no detecto ese cambio de estado, deberemos fijarnos principalmente en dos cosas:
orden correcto del cableado de la parte endstop en nuestra electrónica, te recuerdo que tiene polaridad y el pin GND y SGN tienen que ir donde toca
incorrecta configuración de nuestro firmware si hemos indicado que use ZMIN o PROBE como pin de señal endstop y colo camos el cableado donde no taca. En este caso podemos ajustar el firmware o el cableado según sea oportuno.
Activar Modo Debug nivelado
El modo debug para el nivelado se tiene que activar solo en caso de problemas con el proceso de nivelación si no es el caso puedes obviar este punto.
Cambios en Marlin (configuration.h):
#define DEBUG_LEVELING_FEATURE // Permite obtener información detallada en caso de problemas
Comandos gcode para habilitar/deshabilitar el modo Debug:
M111 S38 ; LEVELING, ERRORS, INFO
M111 S0 ; Disable debug
Activar Test de precisión Permite habilitar un menú dentro del LCD para realizar tests de repetitibilidad y mostrar el rango de precisión del sensor: #define Z_MIN_PROBE_REPEATABILITY_TEST
Verificar ajuste del pin para errores aleatorios en lecturas Se pueden dar dos casos que el pin este demasiado junto al servo que imanta el mismo y evite que caiga o que el imán del pin no tenga la suficiente tracción por el estado de su imán para que el servo lo pueda imantar y retraer. En estos casos mediante el tornillo central podremos ajustar ambos problemas en la medida de lo posible. Por otro lado en el caso que el pin este totalmente sin iman puedes extraerlo y dejarlo 24h junto con otro imán para que recupere sus propiedades... en caso que ninguna de estas soluciones funcione puedes solicitar un repuesto del pin o del propio sensor. Puedes ver el siguiente video donde puedes ver como es el proceso
El z-offset es la distancia entre que se activa el endstop del sensor y la punta del nozzle + margen de seguridad (tal como hacemos con el test del papel al nivelar manualmente).
Para encontrar y ajustar nuestro z-offset tenemos diferentes procedimientos que podemos seguir, a continuación os explicamos los más comunes.
En todo caso os sugerimos por simplicidad y siempre que vuestro firmware lo soporte o podamos activarlo usar el Wizard de Z-Offset de Marlin.
Desde la version 2.0.7.2 Marlin incluye un nuevo asistente para encontrar el valor Z Offset de una forma sencilla. Para activarlo iremos a configuration_adv y habilitaremos:
#define PROBE_OFFSET_WIZARD
Con esto dispondremos de un nuevo menu en Configuración/Avanzado/Probe Offsets
Realizaremos un Auto Home
Para verificar que todos los valores anteriores de offset son correctos nos fijaremos que el home se realiza en el centro de la cama con el sensor de nivelado en el centro de la misma.
En el caso que no quede perfectamente centrado:
verifica que los offsets de tu sensor configurados enNOZZLE_TO_PROBE_OFFSET
estan correctamente cargados en la EEPROM tal como indicamos en la modificación de Marlin para esa variable
confirma que tus coordenadas X0Y0 coincidan exactamente con el inicio de la cama y Xmax Ymax coinciden exactamente con el final de la cama
asegurate que no has modificado las formulas de la función SAFE_HOMING que por defecto usa el tamaño de tu cama en cada eje /2
Ajustaremos la temperatura del nozzle y cama a las temperaturas normales de impresion y volvemos a realizar un autohome
Vamos al menu de movimiento para el eje Z y seleccionamos movimientos de 0.1mm y bajamos hasta el punto donde mediante un folio notemos que roza suavemente con la punta del nozzle
En el punto donde encontremos que el folio y la punta del nozzle estan correctos anotaremos el valor que aparece en pantalla para el eje Z el cual debería de ser negativo para sensores bltouch, este valor lo ajustaremos en el menú Z Offset del LCD dentro de Configuracion y dentro de este mismo menu guardaremos en EEPROM y es ideal apuntar este valor en nuestro fichero configuration.h en el #define NOZZLE_TO_PROBE_OFFSET
Realizaremos un test de nivelado (G29) desde la pantalla en Movimiento/Nivelado de Cama/Nivelar Cama
En ocasiones puede que nuestra pantalla de la impresora no funcione o no disponga de funciones para mostrar el asistente/wizard o que no sea cómodo realizar el proceso anterior.
Para estos casos podemos desde un cliente terminal como Pronterface:
Calentaremos cama y fusor a las temperaturas de impresión habitual, idealmente dejar que se estabilicen esas temperaturas durante unos minutos.
Ajustaremos el z-offset a 0 mediante el comando M851
y seguidamente guardaremos en EEPROM con M500
:
Realizaremos un homing usando el comando G28
Mediante los controles de movimiento en Pronterface ajustaremos el eje Z hasta que se encuentre en la coordenada Z0, recuerda ajustar la escala de movimientos al menos a 1mm.
Marlin cuenta con protecciones llamadas software endstops, que previenen que podamos mover los motores en coordenadas fuera de rango, las cuales deberemos deshabilitar para poder movernos a coordenadas negativas. Enviando el comando M211 S0
deshabilitaremos los software endstops.
Volveremos a los controles de movimiento en Pronterface, importante ajustar la escala en 0.1, y con un folio o una galga (0.1) bajar el eje Z hasta que la boquilla roce.
Una vez tengamos la coordenada deseada de Z revisaremos nuestra pantalla o Pronterface para obtener ese número. Por ejemplo en nuestro caso hemos obtenido un valor de -1.48mm con lo que usaremos los siguientes comandos para aplicar ese valor como z-offset, habilitaremos los software endstops y por último guardaremos EEPROM:
Es aconsejable, para evitar perder este valor en futuros cambios, ajustar el z-offset en tus fuentes de Marlin en :
Deberás añadir la función de autonivelación al principio de cada impresión. Eso se hace muy fácilmente configurándose en tu Slicer favorito (Repetier, Simplify3D, Cura, etc.). Simplemente es añadir el comando G29 para nivelar vuestro cabezal antes de cada impresión.
Os dejo un ejemplo de mi script de inicio en cada impresión usando BILINEAR como sistema de nivelación:
En todo caso os aconsejamos revisar la Guia de Calibración Inicial ya que contiene un script de inicio completo con todas las opciones completas.
Como ya os hemos explicado la instalación de un sensor de nivelación nos va a permitir realizar mediciones del estado de nuestra plataforma de impresión para identificar desviaciones y así durante la impresión, normalmente de primeras capas, compensar estas desviaciones para tener esas primeras capas perfectas.
Estas mediciones se llaman "malla de nivelación" (mesh en inglés) y básicamente contiene las medidas del sensor en diferentes puntos de nuestra plataforma de impresión.
nos va a permitir identificar si nuestra cama esta correctamente nivelada, mediante los tornillos de ajuste manual que suelen llevar
identificar problemas en nuestra superficie para compensarlos con un mallado de nivelación más efectivo con más puntos de test o nivelado adaptativo/inteligente
Tenemos diferentes opciones para obtener nuestra malla:
M503, si hemos realizado una nivelación (G29) y guardado en la EEPROM esta mediante este gcode M503 lanzado desde un cliente serial como un ordenador (Pronterface) o host (Octoprint) conectado a nuestra impresora:
G29 T, este comando nos va a devolver también nuestra malla de nivelación pero en este caso de una forma más legible. Normalmente el punto [0,0] es el primer punto de nuestra malla que sería en la parte frontal izquierda de nuestra cama, por otro lado cada fila representa el eje Y (del frontal hacia la parte trasera) y cada columna representa el eje X (de izquierda a derecha).
En este caso podemos visualizar nuestra malla de formas diferentes:
Analizando el M503 o G29 T, os aconsejamos este último por simplicidad.
Podemos habilitar el comando G26 que nos permite lanzar un test de nivelación directamente sin necesidad de generar ninguno desde nuestro slicer, algo muy útil para un test rápido. Dentro de las opciones del G26 podrás ajustar los parámetros básicos de impresión #define G26_MESH_VALIDATION.
En el siguiente link de la documentación de Marlin sobre G26 podéis encontrar como añadir parámetros al lanzar el gcode G26 para ajustar el test o podéis hacerlo desde las fuentes para poner la configuración por defecto:
Nuestro eje X se encuentra 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. En Marlin contamos con X_AXIS_TWIST_COMPENSATION (M423) con el cual podremos compensar estas desviaciones para que no afecten a nuestro sondeo de cama con el sensor. Una vez activada en nuestro Marlin esta función podremos lanzar el asistente para el ajuste el cual os aconsejamos usar una galga metálica en lugar de un trozo de papel ya que va a ser más fiable el proceso.
Usando un visualizador online, como el del compañero ChillRain que podéis acceder desde aquí, donde básicamente copiaremos el resultado del G29T: Y podremos obtener una imagen 3D de los datos:
Octoprint, si utilizamos un host como Octoprint tenemos plugins como Bed Visualizar que ejecutará los gcode necesarios y nos creará la visualización 3D: