Dual Z bed leveling using BLTouch



  • I'm in the process of building the BLV corexy printer and I'm looking to utilize the dual Z bed leveling as described in the Wiki https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_Example_for_2_motors

    I"m not very good with the gcode stuff and wanted to just verify some things and have a spot to ask questions as they arise.

    Looking at the wiki, am I correct that I won't have to un-hide the second motor that I will attach to the second extruder stepper driver? Is this handled automatically by the M671 command that gets put in the config.g file?

    What I would like to do is to set it up to do an initial home of x & y and z in the center of the bed using my BLTouch and then have it probe each side of the bed in line with the 2 leadscrews to align/sync the leadscrews.

    So in my config.g I would need something like this

    M584 X0 Y1 Z2:4 ; two Z motors connected to driver outputs Z and E1
    M671 X-40:340 Y150:150 S1.0 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
    M208 X-5:300 Y0:300 ; X carriage moves from -5 to 300, Y bed goes from 0 to 300

    What I don't understand is how to do the homing. The wiki says the calibration happens when G32 is performed but how is that called/commanded? Do I need to modify the homeall and homez files other than setting my coordinates for homing z to be in the middle of the bed?

    The wiki shows this needs to be put in bed.g (I will comment out the M401 and M402 lines since I'll be using a bltouch)

    G28 ; home
    M401 ; deploy Z probe (omit if using bltouch)
    G30 P0 X20 Y150 Z-99999 ; probe near a leadscrew, half way along Y axis
    G30 P1 X280 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
    M402 ; retract probe (omit if using bltouch)

    I appreciate any help with this. I'm just trying to get my files all set up so once I'm finished building the printer I'll be ready to go.



  • @jamesm said in Dual Z bed leveling using BLTouch:

    I'm in the process of building the BLV corexy printer and I'm looking to utilize the dual Z bed leveling as described in the Wiki https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_Example_for_2_motors

    I"m not very good with the gcode stuff and wanted to just verify some things and have a spot to ask questions as they arise.

    Looking at the wiki, am I correct that I won't have to un-hide the second motor that I will attach to the second extruder stepper driver? Is this handled automatically by the M671 command that gets put in the config.g file?

    yes as its not an additional axis.

    What I would like to do is to set it up to do an initial home of x & y and z in the center of the bed using my BLTouch and then have it probe each side of the bed in line with the 2 leadscrews to align/sync the leadscrews.

    for this add G32 to the end of homeall.g

    So in my config.g I would need something like this

    M584 X0 Y1 Z2:4 ; two Z motors connected to driver outputs Z and E1
    M671 X-40:340 Y150:150 S1.0 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
    M208 X-5:300 Y0:300 ; X carriage moves from -5 to 300, Y bed goes from 0 to 300

    M584 needs to define all motors. you forgot the e output. also see the notes in the documentation about the order.

    What I don't understand is how to do the homing. The wiki says the calibration happens when G32 is performed but how is that called/commanded? Do I need to modify the homeall and homez files other than setting my coordinates for homing z to be in the middle of the bed?

    see above.

    The wiki shows this needs to be put in bed.g (I will comment out the M401 and M402 lines since I'll be using a bltouch)

    G28 ; home
    M401 ; deploy Z probe (omit if using bltouch)
    G30 P0 X20 Y150 Z-99999 ; probe near a leadscrew, half way along Y axis
    G30 P1 X280 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
    M402 ; retract probe (omit if using bltouch)

    I appreciate any help with this. I'm just trying to get my files all set up so once I'm finished building the printer I'll be ready to go.



  • @veti

    Thank you very much for the input. I was just copying what was in the wiki and will put the E axis in the M584 as well.

    This build is being a real pain for me trying to get all the extrusions square and level. Realized last night when I went to mount the z-motor mounts that the extrusions on the bottom sides are not level so now I have to take a bunch back apart again. UGH!!!

    In the end I'm looking forward to having a nice corexy printer. My current printers are a fairly modified Ender 3 and a slightly modified Lulzbot Taz 6 both running Duet wifi boards.



  • if you have 2020 extrusions here is what i use.
    https://www.aliexpress.com/item/32848849259.html



  • @jamesm said in Dual Z bed leveling using BLTouch:

    the extrusions on the bottom sides are not level

    I shimmed the Z steppers mount to make sure the vertical lead screws are consistent with the travel of the bed carriage all the way up. You also want to have some free play in the lead screw mount such that you can adjust it a little before to tighten the screws.



  • @veti those won't work because there is a vertical 20-40 in line with the stepper that the linear rail fastens to. I'll just take my time to make sure everything is right. I don't want to cut any corners on this..trying my best..lol



  • Since I'm utilizing a second stepper driver for the second z leadscrew, do I need to add to my existing settings like motor currents, accelerations, instantaneous speed changes with a colon after the z-setting or since both motors are for the z-axis does the single setting stand?

    Below is what I was wondering if I had to do

    M92 X200.00 Y200.00 Z1600.00:1600.00 E846.00 ; Set steps per mm
    M566 X900.00 Y900.00 Z12.00:12.00 E1200.00 ; Set maximum instantaneous speed changes (mm/min
    M203 X10000.00 Y10000.00 Z180.00:180.00 E10000.00 ; Set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00:20.00 E1500.00 ; Set accelerations (mm/s^2)
    M906 X1600.00 Y1600.00 Z1600.00:1600.00 E960.00 I30 ; Set motor currents (mA) and motor idle factor in per cent



  • no the z settings will apply to all if your M584 is correct



  • @veti Thanks again.



  • I'm getting close to hooking up my Duet to my new printer and after thinking about this setup, can mesh bed leveling still be used when syncing up the dual z-leadscrews? The reason I ask is that the bed.g file has to be changed for the dual z sync and I would assume the G29 command has to be removed/commented out for the two G30 commands to be performed.

    I don't want to run mesh bed compensation every time I turn on the printer and for all I know I may not need to now that I have a MIC-6 bed but it will have a Wham Bam magnetic plate on it so I'm sure that won't be perfectly flat.

    This is what I "assume" my bed.g needs to be for the dual-z sync

    G28 ; home
    M561 ; clear any bed transform
    G30 P0 X20 Y170 Z-99999 ; probe near a leadscrew, half way along Y axis
    G30 P1 X300 Y170 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors



  • it depends.
    if your bed is perfectly flat then the G32 that does the z adjustment is fine.

    if its not perfectly flat then the G32 will move the bed in such a way as to minimize the deviation.
    the mesh bed levelling G29 will is still required to compensate for the flatness of the bed itself.



  • So do I have to leave the G29 in the bed.g file or can I just call it from DWC manually entering it on the top as long as I have the grid settings defined in my config.g file with the M557 define mesh grid?



  • i call G29 from the initial G Code for printing and do the G32 z adjustment manually from time to time.
    You could also do G32 and G29 in the initial printing g code if the extra time does not bother you.



  • Well I need to get that G32 out of the config.g file...I made a change to the config remotely while at work which rebooted the duet and there were prints on the bed from last night that finished after I left for work this morning. Now I can't re-connect to the printer and it must be hammering against the prints trying to re-home.

    Guess I'll put it at the end of the homeall file instead.



  • Hi James, have you managed to resolve this? I have just started looking into this feature of having an independent Z axis leveling, but also using the BLTouch.

    Miloš



  • @MilošS I have it working fine but I am not home to be able to post up config.g or bed.g. I'm now using a triple z setup on my corexy printer for the bed.



  • @MilošS

    Here is my config.g file

    config.g

    And here is my bed.g file

    bed.g

    Every once in a while I equalize the leadscrews just by a quick macro I created which only has a G32 command in it but my bed really doesn't move when I turn the printer off so I only do it if I move the printer.


Log in to reply