Calificación:
  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Unified Bed Leveling, o dicho en castellano: El copón de la baraja.
#1
Hace algunos años que empece a probar sistemas de nivelado, tanto el software como el hardware, cuando Marlin incorporo el UBL (http://marlinfw.org/docs/features/unifie...d-leveling) en su versión 1.1.2 me pareció una idea curiosa, pero poco realista ya que pretender que unas pocas, muy pocas realmente, líneas de código puedan subsanar las carencias de una cama mal nivelada, me pareció un atrevimiento.

Pero en la versión 1.1.8, el escenario es muy diferente... pero mucho. Reutilizando el código G29 como en un equilibrado bilineal, y permitiendo una gran variedad de opciones maquina-hombre, desde todo automático a un nivelado fino, pero fino, fino como deben ser los nivelados de verdad, el equipo de Marlín ha hecho un trabajo estupendisimo.

Si hojeamos la página de resumen del G29 (http://marlinfw.org/docs/gcode/G029-ubl.html) veremos que puede usarse desde para "ayudarnos" a corregir el nivelado mecánicamente, a calcular la mejor opción posible de las lecturas realizadas sobre la superficie, completando en el paso 4 aquellos puntos que el sistema no ha sido capaz de estimar.

¿Y el capricho del G26? ¿Que me decís de la cantidad de utilidades para dejar de una vez por todas nuestra cama nivelada para siempre jamás? http://marlinfw.org/docs/gcode/G026.html

Escribo emocionado por la limpieza del código que realiza esta maravilla, permitiendo matrices de hasta 15 x15 por aquello de la memoria de los microcontroladores de 8 bits, pero que en sistemas de 32 bits, con más memoria de base se podrá llevar más allá aún. Pero sobre todo, por la cantidad de opciones que han dejado abiertas.

Configuré la primera hace un par de días, y después de probar con profundidad las diferentes opciones, incluido el estudio del código (Roxy-3D tiene un nuevo admirador por la calidad de su trabajo), en lo que va de tarde ya lo he metido en mis impresoras, y (por bocazas) ya tengo a dos amigos con la suya en la mesa del taller para "UBL-arlas" antes del fin de semana.

Una de las cosas que más me ha gustado es la implementación de distintos perfiles de nivelado, para la cama y el hotend a distintas temperaturas, pero sobre todo que lo próximo que voy a hacer es "guardar en un armario" los sensores capacitivos, bltouch y demás... se acabó perder espacio de impresión por necesitar el sensor montado y calibrar con frecuencia. Viendo como funciona el UBL me paso a los sistemas sobre el hotend, o resonantes y a disfrutar de todo el espacio de impresión... pero vamos... que no antes de limpiar el patio, o recoger el garaje! (es decir en los próximos meses Gran sonrisa )  

Los que tengáis una cama de 200x200 o una delta de 200 no os lo deberías pensar, y desde luego cuanto más grande el área de impresión... más útil el invento este.

Y no doy mas la tabarra que me pongo muy pesado.
Citar
#2
muy interesante, me quedo por aquí siguiendo los avances
saludos
Citar
#3
gracias por el comentario..!!
me quedo por aquí, a ver si lo investigo un poco...

un saludo
Citar
#4
Cómo haces para saber cómo está la cama con el nozzle, con el encoder del LCD? A ver si puedes subir un vídeo de cómo haces el calibrado, me interesa el sistema, también lo estuve viendo y al final puse solo el manual leveling, también me pille una sonda de presión de las que tienen un offset de 0.5 que se ponen en la punta del nozzle.
Citar
#5
Buenas @JuanKa
Preguntas ¿Como está la cama con el Nozzle.?
Imagino que te refieres a como corriges el desfase del eje Z entre el nozzle y el sensor que uses para nivelar, si es eso te lo resumo:

Lo primero es que tengas un firmware 1.1.4 o superior. Te recomiendo el último a fecha de hoy 1.1.7 ó 1.1.8, después añadir o modificar lo siguiente:

Habilitar en Configuration.h:
  • AUTO_BED_LEVELING_UBL. Acuérdate de dejar los otros comentados.
  • G26_MESH_VALIDATION para habilitar la utilidad de impresión de prueba G26.
  • EEPROM_SETTINGS. Se requiere soporte de EEPROM.
  • Alguna de las opciones de LCD. Se recomienda encarecidamente una pantalla LCD con un botón giratorio.
Los desplazamientos X Probe XY deben ajustarse a 1 mm de la distancia medido desde la boquilla a la sonda. Idealmente, el error debería ser inferior a + -2 mm. Se sabe que los errores de 5 mm causan dificultades en el ajuste fino.
Los límites de viaje y el tamaño de la cama le indican al sistema dónde puede llegar la boquilla. Esto se usa durante el sondeo automático para determinar qué puntos puede alcanzar la SONDA.


// The size of the print bed
#define X_BED_SIZE xxx
#define Y_BED_SIZE xxx

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS xxx
#define Y_MIN_POS xxx
#define Z_MIN_POS xxx
#define X_MAX_POS xxx
#define Y_MAX_POS xxx
#define Z_MAX_POS xxx




El tamaño de la malla y densidad definen los límites predeterminados de la malla UBL, la región de la cama a la que pueden llegar las boquillas y la densidad de la malla. Estas configuraciones se pueden encontrar también en Configuration.h.
Idealmente, los límites de malla coincidirán perfectamente con su área imprimible. En la práctica, es una buena idea recortarlos un poco con MESH_INSET si el área imprimible va hasta el borde de la cama. Esto ayuda a evitar que la sonda pierda la cama.
Se admiten mallas de 3 x 3 a 15 x 15. Las dimensiones X e Y NO necesitan ser iguales. Los usuarios nuevos deben comenzar con una malla pequeña hasta que estén familiarizados con las herramientas. Una vez que seas hábil, pasa a mallas más grandes. 7 x 7 parece ser un tamaño popular para un primer intento en una malla final. Este valor es que el recomiendo empezar con un 3

#define UBL_MESH_INSET 10         // Mesh inset margin on print area
#define GRID_MAX_POINTS_X 3       // Don't use more than 15 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X



Los ajustes automáticos de límites de malla asumen que el área imprimible está centrada en el área de la cama física. Si tu configuración es diferente, puede que necesites modificar la configuración min / max, que se encuentra en Configuration_adv.h, para adaptarse a tu situación. Sin embargo, ten en cuenta que (a diferencia de la nivelación bilineal) las posiciones MESH_MIN y MESH_MAX hacen referencia a dónde puede llegar la boquilla, no a la sonda:

#define UBL_MESH_MIN_X UBL_MESH_INSET
#define UBL_MESH_MAX_X (X_BED_SIZE - (UBL_MESH_INSET))
#define UBL_MESH_MIN_Y UBL_MESH_INSET
#define UBL_MESH_MAX_Y (Y_BED_SIZE - (UBL_MESH_INSET))


Para las impresoras delta, la situación es similar. Es necesario tener puntos de cuadrícula definidos que se puedan llenar cubriendo la totalidad de DELTA_PRINTABLE_RADIUS, pero también debería haber un "borde" de puntos de malla válidos que se encuentran justo fuera del radio imprimible. Esto asegura que cada celda de la cuadrícula dentro del radio imprimible tendrá definidas las cuatro esquinas.

Por lo tanto, sin importar el tamaño de la cama y el radio imprimible, asegúrate de que tu rejilla de malla esté definida de forma tal que un círculo completo de puntos de malla 'adicionales' quede fuera del radio imprimible.

Si planea usar la prueba de 3 puntos (G29 J) para "retocar" la orientación de una malla guardada, también deberá asegurarse de que la sonda pueda acceder a los puntos de la sonda de nivelación de 3 puntos.

#define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
#define UBL_PROBE_PT_1_Y 180
#define UBL_PROBE_PT_2_X 39
#define UBL_PROBE_PT_2_Y 20
#define UBL_PROBE_PT_3_X 180
#define UBL_PROBE_PT_3_Y 20


Una vez subido el firmware actualizado, escribimos desde la línea del terminal:

M851               Ves el desfase actual y lo apuntas, por si acaso te hace falta luego
M851 Z0           Pones a cero el desfase
G0 Z0               Te vas a la posición cero según el sistema. Si tienes dudas de que pueda estar demasiado baja, empieza por G0 Z1, o algo más alto en el eje Z.
M211 S0           Desactivas el "seguro" para que puedas bajar del cero y usar coordenadas negativas.

Ahora o bien desde el LCD vas bajando de 0,1 en 0,1 o....

G0 Z-0,1
G0 Z-0,2

y así hasta que tengas la distancia en la que le papel roce y no entre una tarjeta de cartón.

En ese momento

M211 S1             Activamos el seguro por software
M500
M501
M503

Y ya tienes el offset puesto.

Respecto a como nivelar luego con UBL... ya metidos en harina te lo pego también:

M502
M500
M501
M190 S105            Calientas cama y nozzle para que las dilataciones sean lo mas similares a la realidad
M104 S230            Pues eso que calientas el nozzle y la cama, a la temperatura que tu acostumbres para trabajar
G28                         Ir al inicio de los tres ejes (IMPRESCINDIBLE EN UBL ANTES DEL SIGUIENTE COMANDO)
G29 P1                  Primer paso del calibrado con G29, realizará una lectura de n x n puntos sobre el recuadro que tengas definido en el firmware. siendo "n" el número de puntos que tengas definido en el mismo firmware. El número por defecto son 10 puntos (es decir 10x 10 = 100), empieza poniendo 3 para ajustar físicamente la cama hasta tener unos valores razonables entre las esquinas. Yo, si este primer paso me da unos valores muy dispares entre las cuatro esquinas, ajusto físicamente los mismos, hasta que los valores me gustan. No hay que hacer trabajar al micro por no haber trabajado nosotros: D
G29 P3 T               Por resumir: Tienes que repetir este paso hasta que veas una matriz completa de puntos pantalla.
G29 T                     Visualizas el estado actual
G29 S1                   Grabas la matriz en la posición 1 para matrices (permite varias para, por ejemplo, varias configuraciones de temperatura que se pueden recuperar con G29 L1, G29 L2, etc...)
G29 F 10.0              Establecemos la altura de "desvanecimiento" en 10 mm
G29 A                     Activa el nivelado UBL
M500                      Lo graba

G26 B105 H230 F1.75 L0.2 S0.4 Dibuja un patrón de prueba donde B: temperatura de la cama, H: temperatura del hotend, F: diámetro del filamento, L: Altura de capa y S: diámetro del nozzle. Estos datos pueden estar predefinidos en el firmware.

G29 P4 T                   Completas a mano los puntos que falten. (no es habitual, y si te pasa, vuelve a nivelar la cama un poco mejor, que es una solución mejor)
G29 S1                      Grabamos de nuevo ahora ya con las correcciones realizadas en el paso anterior.


El G29 P2, normalmente no es necesario. Y si necesitas el G29 G4, tienes que entender con un poco más de detalle del que pretende este resumen, como se gestiona y nombre la matriz, por eso recomiendo que vuelvas al principio y mejores le nivelado físico de la cama.

El comando G29 J se usa para ajustes rápidos posteriores, si por ejemplo mueves la maquina o le cambias alguna pieza. Este comando realiza un ajuste sobre tres puntos y orienta la maya sobre este nuevo ajuste.


Tienes que acordarte de añadir en tus G-codes los siguientes comandos:
G28                 Origen en los tres ejes
G29 A              Activar nivelado UBL
Citar
#6
Hola,
una duda rapida. Yo tengo en Marlin el UBL activado y lo he realizado en manual con la matriz de 9 puntos (el mismo que hablas tu,no?)
Es necesario añadir el G29 al coding de cura luego?? O el G29 A para que rescate los valores de la EEPROM?? O lo hace automaticamente?

No quiero tener quenivelar en cada impresión, lo que quiero es estar seguro de que lo carga siempre de memoria, o no hace falta añadir nada?
Citar
#7
Debes añadir
G28
y después
G29 A
Para que recupere la última "malla" almacenada por
G29 S1

Con UBL no tienes que volver ha hacer un nivelado si no cambias la "geografía" de tu impresora.

Suerte
Citar
#8
(04-02-2018, 11:27 PM)pfvidal escribió: Debes añadir
G28
y después
G29 A
Para que recupere la última "malla" almacenada por
G29 S1

Con UBL no tienes que volver ha hacer un nivelado si no cambias la "geografía" de tu impresora.

Suerte

Gracias! Ultima dudilla, el G29 S1 es igual que el guardado en eeprom desde el lcd??
Citar
#9
Respondiendo a la pregunta de G29 S1... 
Si, pero no. 
En UBL al guardar la malla con G29 Sn, puedes indicar en que "slot" (ranura) de las disponibles guardas la malla. Y tener una malla para ABS, otra para PLA, o Flex,  etc... mallas que después puedes recuperar con G29 Ln.
¿Aclarado?
Citar
#10
Muy buenas noches,

Hace tiempo que me interese por el UBL pero hasta ahora no he podido ponerme a implementarlo.

Tengo el marlin 1.1.8 y he configurado los paremetros de UBL en Configuration.h.
Como sensor de autolevel tengo un BL Touch y tengo configurado en Configuration.h Z_CLEARANCE_BETWEEN_PROBES 2
Tengo LCD

El problema que tengo es cuando quiero editar un punto de la malla (siempre hablo de realizar las acciones desde el LCD, no por comandos). Cuando voy a editar un punto la Z se queda a la distancia definida en Z_CLEARANCE_BETWEEN_PROBES mas (o menos) el offset que se ha calculado al crear la malla.

He visto que si uso el comando G29 P4 H0 entonces el problema esta solucionado y puedo editar bien la malla. Hay algo que debo estar haciendo mal, porque el valor de Z_CLEARANCE_BETWEEN_PROBES no creo que tenga que ponerlo a 0 (que lo he intentado y entonces cuando hace la segunda prueba de altura me da error)

Sigo investigando, pero si alguien puede echarme una manita, se lo agradezco mucho Gran sonrisa!

Un saludo y buen finde larog a todos
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [DUDA]No levantar servo entre punto y punto en el auto bed leveling. vanguille 2 719 08-02-2016, 01:36 PM
Último mensaje: ebludt