Nivelación Gantry (Z-TILT)

Viene siendo muy común que nuestras impresoras tengan dos o más motores en el eje Z dependiendo del tipo de máquina.

El disponer de varios motores en el eje Z nos permite, y dependiendo del tipo de máquina:

  • poder sustentar un eje X más pesado, sobre todo cuando usamos extrusión directa en máquinas cartesianas, sin que este “caiga” normalmente en el lado donde no disponga de un punto de anclaje a la cinemática

  • poder sustentar una cama más pesada en el caso, normalmente, de máquinas CoreXY

  • si disponemos de drivers independientes nos permiten alinear de forma automática nuestro eje X o cama dependiendo de nuestro tipo de máquina.

En que consiste el Z-TILT en Klipper

Z-TILT básicamente es un proceso que nos ayuda a alinear nuestros motores de Z con respecto a nuestro eje/gantry X (cartesiana) o XY (CoreXY). Con esto aseguramos que tenemos siempre alineado nuestro Z perfectamente y de forma precisa y automática.

Al usar un sensor de nivelación, aparte de precisión, vamos a poder aprovechar este para el nivelado manual de nuestra cama, el ajuste de nuestro gantry/eje y el mallado de nuestra cama… con lo que tenemos casi automatizado completamente la nivelación de nuestra máquina.

Para ello, Klipper cuenta con las macros:

  • Z_TILT_ADJUST, para máquinas que tengan 2 o 3 motores en el eje Z

  • QUAD_GANTRY_LEVEL, en el caso de que dispongamos de 4 motores en Z

Requerimientos aconsejables para disponer de Z-TILT:

  • obviamente, tener dos o más motores en nuestro eje Z

  • que cada uno de estos motores se encuentre conectado a un driver independiente, esto nos va a permitir que Klipper pueda corregir de forma independiente sus alturas

  • un sensor de nivelación, es el método más sencillo y fiable para realizar estas alineaciones

Configuración:

Configurar nuestro Klipper para Z-TILT es muy sencillo y básicamente tendremos que configurar una nueva sección [z_tilt], o [quad_gantry_level] dependiendo de nuestra máquina, en nuestros ficheros de configuración.

Tal como hemos comentado para que funcione Z-TILT requerimos que nuestros motores en Z estén en drivers separados. Para ello como requerimiento previo estos han de estar definidos correctamente en nuestro fichero de configuración, ejemplo de configuración en una máquina con 3 motores en Z (en la que solamente hacemos referencia a las secciones necesarias):

  • definición de drivers por eje:

[tmc2209 stepper_z]
... # your configuration
[tmc2209 stepper_z1]
... # your configuration 
[tmc2209 stepper_z2]
... # your configuration
  • definición de ejes Z

[stepper_z] 
... # your configuration
[stepper_z1] 
... # your configuration
[stepper_z2] 
... # your configuration

[z-tilt]

En el siguiente ejemplo vemos una sección [z-tilt] para un triple Z

# 3DWORK Z-TILT https://klipper.3dwork.io/klipper/empezamos/nivelacion-gantry-z-tilt
[z_tilt]
z_positions:
	0,0
	150,300
	300,0

points:
	60,60
	185,270
	260,60
		
speed: 50
horizontal_move_z: 12
retries: 10
retry_tolerance: 0.0125

Valores importantes de nuestra sección [z-tilt]:

  • z_positions, indicarán las coordenadas donde se encuentran nuestros puntos de unión entre el eje Z y nuestra cama. Las coordenadas XY son con respecto a nuestro nozzle.

Es muy importante el orden de estos puntos ya que hacen referencia a la asignación de cada stepper siendo... stepper_z para la primera coordenada, stepper_z1 para la segunda coordenada, stepper_z2 para la tercera coordenada, etc... En el siguiente ejemplo podéis ver visualmente para un Z-TILT de dos puntos:

  • points, al igual que los valores anteriores, estos hacen referencia a las coordenadas XY con respecto a nuestro nozzle de nuevo, que el comando Z_TILT_ADJUST/QUAD_GANTRY_LEVEL usará para los sondeos/medidas.

Nos aseguraremos que las coordenadas tienen en cuenta los offsets de nuestro sensor y este queda lo más cercano al punto de unión del eje Z con nuestra cama en cada caso.

  • speed, será la velocidad en mm/s de los movimientos de nuestros ejes durante la calibración... si no se especifica utilizará 50 mm/s

  • horizontal_move_z, la distancia que Z subirá al realizar el traslado entre puntos… por defecto 5 mm aunque podemos ajustarla en caso necesario a nuestras necesidades

  • retries, ajustaremos el número de reintentos que queremos hacer durante el proceso en el caso de que los ajustes no cumplan con la tolerancia definida

  • retry_tolerance, en el caso de que ajustemos retries a un número mayor a 0 este será el valor de tolerancia para dar por bueno el ajuste de un eje.

Tolerancia Z-Tilt:

En ocasiones podemos ver configuraciones de toleranca entre puntos muy pequeñas algo que puede ocasionar ciertos problemas y normalmente no llegan a transformarse en una gran ventaja en la calidad final de nuestras impresiones.

Teniendo en cuenta que 1 step = 0.0125, para un desarrollo de motor y cinemática media de una impresora 3D, podriamos decir que un valor de tolerancia de 0.0125 a 0.03 sería aceptable y está en cada uno bajarlo o subirlo más.

[quad_gantry_level]

En este caso disponemos de algunos cambios en los valores a definir:

  • gantry_corners, en lugar de z_positions, en este caso en lugar de definir todos los puntos como se hacía en el caso anterior tan solo definiremos la esquina inicial (Z) y la opuesta (Z2)

  • max_adjust, esta propiedad es exclusiva de quad_gantry_level, es un límite de seguridad que si el ajuste es mayor que este valor el proceso se abortará

Proceso de alineado Z-TILT

Con todo esto configurado pasaremos a tener una nueva macro de sistema llamada Z_TILT_ADJUST (o QUAD_GANTRY_LEVEL dependiendo de nuestra configuración).

  • Home de nuestra impresora con un G28 o desde los controles de nuestra UI

  • Es aconsejable realizar un precalentado de nuestra cama y hotend. En el caso de la cama a la temperatura normal de impresión y para el hotend podemos usar una temperatura de entre 140-170º

Suele ser aconsejable realizar un test de precisión de nuestro sensor con PROBE_ACCURACY, nos fijaremos que la desviación de las lecturas no sea de más de 0.003mm. De ser más altas de ese valor esperaremos unos minutos para repetir el test hasta que estemos dentro de rango.

  • Lanzaremos el comando Z_TILT_ADJUST o QUAD_GANTRY_LEVEL que realizará el proceso de sondeo y ajuste necesario

  • Podemos incorporar Z_TILT_ADJUST o QUAD_GANTRY_LEVEL a nuestra rutina de inicio de impresión para asegurar siempre un perfecto alineado, idealmente incluyendo este entre el precalentado/homing y el mallado de cama en el caso de que lo hagamos

En el caso de ser nuestra primer alineado usando Z-TILT, o en caso de ajuste de algún componente de nuestra cinemática, es aconsejable:

  • realizar el proceso de nivelación de cama manual con ayuda de nuestro sensor explicado aquí.

  • volveremos a realizar el proceso de Z-TILT

  • realizaremos estos dos pasos en bucle hasta que apenas sean necesarios ajustes dando por buena la alineación de cama y gantry

Cuando es aconsejable realizar el Z-TILT?

  • si hemos realizado algún ajuste manual en nuestro sistema en la cinemática, en especial si hemos manipulado alguna parte del eje Z

  • si hemos variado la nivelación manual de nuestra cama

A tener en cuenta en caso de máquinas con cerramiento calefactado:

  • realizaremos primero un home de nuestra impresora con G28 o desde los controles de nuestra UI

  • Nos aseguraremos que nuestro cerramiento esté estable a la temperatura objetivo y el hotend a la temperatura normal de impresión.

  • Realizaremos un test de precisión de nuestro sensor con PROBE_ACCURACY, nos fijaremos que la desviación de las lecturas no sea de más de 0.003mm. De ser más altas de ese valor esperaremos unos minutos para repetir el test hasta que estemos dentro de rango.

  • Una vez las lecturas del sensor sean estable lanzaremos el comando Z_TILT_ADJUST o QUAD_GANTRY_LEVEL normalmente

En el caso que tengamos problemas con el proceso:

  • revisaremos nuestra cinemática para asegurarnos que no tengamos un problema en ella

  • realizaremos un FIRMWARE_RESTART y realizaremos un nivelado manual de nuestra cama

Última actualización