Duet3 + 3HC: G30 works, but G30 S-1 does not?



  • I'm excited to be commissioning a ~CoreXYU + 3x Z-axis for bed leveling. I was hoping to run the 3x Z-axis steppers from the 3HC expansion board, but can't quite get things to work right. G30 functions as expected--the probe lowers to the print bed, triggers the z-probe, stops, sets zero and raises .

    However, when I probe the bed with G30 S-1, the probe will again stop the movement, but the z coordinate gets adjusted to some negative value (dive height - zprobe height?), and this negative value is what is returned as the z-probe trigger height.
    (Obviously, G30 S-1 is not supposed to adjust the z coordinate. The real deal-breaker is that this same strange behavior occurs during bed probing for leveling / mesh compensation which causes the probe to raise higher and higher each progressive step until it raises outside of the dive height)

    I was testing primarily with a BL touch, but the same behavior occurs with a generic switch acting as a probe. Also, the same behavior occurs regardless of whether the z-probe is connected to the main duet3 board, expansion board or tool board.

    The Fix: G30 S-1 functions as expected and returns a valid probe height when I moved the 3x z-axis steppers to the main Duet3 board.
    This is leading me to think that bed-probing with the Z-axis being driven from any board other than the main board is not supported? Or is there some other bonehead configuration issue that I might have missed?


  • Moderator

    G30 S-1 is used to measure the trigger height of your probe.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_G30_Single_Z_Probe

    G30 S-1 ; Probe the bed at the current XY position. When the probe is triggered, do not adjust the Z coordinate, just report the machine height at which the probe was triggered.

    Used in procedures such as this to give you the distance from Z0 that the probe triggers for you to place in the G31 Z probe offset command. Don't look at the z coordinate, look at the echoed value in the gcode console.

    https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height



  • Thank you for the reply. Yes, I was trying to calibrate my trigger height when I encountered this issue. Starting with the nozzle accurately homed (manually), then raised above the print surface, G30 S-1 would a echo an invalid negative value. Also, the z-coordinate would be adjusted "out of home" which is contrary to the expected behavior that you quoted.

    M558 K0 P9 C"^20.io0.in" H5 F100 T8000                          
    G31 K0 X0 Y-45 Z2.7 P500
    

    I should mention that the invalid value is consistent based on the z-probe setup. For the above, G30 S-1 would echo exactly -2.30mm regardless of when the probe was triggered. Also, my previously homed z-coordinate was adjusted to be -2.30. A subsequent G1 Z0 command would move the Z to [actual trigger height]+2.3mm.

    Moving the 3x z-axis steppers back to the duet mainboard is the only thing that seems to resolve the issue. This is OK, but I'd really like to run the Z-axis from the expansion board for wire routing reasons.

    (I should mention that I'm running Duet3 with an SBC. Firmware version 3.1.1 on the main board. 3.1.0 for the 3HC and 1LC boards)


  • Moderator

    Thanks for the clarification and firmware version. I'm not sure if this is currently an expected firmware limitation for expansion boards, but it may very well be. @dc42 will have to confirm.



  • @taegge said in Duet3 + 3HC: G30 works, but G30 S-1 does not?:

    .................................... This is leading me to think that bed-probing with the Z-axis being driven from any board other than the main board is not supported? Or is there some other bonehead configuration issue that I might have missed?

    Depends on the probe type - currently only types 8 and 9 Z probes connected to expansion or tool boards are supported.

    https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations



  • @deckingman Thanks for the suggestion. My primary configuration is a bltouch (type 9 ) connected to the toolboard, which as you mention should be supported. For my sanity, I tried the bltouch (type 9) and a mechanical switch (type 5 and type 8 ) from the main board; there was no change in behavior.

    This is leading me to think that the probe is working just fine and that there is some limitation with regards to having the z-axis being driven by an expansion board. I'm slowly working through the firmware source to see if I can find a smoking gun.

    (I'm happy to report that with the 3x z-steppers being driven from the main board, bed leveling is performing beautifully! For anyone on the fence, I highly recommend this quality-of-life improvement)



  • @taegge I'm fairly sure that the limitation for end stop switches on main board not controlling motors on expansion boards, also applies to probes as well as switches (although that isn't explicitly stated so I might be wrong).



  • @deckingman That is a good observation. For some reason I was thinking that limitation was resolved in 3.1.0/3.1.1.

    That still doesn't quite explain why I couldn't get the G30 S-1 command to return a valid height when the z-probe was connected to the expansion board, but it's good news that more change is coming in 3.2. Maybe that will resolve my issue.


Log in to reply