PINDAv2/Inductivos
Tener instalado un sensor de Nivelación nos permite asegurar unas primeras capas perfectas sin tener que estar ajustando manualmente nuestra mecánica.
En este caso usaremos un PINDAv2 que es un sensor que incluye un thermistor que nos permite compensar uno de los puntos débiles de este tipo de dispositivos, la precisión en las lecturas con temperatura.
Otro hándicap es el rango de detección ya que normalmente no son capaces de detectar a través de bases de cristal muy gruesas.
Por el contrario una de sus grandes ventajas es que dado que no disponen de partes móviles como sensores estilo Bltouch son mucho más robustos y menos dados a tener fallos por uso intensivo.
Os recordamos que tienes mas guias de ayuda en nuestro bot de Telegram @ThreeDWorkHelpBot
Esquemas de conexión
Este tipo de sensores dada su simplicidad se conectan de forma normal en el conector Z- en sustitución del final de carrera. De todas formas y para alguna de las placas que disponemos puede ser aconsejable conectarlas en una ubicación diferente:
Esta placa cuenta con un arsenal de conexiones aunque podemos conectar en sus múltiples pines es aconsejable realizarlo en Z+ dado que dispone de la posibilidad de alimentación con diferentes voltajes de forma sencilla y además de disponer de un conversor en la entrada de señal para su pin que traduce las señales de cualquier voltaje al 3.3v requerido internamente.
En el caso que uséis Klipper como firmware para vuestra impresora podéis acceder a esta guía específica.
Cambios en Marlin
Si nuestro sensor de nivelación de cama se encuentre en el conector del final de carreras Z-MIN/Z-STOP dependiendo de la placa habilitaremos lo siguiente:
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // 3DWORK PINDAv2
En el caso que nuestra placa disponga de un conector especial para el endstop del sensor, necesitemos instalarlo en otro conector y dependiendo de la versión de Marlin usada (normalmente 2.0.7.x ya soporta la mayoria de placas actuales)#define USE_PROBE_FOR_Z_HOMING // 3DWORK PINDAv2
Si nuestro fichero pin de nuestra placa no contempla la definicion del PROBE_PIN deberemos definirla aqui (XX sera el pin usado):#define Z_MIN_PROBE_PIN XXX // 3DWORK PINDAv2
Indicamos el tipo de sensor de nivelación
#define FIX_MOUNTED_PROBE // U1JO PINDAv2
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
Ajustamos el tipo de nivelación automática, inicialmente durante la instalación del sensor de nivelación se aconseja usar BILINEAR pero el aconsejable para dejar en nuestra impresora es UBL que se puede encontrar en esta misma guía el proceso de configuración
#define AUTO_BED_LEVELING_BILINEAR
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.
Dependiendo del tipo de sensor puede ser necesario invertir el funcionamiento de final de carrera
#define Z_MIN_PROBE_ENDSTOP_INVERTING true
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 una de las líneas solamente, en este mismo documento está descrito como realizar el tipo UBL aconsejable para camas de gran tamaño o con problemas:
//#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR //#define AUTO_BED_LEVELING_BILINEAR // Aconsejable camas menores 235x235 //#define AUTO_BED_LEVELING_UBL // Aconsejable resto de tamaños o con problemas nivelacion //#define MESH_BED_LEVELING
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
#define ENABLE_LEVELING_FADE_HEIGHT
Habilitar el homing por eje, muy útil para ver que cada eje funciona correctamente en el proceso de homing
#define INDIVIDUAL_AXIS_HOMING_MENU
En el caso que nuestro sensor disponga de sonda de temperatura para compensación lo habilitaremos de la siguiente forma
#define TEMP_SENSOR_PROBE 1
Tenemos que tener en cuenta que deberemos conectar el pin del thermistor de nuestra sonda a un pin PWM para poder obtener dichas lecturas en el caso que nuestro fichero pins no disponga de el deberemos de crearlo y asignarlo a un pin libre.
Pin | Función |
Blanco | Pin del thermistor a conectar en un pin PWM |
Negro | Pin de señal del endstop normalmente en Z- |
Azul | GND |
Marrón | 5v |
Activar asistentes de nivelación de cama manual asistido por el sensor
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: define NOZZLE_TO_PROBE_OFFSET { 35, 5, -0.799 } 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: define LEVEL_CORNERS_INSET_LFRB { 40, 40, 40, 40 }
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
Otros cambios en configuration_adv.h
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
Al usar un sensor PINDAv2 activaremos la calibración por temperatura para compensar las desviaciones que la temperatura puede provocar en este tipo de sensores
#define PROBE_TEMP_COMPENSATION
Resumen de cambios
Para nuestro ejemplo usaremos una placa Fysetc Spider conectando el sensor en el conector Z+ tal como sugiere el fabricante quedando nuestra configuración de la siguiente forma:
Activar Babystepping
Esta funcionalidad es muy útil para un ajuste fino durante la impresión de la altura del eje Z
En configuration_adv:
#define BABYSTEPPING
#define DOUBLECLICK_FOR_Z_BABYSTEPPING
#define BABYSTEP_DISPLAY_TOTAL
Comprobaciones previas y resolución de problemas
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.
Comprobación de la parte ENDSTOP, la parte endstop funciona como cualquier endstop 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 comprobamos con M119 que el enstop cambia de TRIGERED (algo metálico cerca de la punta del sensor) a OPEN (sin nada metálico en la punta del sensor) correctamente.
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 debugActivar 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
Ajuste Z-Offset
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.
Ajuste del Z-Offset - WIZARD
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
Ajuste del Z-Offset - Pronterface
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 conM500
:
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 :
Calibración del sensor de temperatura
Este proceso puede llegar a durar mucho tiempo, cerca de 1hora, con este proceso nos ayudará a mejorar la precisión de las lecturas, realizaremos el siguiente proceso desde nuestro cliente terminal favorito:
G76 - inicia la calibración, tarda alrededor de 1h
M871 - muestra los valores de las lecturas
M500 - almacena en la EEPROM las lecturas de compensación de temperatura
IMPORTANTE!!! cada vez que la EEPROM sea borrada o reseteada se tiene que volver a realizar este proceso si no almacenamos este valor en nuestros fuentes de Marlin!!!
Script de inicio (Comandos GCODE)
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.
Visualizar nuestra malla de nivelación
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.
Porqué es importante visualizar esta malla de nivelació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
Como obtener nuestra malla de nivelación?
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).
Visualizar nuestra malla
En este caso podemos visualizar nuestra malla de formas diferentes:
Analizando el M503 o G29 T, os aconsejamos este último por simplicidad.
Última actualización