Bed leveling with 2 independent Z motors



  • As already discussed on Github: https://github.com/dc42/RepRapFirmware/issues/133

    I'm running DuetWifi with FW 1.19.2 and a CoreXY setup.
    I want to do bed leveling with G32 with two independent Z motors, and two leadscrews on the center-left & center-right of my bed.
    I followed this guide: Wiki: https://duet3d.com/wiki/Bed_levelling_using_multiple_independent_Z_motors

    My config:

    [[language]]
    M584 X0 Y1 Z2:4                                 ; Drive mapping: 0=A, 1=B, 2 and 4 are individual Z steppers
    M671 X-52:296 Y142:142 S15                      ; Define positions of Z leadscrews
    M667 S1
    
    

    My bed.g:

    [[language]]
    M561                        ; clear any existing bed transform
    G28                         ; home
    G30 P0 X10 Y142 Z-99999
    G30 P1 X230 Y142 Z-99999 S2
    G28 Z
    
    ```This gives me: `Error: probe points P0 to P1 must be in clockwise order starting near X=0 Y=0`. I suppose there is some math trickery involved, so I change Y to be 1mm more:
    
    

    [[language]]
    M561 ; clear any existing bed transform
    G28 ; home
    G30 P0 X10 Y142 Z-99999
    G30 P1 X230 Y143 Z-99999 S2
    G28 Z

    Ok, now I get this error: `Bed calibration error: 2 points provided but only 3, 4 and 5 supported`
    Which is weird, because why would I want to probe 3 points on my 2-leadscrew setup?
    As far as I can tell, there is no code for a 2-point calibration: [https://github.com/dc42/RepRapFirmware/blob/cfbe3562cc52de52bed88f7360f36b64a8049571/src/Movement/BedProbing/RandomProbePointSet.cpp#L89](https://github.com/dc42/RepRapFirmware/blob/cfbe3562cc52de52bed88f7360f36b64a8049571/src/Movement/BedProbing/RandomProbePointSet.cpp#L89)
    
    Just for the sake of completeness, I added a third point (back-center). Now I finally get a bed map and some offset information. But still no auto-correction.
    
    I think I want to somehow trigger this ([https://github.com/dc42/RepRapFirmware/blob/8dda9ff9fa096a9093d0c85c276c43f140267e0f/src/Movement/Move.cpp#L846](https://github.com/dc42/RepRapFirmware/blob/8dda9ff9fa096a9093d0c85c276c43f140267e0f/src/Movement/Move.cpp#L846)), but fail for unknown reasons.
    
    Thanks for the help!

  • administrators

    I got that error when M671 was not set correctly in my config. You can enter M671 in the console to check that it is set correctly. That was on a cartesian not on a CoreXY though.


  • administrators

    The M671 command needs to come after the M667 command. I'll add this to the documentation.



  • Thanks! That did the trick!
    Now my bed is leveling correctly.

    P.S.:
    It would be nice if such G-code inter-dependencies would raise an error or something to make users aware of potential problems.


 

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