jueves, 23 de septiembre de 2021

Usando 2 ejes Z para compensar Duet Wifi, RepRap Firmware 3

Una breve introducción

Como sabrán, hace tiempo que estoy buscando tener listo los 3 ejes z para mi BLV MGN. Una de mis tareas previas implicó amigarme con el RepRap Firmware 3 y migrar toda la configuración. La tarea no es fácil, tuve 3 upgrades de Firmware de la DuetWIFI, y tuve que actualizar todos los archivos de configuración. El principal problema, está asociado a no tener un z-probe muy confiable, es por eso, que finalmente luego de mucho complicarme con el IR-Probe de Duet clon, he decidido ir por un probe mucho más confiable, que el BLTouch Oficial. Una vez resuelto esto, y sus offsets, ya estamos listos para el primer gran paso. <Poner el 2do eje Z compensando la altura>

El 2do eje Z, se instaló teniendo en cuenta esta guía <https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors> de reprap firmware, generada por DC42 y es importante tener algunas consideraciones: 

  • No es necesario para 2 Z, contar con la DuetX.
  • La configuración de Z1, y de Z2 debe darse en 2 diferentes drivers. En mi caso utilicé Z, y E1 (E0 es el principal extruder, E1 el segundo, en mi configuración, no utilizado)
  • Es necesario realizar algunos ajustes en config.g, y en bed.g
  • Se puede utilizar a futuro, un adicional endstop, independiente por eje Z. 
  • Es una linda entrada en calor, para la configuración final de 3Z.
Esto no fué realizado antes, dado que era necesario migrar a RRF 3 antes de comenzar, y fué uno de los tantos preparativos en mi flightcheck, siendo mi única impresora operativa en este momento, no quería arruinarlo.

Entonces, los pasos que llevé adelante fueron: 

(1) Entender la dimensión exacta de cada tornillo de bolas. 
En mi caso particular fueron: Z:(x,y) -> Z1:(-62,160) || Z2:(358,160), el valor de Y siendo el mismo, no afecta realmente a la cinemática.

(2) Mover la conexión fisica 1 de los motores Z, al E1. 
Este es un paso bastante tramposo, porque en particular, la duet requiere 2 jumpers, en el segundo pin, si solo está siendo usado por 1 motor. (siguiendo el circuito de las bobinas H1,H2) como en esta foto. (este punto me lo había olvidado)
(3) Generar 2 cambios en <config.g> y en <bed.g> para construir un eje "virtual" que lo mueven 2 motores para el caso del eje Z, y declarar en la posición que se encuentran definida en (1).

<config.g>

...M569 P4 S0 ; physical drive 4 goes backwards
; Dual Z Drivers, Compensation mode
M584 X0 Y1 Z2:4 E3 ; Two Z motors connected to driver outputs Z and E1
M671 X-62:358 Y0:0 S9 ; leadscrews at Left (connected to Z) and right (connected to E1) of X axis

...

En mi caso, M569 fué necesario, dado que no había declarado el motor E1, ni su sentido de giro, era una inconsistencia que tuve que agregar luego. Y más tarde, el <bed.g>

<bed.g>

M561 ; clear any bed transform

G28 ; home
M401 ; deploy Z probe (omit if using bltouch)
G30 P0 X30 Y160 Z-99999 ; probe near a leadscrew, half way along Y axis
G30 P1 X250 Y160 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
M402 ; retract probe (omit if using bltouch)

Vualá! luego de avanzar con un G32 para hacer las pruebas definitivas, nada mas fué necesario... quedó de maravillas. 

NOTA: en el comando M671, el parámetro S por defecto es 1, es decir, "autoajusta" diferencias menores a 1mm, en mi caso, la diferencia era mayor a 3mm (medida desde los ejes de bolas recirculantes, no desde la cama) entonces, tuve que modificar el parámetro a S9 (9mm) como un valor dummy.

Les dejo todo registrado en mi repositorio, y por más aventuras!

No hay comentarios:

Publicar un comentario

Vidrio como tooling plate

Superficie de impresión. Siempre elegir la superficie de impresión, es difícil. Hay 2 o 3 temas muy complejos que considerar y tener en cuen...