Nivelado UBL
Unified Bed Leveling. El sistema más avanzado de nivelación de Marlin
Si no conoces la nivelación automática, explicarte que esta se encarga de medir la topología de tu plataforma de impresión para compensar imperfecciones o desviaciones de esta. Estas compensaciones las realizará durante la impresión ajustando la altura del eje Z.
Tipos de nivelación
En Marlin contamos con 5 tipos de nivelación:
nivelación de 3 puntos (3 Point Leveling), asume que tenemos una plataforma de impresión totalmente plana y simplemente realiza mediciones en tres puntos para triangular las desviaciones
nivelación lineal (Linear Leveling), realiza un sondeo de puntos creando una matriz utilizando el algoritmo "least squares"
nivelación bi-lineal (Bilinear Leveling), realiza un sondeo de puntos creando una malla para representar las imperfecciones de nuestra plataforma de impresión pudiendo elegir el cálculo de esta malla mediante diferentes algoritmos
nivelación mediante malla manual (Mesh Bed Leveling), para poder crear una malla de nuestra cama manualmente con el típico test de papel sin necesidad de utilizar un sensor... tenéis más información en la siguiente guía
nivelación UBL (Unified Bed Leveling), el sistema de nivelación más avanzado de Marlin que integra varias herramientas como edición de los puntos de mallado, múltiples mallas almacenadas para diferentes tipos de superficies, check rápido al inicio de la impresión, etc... que explicaremos con más detalles en esta guía
UBL
UBL es el sistema más avanzado de nivelación existente para Marlin. Incorpora mejores herramientas (gcode/terminal y menús LCD) para la generación, edición y gestión de las mallas generadas. Además, permite un muestreo de puntos en la cama de hasta 100 puntos y un check rápido de 3 puntos de referencia en el momento de iniciar la impresión generada con el slicer.
¿Qué necesitamos?
tener bien nivelada nuestra cama manualmente, en las guías anteriores tienes información de como habilitar un asistente de nivelación de cama con sensor de nivelación para hacer el proceso más sencillo
conocimientos para compilar Marlin, tienes el proceso y herramientas necesarias explicadas en nuestra guía de compilación Marlin
1. Cambios en Marlin (configuration.h)
#define AUTO_BED_LEVELING_UBL // Habilita UBL como sistema nivelación, en siguientes líneas indica el número de puntos 7 aconsejable
#define DEBUG_LEVELING_FEATURE // Permite obtener información detallada en caso de problemas
#define ENABLE_LEVELING_FADE_HEIGHT // Indica hasta qué altura aplica las correcciones de cama 10 mm por defecto
#define G26_MESH_VALIDATION // Habilita el comando G26 para realizar un test de impresión de la malla
#define MESH_INSET 10 // Permite ajustar el margen a partir del cual puede realizar las mediciones en mm
#define GRID_MAX_POINTS_X 3 // permite especificar los puntos a usar por eje, si ponemos 3 puntos creará una malla de 3 x 3 puntos (9) de nuestra cama, siempre y cuando no modifiquemos la fórmula en #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X. El límite de puntos son 15.
#define UBL_MESH_WIZARD // a partir de Marlin 2.0.8.1 habilita un asistente para la generación de la malla
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.
2.a Ajuste del Z-Offset utilizando el wizard a partir de 2.0.7 (método rápido)
Con esto dispondremos de un nuevo menu en Configuración/Avanzado/Probe OffsetsDesde 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
2.b Ajuste del Z-Offset manualmente
Desde el terminal pero se puede realizar de otras formas
G28 para realizar un home
M851 Z0 ajusta el offset de Z a 0
M211 S0 desactiva los enstop de seguridad, ojo!!! al deshabilitar esto los motores pueden chocar con chasis o cama... ir con cuidado
G1 X150 Y150 Z0 F7000 para ubicar el cabezal de impresión en el centro de la cama, este ejemplo es para una cama de 300x300 para adaptarlo al tamaño de tu cama modifica X150 e Y150 por los valores adecuados a tu impresora
Desde el Pronterface o LCD ir bajando Z y ajustar con un folio de la forma tradicional
Una vez encontremos la altura adecuada revisar el valor Z en el LCD y ajustarlo como Z-Offset mediante el comando M851 Z "X" (X es el valor mostrado en la pantalla)
Hacer un homing de todos los ejes desde el LCD o G28
Realizar el paso 4 de nuevo y verificar que el cabezal queda correctamente ubicado y la posición de Z es la correcta obtenida anteriormente si no volver a realizar el proceso
M500 para guardar los valores en EEPROM y se aconseja guardar este valor en los Offset del Probe en Marlin para futuro. Tambien se puede hacer desde los menus del LCD en Configuracion/Salvar EEPROM
3. Generación de malla UBL
Usando el asistente UBL (a partir de Marlin >2.0.8)
Desde la versión 2.0.8.1 de Marlin ha sido incluido un asistente para la creación de malla donde solamente tenemos que configurar desde la propia pantalla desde Motion/UBL Mesh Wizard la temperatura de la cama, nozzle y el slot de memoria donde guardar la malla.
Podéis ver el proceso en el siguiente video:
Usando un sensor de nivelación
Se puede realizar desde el LCD en las herramientas UBL como desde terminal (emplearemos el terminal para el ejemplo)
Ajuste manual de la cama 4 esquinas y folio tradicional
Realizaremos un G28
Realizaremos un pre-calentado de cama y nozzle que normalmente usemos
Realizaremos una malla usando G29 P1 desde el terminal o desde las herramientas UBL de la pantalla
Una vez finalizado podemos usar G29 T para visualizar los valores de la malla. Puedes usar estas herramientas web para verlo graficamente: https://mkdev.co.uk/mesh-visualizer/ http://lokspace.eu/3d-printer-auto-bed-leveling-mesh-visualizer/ https://i.chillrain.com/index.php/3d-printer-auto-bed-leveling-mesh-visualizer/
Por la ubicación del sensor de nivelación en muchas ocasiones Marlin no va a llegar a todos los puntos de la malla con lo que en el paso anterior veremos coordenadas sin valores solamente con un ".". Para realizar el relleno de todos los puntos que no pudieron medirse lanzaremos un G29 P3 (G29 P3 T mejor ya que calcula todos los puntos que falten) este comando calcula extrapolando valores que si que se pudieron verificar a los que no pudieron medirse.
Una vez aparezcan todos los puntos de la malla con un valor, fuera medido o extrapolado por el punto anterior, almacenaremos la malla en la posición 1 de la EEPROM con G29 S1
Nos aseguramos de que el autonivelado quede activo con G29 A
Ahora que ya tenemos todos los valores básicos correctos lanzaremos un M500 para guardarlos en la EEPROM. IMPORTANTE!!! cada vez que la EEPROM sea borrada o reseteada se tiene que volver a realizar este proceso!!!
Descripcion del proceso en Marlin:
Manualmente sin sensor de nivelación
Como hemos comentado UBL puede ser usado con o sin sensor de nivelación (PROBE_MANUALLY tiene que estar definido en Marlin) permitiendo tener un mejor control en las desviaciones en nuestra cama si esta no esta perfectamente recta.
Más importante que en el caso de disponer un sensor de nivelacion es muy importante que tengamos correctamente nivelada nuestra cama de impresion con el metodo de 4 esquinas y el folio para asegurar que los valores obtenidos con la malla solo requiera correcciones.
En este caso en lugar de empezar con un G29 P1 (sondeo de la cama automático) lo haremos con G29 P0 para realizar el sondeo de forma manual.
4. Modificaciones en gcode inicio(start) del slicer
Debes añadir los siguientes gcodes en le script de inicio de tu slicer justo después del G28 (homing)
G29 L1 ; Carga la malla guardada en la memoria 1 usado en los pasos anteriores para almacenar la malla
G29 J ; realiza un test rápido de 3 puntos para validar cualquier desviación
IMPORTANTE!!! en el caso de usar nivelación UBL sin sensor de nivelación el G29 J no se debe de añadir a nuestro gcode de inicio.
Realizar un test de impresión a ser posible de un modelo de calibración de cama como...
...donde puedes crearlo personalizado para tu impresora. Idealmente durante la impresión de dicho test podemos ir ajustando con babbystepping a nuestro gusto el ZOffset y posteriormente si hicimos cambios aplicarlos al ZOffset y guardar en EEPROM.
Troubleshooting
M111 S38 habilita el modo debug
#define DEBUG_LEVELING_FEATURE si no es posible habilitarlo por el comando anterior
Última actualización