Doble Z y autonivelado
Una gran mejora para una impresora 3D es la posibilidad de disponer de doble motor en el eje Z dando más consistencia a este eje ya que normalmente tiene que soportar el peso del cabezal de impresión
Última actualización
Una gran mejora para una impresora 3D es la posibilidad de disponer de doble motor en el eje Z dando más consistencia a este eje ya que normalmente tiene que soportar el peso del cabezal de impresión
Última actualización
Una gran mejora para una impresora 3D es la posibilidad de disponer de doble motor en el eje Z dando más consistencia a este eje ya que normalmente tiene que soportar el peso del cabezal de impresión o la cama en formato CoreXY.
Nos vamos a centrar solamente en la parte de configuración ya que la parte mecánica dependerá mucho del tipo y modelo de impresora.
Tenemos las siguientes opciones...
Esta opción es la normal y más adecuada en el 90% de los casos, para averiguar si estamos en ese 10% tendremos que ver el consumo A (amperios) de nuestros motores y la capacidad de nuestros drivers, en este aspecto no hace falta que el driver soporte la suma A de ambos motores pero si que al menos soporte ⅔ de esa suma. Para la conexión de ambos motores dependiendo de tu placa disponemos de dos opciones:
Placas SKR 1.4, SKR MINI v2, MINI E3 TURBO... como ejemplo.
Podemos optar por un módulo splitter existen serie y paralelo
En el caso que nuestros motores no sean soportados por un solo driver o que nos interese separarlos por disponer de otras funcionalidades para sincronización automática de nivelado en Z deberemos de usar un puerto de driver libre de nuestra placa para instalar el nuevo driver y configurarlo en Marlin.
Instalación del nuevo driver, para este ejemplo utilizaremos una SKR 1.4 y el módulo del driver E1.
Recordar que los jumpers y/o cualquier otra configuración de la placa para habilitar el driver correctamente se tiene que hacer de igual forma que el resto de drivers.
Recuerda que al usar doble Z en drivers independiente cada motor de Z ha de ir conectado a su correspondiente driver destinado a Z.
El primer motor Z, cartesiana el del lado izquierdo, ha de ir conectado normalmente en el zocalo de Z.
El segundo motor Z, cartesiana en el lado derecho, se ha de conectar en el zocalo del motor de ese driver (NO, en el caso que la placa disponga de ello, en el segundo zócalo de Z ya que este va sobre el mismo driver).
Habilitaremos en Marlin (configuration.h) un nuevo driver en Z2, en este caso como ejemplo un TMC2209 en modo UART.
Recuerda que en configuration_adv deberías de configurar del mismo modo que el eje Z original los valores de microsteps y vref (revisa el apartado de UART del documento para más detalle)
#define Z2_DRIVER_TYPE TMC2209
Al definir Z2 Marlin usará como Z2 el siguiente driver que no este en uso. En el ejemplo E1 ya que no tiene definida ninguna función directamente.
En el caso de tener una placa con tres extrusores (E0,E1 y E2) y tener definidos dos extrusores en Marlin (E0 y E1) se le asignará el rol de Z2 al siguiente driver libre, en este caso E2.
Habilitaremos también (configuration.h) el doble Z
#define Z_DUAL_STEPPER_DRIVERS
en el caso de versiones de Marlin 2.0.6.x o superiror en configuration_adv.h
#define NUM_Z_STEPPER_DRIVERS 2
En el caso de versiones de Marlin 2.1.x o superiores ya no es necesario realizar estos cambios ya que al activar los diferentes drivers en Z que hicimos en el paso anterior será suficiente.
Para versiones de Marlin <2.0.8 si los motores giran en direcciones contrarias girar el cableado para corregirlo.
Para versiones >= 2.0.8.x ya puedes cambiar el giro del motor desde configuration_adv.h en las siguientes lineas:
// Enable if Z motor direction signals are the opposite of Z1 //#define INVERT_Z2_VS_Z_DIR
//#define INVERT_Z3_VS_Z_DIR
//#define INVERT_Z4_VS_Z_DIR
Podemos realizar el autoalineado de dos formas:
En el caso que sea necesario habilitar doble final de carrera y en que endstop está ubicado
#define Z_DUAL_ENDSTOPS
#if ENABLED(Z_DUAL_ENDSTOPS)
#define Z2_USE_ENDSTOP _XMAX_
Para veriones 2.0.6.x o superiores:
#define Z_MULTI_ENDSTOPS
En este caso recordar que el final de carrera a utilizar se tiene que habilitar también.
Si realizamos el ajuste de doble Z con un ABL o sensor de nivelación, algo más que aconsejable, habilitaremos el comando G34 de la siguiente forma (recordar que previamente debemos tener configurado un probe y correctamente funcionando (revisar la parte de nivelación en este documento para más información y habilitado el driver):
El siguiente paso es para indicar en qué puntos se tomarán las medidas por parte del sensor para realizar la alineación. Podemos definir estos puntos de dos formas diferentes:
Automático, de esta forma Marlin calculará la posición de los puntos dependiendo del número de drivers en Z definidos y las posiciones que indiquemos en Z_STEPPERS_ORIENTATION siguiendo el siguiente esquema:
Para ello habilitaremos Z_STEPPERS_ORIENTATION y le asignaremos el número que coincida con la orientación de nuestros ejes Z:
El cálculo de coordenadas automático está disponible en versiones recientes de Marlin
El cálculo automático puede no siempre ser correcto ya que depende de otras configuraciones en Marlin relacionadas con los offsets del sensor, márgenes de mallado y offsets en el homing
Manual, en el caso que por fallo del método automático o por necesidades personales de nuestra máquina necesitemos definir los puntos de medida para el alineado habilitaremos y definiremos los puntos mediante Z_STEPPER_ALIGN_XY. Para el cálculo de puntos os hacemos las siguientes sugerencias/tips:
Para calcular coordenadas de medición en un doble Z tenemos dos opciones:
coordenada segura, son unas coordenadas que calcularemos en base al tamaño de nuestra cama. No es la forma más óptima pero si la más segura aunque es importante revisar que el valor de X de la primera coordenada no sea menor que el offset (entero) de nuestro sensor.
Primera coordenada usaremos el valor de 1/4 de X y 1/2 de Y
Segunda coordenada usaremos el valor de 3/4 de X y 1/2 de Y
coordenada ajustada a offsets del sensor de nivelación, es otra opción que permitirá un cálculo más ajustado (los siguientes ejemplos son para una cama de 220x220)
Primera coordenada
X
si nuestro offset de X del sensor de nivelación es positivo usaremos X5 dado que nuestro sensor no quedaría fuera de la cama podemos ajustar al mínimo con un margen de 5mm
si nuestro offset de X es negarivo usaremos ese valor y le sumaremos 5... por ejemplo un offset de X-50 usaremos X55 (50+5)
Y
si nuestro offset de Y es positivo usaremos la siguiente fórmula (Ymax/2)-Yoffset... para un caso que nuestro sensor tenga un offset en Y de 10... (220/2)-10=100... con lo cual usaremos Y100
si nuestro offset de Y es negativo la fórmula será (Ymax/2)+Yoffset... para un caso de Yoffset de -10... (220/2)+10=120.. con lo cual usaremos Y120
Segunda coordenada
X
Si nuestro offset de X es positivo usaremos la siguiente fórmula Xmax-Xoffset-5.. para el caso anterior de Xoffset -50... 220-50-5=165... usaremos X165
Si nuestro offset es negativo simplemente restaremos 5 al valor Xmax dado que nuestro sensor no tiene peligro de quedar fuera de la cama... 220-5=215... usaremos X215
Y usaremos el mismo cálculo que en el primer punto
Ejemplo para impresora 220x220, con offsets del sensor X50Y10 y en "coordenada ajustada a offsets del sensor de nivelación":
Ejemplo para impresora 220x220 y en "coordenada segura":
Por defecto Marlin incluye tres puntos de medida, depende del numero de motores estos puntos deben coincidir en número, 2 motores Z 2 puntos de control, 3 motores Z 3 puntos de control...
Número de repeticiones de test para un ajuste fino del offset.
#define Z_STEPPER_ALIGN_ITERATIONS 10
Habilitar el leveling después de un G34, tal como hacemos con un G28 con un nivelado de cama G29
#define RESTORE_LEVELING_AFTER_G34
verificar la correcta dirección de los motores en Z
verificar que los finales de carrera o probe funcionen correctamente M119
realizar un G34 desde un terminal para verificar que las posiciones de check y el proceso se hace correctamente