Independent Z moves



  • I have multiple Z drives, and want to use this to level the bed by testing each one in turn.

    I level the bed
    G30

    Then move to the corner supported by driver Z5 :

    G1 X25 Y25
    G1 Z1

    Isolate the driver:

    M584 Z5
    Then attempt to move the bed up until it triggers the probe:

    G1 S1 Z-25 f500

    That last step does not work as expected. It moves that one driver correctly, but does not stop when the Z-probe triggers but continues to grind the head into the bed.

    What am I doing wrong here? Do I need to somehow explicitly assign the standard Z probe to Z5 for it to trigger and stop the motor?



  • I suspect the issue centres around how you have setup your z-probe and if the duet is treating the z-probe as assigned to the merged drive one of the z-axis, or each of the independent z-axis.

    [Edit: clipped section, see next post!]

    Some months (could be a year or so) ago there was a feature request for allowing a merged z-axis to have a limit switch for each sub axis. That maybe worth hunting for.



  • Here we are - or at least one of the threads:

    https://forum.duet3d.com/topic/860/dual-z-axis-endstops/34

    Ok, didn't think it was nearly a year and a half ago! 😮


  • administrators



  • @dc42 Fair point. I was thinking of using (for a currently vapour build for a large bed printer) both limits at max z and probe levelling and got muddled. I'd use the limits for a rough level so I didn't drive the elebator up on a serious wonk before fine tuning with the probe.



  • @dc42 Several reasons.

    One, it does not appear to know which motor is associated with which point on the grid. Thus, it does not appear it would actually know which motor to engage to move a corner up and down so that it is level with the other three, it moves the whole plane to account for it. No different than bed mesh leveling

    UNLESS, it is required that each of the assigned motors be in the same clockwise orientation required by the probing...

    (Whoops. Here it is the process documentation. you linked. I will have to rewire the motors. Ah well. Unless when I define the motors I can put them out of order to match the wiring, like Z1:3:4:2 )

    You must use the M671 command to define the X and Y coordinates of the leadscrews. The M671 command must come after the M584 command and must specify the same number of X and Y coordinates as the number of motors assigned to the Z axis in the M584 command; and these coordinates must be in the same order as the driver numbers of the associated motors in the M584 command. The M671 command must also come after any M667 or M669 command.

    Although the second issue remains: it throws warnings that this method is replaced by the bed mesh leveling method.
    Will there be a bed mesh compatible version of the independent Z axisitalicised text



  • So I followed the link dc42 provided. Am I understanding that properly that I need the DueX 2 or 5 to run with dual Z endstops?


  • administrators

    @wmmc01 said in Independent Z moves:

    So I followed the link dc42 provided. Am I understanding that properly that I need the DueX 2 or 5 to run with dual Z endstops?

    If you have only 1 extruder then the Duet by itself provides the 5 stepper driver outputs that you need.


  • administrators

    @rgconner said in Independent Z moves:

    @dc42 Several reasons.

    One, it does not appear to know which motor is associated with which point on the grid.

    It sounds to me that you are confusing mesh bed compensation (G29) with true bed levelling using multiple motors (G32 + bed.g). Read the documentation. You can use mesh bed compensation after true bed levelling is you wish.



  • I don't think so.

    I am putting the commands in bed.g, then triggering it from the interface by hitting the "Auto Bed Compensation" button.

    Is this not correct?

    Do I have to explicitly call G32 from the command line?

    I am fine with that, but the documentation is fuzzy on this point, as I thought what the "Auto Bed Compensation" button did was call G32.



  • @dc42 I saw some other post that the plan was to incorporate dual z end stops into the FW, I think that was for 1.19. I found that capability VERY useful in Repetier. Has it been incorporated in 1.21 (I think that is the current version). If so I am not able to find it so please point me in the right direction. Thanks!


  • administrators

    @rgconner said in Independent Z moves:

    I am fine with that, but the documentation is fuzzy on this point, as I thought what the "Auto Bed Compensation" button did was call G32.

    That's correct, it does. We're likely to change that, because these days G32 is used for delta calibration and for adjusting levelling screws.

    For now, if you want to use that button, you can put a G29 S0 command and nothing else in your bed.g file. But before you do, take a look at https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant in case you want to use G32 for that instead.

    DWC has a drop-down next to the Auto Bed Compensation button that allows you to run mesh bed compensation.



  • @dc42

    One more silly question from the manual bed leveling assistant link: If you know how much the bed need move to balance out, why not just have the duet issue the commands to the independent steppers to move the bed so it is flat?

    My bed often gets out of alignment because of powered off sag. When powered down, the slightest bump or touch of the bed can overcome the friction holding the bed in place.



  • If you have independent Z motors, the Duet WILL make the necessary adjustments, and you don't use the manual assistant mode. This is what I use bed.g for.

    ;bed.g
    M561 ; clear any bed transform
    G30 P0 X35.0 Y137.5 H0 Z-99999
    G30 P1 X185.0 Y137.5 H0 Z-99999 S2
    

  • administrators

    @wmmc01 said in Independent Z moves:

    @dc42 I saw some other post that the plan was to incorporate dual z end stops into the FW, I think that was for 1.19. I found that capability VERY useful in Repetier. Has it been incorporated in 1.21 (I think that is the current version). If so I am not able to find it so please point me in the right direction. Thanks!

    Dual Z endstops have been possible with RRF for a long time, see https://duet3d.dozuki.com/Guide/Independent+Z+motors+and+endstop+switches/18?lang=en.

    @rgconner said in Independent Z moves:

    @dc42

    One more silly question from the manual bed leveling assistant link: If you know how much the bed need move to balance out, why not just have the duet issue the commands to the independent steppers to move the bed so it is flat?

    My bed often gets out of alignment because of powered off sag. When powered down, the slightest bump or touch of the bed can overcome the friction holding the bed in place.

    As @SupraGuy says. https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors



  • Happy New Year! OK, so good progress, I used the really good "Independent Z motors and Endstop Switches" Guide, so I have made the described edits, and connections to the board. I can move the dual Z steppers in absolute mode up and down smoothly. But they do not move if I press Home Z, or even enter G28 Z in the console. I get the response: "G0/G1 Insufficient Axis Homed". I know the end stop switches are working since I can see them "Hit" if I trigger them manually. When I home X and/or Y, once they trigger their homing switches, I get some motion from Z. What should I be checking? Thanks in advanced!



  • @wmmc01 are your X/Y axis homed when you press home z? normally X and Y should be homed before Z, because you probe the Z-axis at specific X Y coordinates.


  • administrators

    We'll need to see your homez.g file to point out the problem.



  • @dc42 I have used the dual Z guide to edit this file, so NEW indicates the NEW lines.
    ; homez.g
    ; called to home the Z axis
    ; NEW indicates lines that support dual Z end stops
    ; generated by RepRapFirmware Configuration Tool v2 on Tue Dec 18 2018 16:44:11 GMT-0500 (Eastern Standard Time)
    G91 ; relative positioning
    ; G1 Z5 F6000 S2 ; lift Z relative to current position Commented out for dual z edits
    G1 Z2 F6000 ; NEW Lift Z relatively to current position
    ; NEW split Z motor control to Z and U
    ; for it to work we have to show U (param P4) in the UI
    M584 Z2 U3 P4 ; NEW
    ; NEW Move Z and U down until the switches triggers
    G1 S1 Z-385 U-385 F1000 ;New edited to 385
    ; NEW back to combined axes and hidden U
    M584 Z2:3 P3 ; NEW
    ; NEW Back to absolute positioning
    G90 ;NEW
    ; G1 S1 Z-385 F1800 ; OLD move Z down until the endstop is triggered
    G92 Z0 ; set Z position to axis minimum (you may want to adjust this)

    ; Uncomment the following lines to lift Z after probing
    G91 ; relative positioning uncommented for NEW
    G1 S2 Z5 F100 ; lift Z relative to current position uncommented for NEW
    G90 ; absolute positioning uncommented for NEW




 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.