SOLVED Printer with Two Independent Z-Axes - How to synchronize?



  • I'm building a tool-changing printer with two independent z-axes (one for each tool).

    The Duet thinks there is only 1 z-axis at any given time, so I use M584 to switch stepper outputs during tool changes.

    (dc42 suggested this method here: https://forum.duet3d.com/topic/16609/multiple-z-axis-and-complex-tools-possible)

    Is there a way to get each Z axis to move in sync during a print?

    For example:

    Printer homes and both axes home to their endstops. T0 & T1 Z-height are both at 0

    T0 starts the print and completes Layer 1 & 2

    Tool-change to T1

    T1 Never moved from its homed position (Z=0) so it will crash into the print.

    Does anyone have insight to ensure that both T0 & T1 move upward as the print progresses?

    Ideally, each tool would move to some intermediate position defined in Tfree, and the return to the correct z-height for printing when it becomes active again.

    Thanks!

    In the photo, T0 is on the left, T1 is on the right.

    IMG_3654.JPG



  • @jpomo10

    One working solution is to home each linear actuator every time there is a tool-change.

    Doing it this way provides a reference point each time the tools switch.

    This works because the actuators home at the high-end of their travel instead of homing to the bed. They both use individual endstop switches wired in series and ultimately connected to the Z-endstop on the board.

    If the tools have very different 'Z' lengths, I think the G10 offset command can be used to compensate, but i'll have to test this.


  • administrators

    You will be able to do it using variables:

    • When Z-homing a tool or switching away from a tool in tfree, record its Z position in a variable
    • When selecting a tool in tpre, recall its Z position and set that using G92; then move to the user Z position plus a bit

    Until we have variables, I suggest you use the tool offset of a hidden axes to store the Z position. You will need to temporarily un-hide the axis when setting the offset (using G10) or retrieving it.



  • @dc42

    Thanks for the advice, I will give the offset method a try.


Log in to reply