Need help understand dual Z auto bed compensation



  • I've built a 300x300x400 hyper cube evo and i'm just working out my first print kinks and i'm struggly to understand how the auto bed compensation works with my dual Z.

    Settings:

    ; Drives
    M569 P1 S0 ; Drive 0 goes backwards
    M569 P1 S0 ; Drive 1 goes backwards
    M569 P2 S1 ; Drive 2 goes backwards
    M569 P3 S0 ; Drive 3 goes backwards
    M569 P4 S1 ; Drive 4 goes backwards
    M584 X0 Y1 Z2:4 E3 ; Drive 0 controls X, Drive 1 controls Y, Drive 2:4 controls Z, Drive 3 controls E
    ; Motor order: Left (1), Right (2)
    M671 X-35:335 Y150:150 S3 ; Location of the Lead Screws

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X285 Y295 Z390 S0 ; Set axis maxima

    ; Endstops
    M574 X1 S1 ; Set active High endstops (S1=SENSORED) (X-MIN(1)) (S3=SENSORLESS)
    M574 Y1 S3 F0 R0 ; Set active High endstops (S1=SENSORED) (Y-MIN(1)) (S3=SENSORLESS)
    M574 Y1 S3 ; Set endstops controlled by motor load detection
    M574 Z1 S2 ; Use zprobe and home to min
    M915 X Y S7 R0 F0 ; set X and Y to sensitivity 7, do nothing when stall, unfiltered

    ; Z-Probe
    M574 Z1 S2 ; Set endstops controlled by probe
    M307 H3 A-1 C-1 D-1 ; Disable heater on PWM channel for BLTouch
    M558 P9 H5 F120 T6000 ; Set Z probe type to bltouch and the dive height + speeds
    G31 P25 X-24 Y-19 Z0.22 ; Set Z probe trigger value, offset and trigger height
    M557 X25:270 Y25:290 S20 ; Define mesh grid

    My bed.g

    M561 ; clear any bed transform, otherwise homing may be at the wrong height
    G31 X0 Y0 ; don't want any probe offset for this
    G28 ; home the printer

    ;*** Remove the following line if your Z probe does not need to be deployed
    M98 Pdeployprobe.g ; deploy the mechanical Z probe

    G30 P0 X35.0 Y150.0 Z-99999 ; probe near a leadscrew
    G30 P1 X270.0 Y150.0 Z-99999 S2 ; probe near a leadscrew

    ;*** Remove the following line if your Z probe does not need to be retracted
    M98 Pretractprobe.g ; retract the mechanical Z probe

    When i run the bed level, i get different results no matter how many times I run it and when i see it run, it seems backwards from what i have setup - is that how it actually works?

    Going to post a onedrive video with the video of this:

    https://1drv.ms/v/s!Am5Hp5N4mwbxpYE846t30O5FthISgQ



  • First run of bed gave this:
    Leadscrew adjustments made: 2.098 -1.566, points used 2, deviation before 1.188 after 0.000

    Then 2nd run gave this:

    Leadscrew adjustments made: 2.141 -1.603, points used 2, deviation before 1.213 after 0.000



  • 0_1556674134771_Annotation 2019-04-30 202821.png

    That is what i get after running the auto bed compensation and then running a run mesh grid compensation



  • is the X/Y/Z arrows 0,0 or is that at the full 300/300 corner? not sure what the perspective of the image is 🙂



  • @supernovae said in Need help understand dual Z auto bed compensation:

    G31 X0 Y0 ; don't want any probe offset for this

    Why don't you want probe offsets for this? X0 Y0 would be your nozzle. The BlTouch is not your nozzle. You need to tell the system where the probe is in relation to the nozzle. Hence the offset.

    Your video shows you probing no where close to your leadscrews. You want to probe with the BLtouch as close as possible. If it's really out of level you may need to rerun it a few times until the adjustments made barely change anymore. Then you'll probably want to rehome Z once with the probe in the center of the bed to re-establish your Z0 point. Then run mesh grid compensation.





  • @phaedrux

    That G31 was in the file I used to start with, i didn't put that mention in there 🙂

    So it should probe near the lead screws - i'm not sure why its probing the exact opposite.

    I did a manual bed level and managed to get a test cube done to confirm some setup. Maybe after some sleep the setup for this dual z level will click - i obviously have something backwards since it is doing the probe like its rotated 90 degrees on wrong x/y



  • The arrows on the mesh compensation image indicate 0,0 and that should be the front left of the bed in order for the coordinates to make sense.

    Are you sure you have your motors turning the right way?



  • I can home to 0,0 and it does what I expect. I have homing set to the front left and the motors go there when i Home all. Using the head movement functions I see correct movements when i advance X/Y/Z



  • It was a mirrored configuration... once i printed my test cube i saw it was mirrored... did the cable swap/flip a zillion times until i got it working again. 0,0 homes correctly, xyz move and now my dual z is near the lead screws. I think i just needed to sleep on it 😄 thanks for the help!!



  • Glad you got it sorted out.

    The coreXY setup guide describes a motor test you can do to ensure things are moving correctly. Also, as you realized, just because it homes to the right place doesn't mean it's not mirrored, since you're able to correct for the mixup by specifying the direction of homing in your files.

    https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Movement_section

    For a CoreXY or H-Bot machine, RepRapFirmware assumes that the motor connected to the X motor output moves the head in the +X and +Y directions when it runs forwards, and that the Y motor moves the head in +X and -Y directions when it runs forwards. [Note: firmware 1.18 and earlier assumes that the motor connected to the Y motor output moves the head in the -X and +Y directions when it runs forwards]. So you can start with these M569 commands in config.g:

    M569 P0 S0 ; X motor runs forwards
    M569 P1 S0 ; Y motor runs forwards
    Then test for the correct X motor movement by sending these commands from the console:

    G91
    G1 S2 X10 F3000
    If the head moves diagonally in the +X and +Y directions, all is well. If it moves in the -X and -Y directions, change the S parameter to S1 in the M569 P0 command. If it moves towards +X and -Y, or towards -X and +Y, turn the power off and swap the X and Y motor connections.

    When you have the X motor moving correctly, test the Y motor by sending from the console:

    G91
    G1 S2 Y10 F3000
    For firmware 1.19 and later: If the head moves diagonally in the +X and -Y directions, all is well. If it moves in the -X and +Y directions, change the S parameter in the M569 P1 command to S1.

    For firmware 1.18 and earlier: If the head moves diagonally in the -X and +Y directions, all is well. If it moves in the +X and -Y directions, change the S parameter in the M569 P1 command to S1.

    Important: make sure that you have chosen a right-hand axis system. That is, looking down on the printer the +Y direction should be 90 degrees anticlockwise from the +X direction. If instead it is 90 degrees clockwise, you have a left-hand axis system, which will give you mirror-image prints.


 

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