• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

Using bed leveling screws with independent z motors

Scheduled Pinned Locked Moved
General Discussion
9
30
2.0k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    Piet
    last edited by 18 Nov 2020, 08:36

    Hi everyone,

    The printer im building has 3 independently driven Z leadscrews and 3 bed leveling screws. Now i want to probe at the 3 leveling screws and then manually adjust it so the bed is parallel to the printframe. At that point i would like to do the automatic bed leveling for the fine tuning.

    However i used the tutorial on the manual leveling but because there are 3 Z-motors defined it wont show how much i have to adjust the screws but it will just do the changes automatically. Does anyone have a workaround for this issue?

    This is my manual leveling macro:

    M561
    M671 X195:400:605 Y120:380:120 P1 ; Change to the bed leveling screws positioning
    G30 P0 X195 Y120 Z-99999 ; probe near an adjusting screw
    G30 P1 X400 Y380 Z-99999 ; probe near an adjusting screw
    G30 P2 X605 Y120 Z-99999 S3 ; probe near an adjusting screw and report adjustments needed

    M671 X51.3:400:748.7 Y75:448.7:75 ; change back to the leadscrew positioning

    Thanks in advance,
    Greetings, Piet.

    ? undefined undefined 3 Replies Last reply 18 Nov 2020, 14:08 Reply Quote 0
    • ?
      A Former User @Piet
      last edited by A Former User 18 Nov 2020, 14:08

      @Piet

      Hi,
      since I only know printers with screws (but someday maybe can try individual/independent-z-motor-levelling) my answer might be only of limited help:

      As far as I understand from my own questions about this (see e.g. here https://forum.duet3d.com/topic/19574/manual-bed-levelling-assistant/7) I understand it that way that if you have BOTH, screws & I-Z-M, you might only need the screws for the 1st time when you build the actual machine, or in service case.

      After that you fix them, and from there on the motors do the small precisionwork... otherwise I think, there is a chance you might create a human/machine endless-loop where it is not clear who/which is in charge of what exactly...

      If you really need the manual step for whatever reason (would be great to know why you need it?) you might just code something like this yourself and save it as a macro (Attention this is for RRF>=3.x):

      ;Manually coded manual bed levelling via screws:
      ;heat at this point tool & bed maybe to have realistic thermal expansion of all parts:
      ;... ;extruder
      ;... ;heat-plate
      ;... ;chamber
      ; Conditional g-code needs RRF>=3.x ! OTHERWISE COMMENT OUT!
      ; If the printer hasn't been homed, home it
      if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
      ; tell user that printer homes and have the user ok/cancel it:
      M291 R"Homing all axis in order x, y & z" P"Confirm to proceed..." S3
      G28
      M291 R"Approaching 1st screw: front left" P"Confirm to proceed..." S3
      ;lift head:
      ;M98 P"z-do-lift.g" ; check for correct directory, default folder is /sys on sd-card
      G1 Z{move.axes[2].min+5} F500 ; separate plate & extruder
      ;goto position:
      G1 X{move.axes[0].min+10} Y{move.axes[1].min+10} F1000 ; position above screw
      M291 R"Move plate away with screw under extruder" P"Confirm to proceed..." S3
      ;lower head again
      G1 Z{move.axes[2].min} F500 ; bringtogether plate & extruder
      M291 R"Move plate to extruder to 0 distance" P"Confirm to proceed..." S3
      M291 R"Approaching 2nd screw: front right" P"Confirm to proceed..." S3
      ;lift head:
      ;M98 P"z-do-lift.g" ; check for correct directory, default folder is /sys on sd-card
      G1 Z{move.axes[2].min+5} F500 ; separate plate & extruder
      ;goto position:
      G1 X{move.axes[0].max-10} Y{move.axes[1].min+10} F1000 ; position above screw
      M291 R"Move plate away with screw under extruder" P"Confirm to proceed..." S3
      ;lower head again
      G1 Z{move.axes[2].min} F500 ; bringtogether plate & extruder
      M291 R"Move plate to extruder to 0 distance" P"Confirm to proceed..." S3
      M291 R"Approaching 3rd screw: back right" P"Confirm to proceed..." S3
      ;lift head:
      ;M98 P"z-do-lift.g" ; check for correct directory, default folder is /sys on sd-card
      G1 Z{move.axes[2].min+5} F500 ; separate plate & extruder
      ;goto position:
      G1 X{move.axes[0].max-10} Y{move.axes[1].max-10} F1000 ; position above screw
      M291 R"Move plate away with screw under extruder" P"Confirm to proceed..." S3
      ;lower head again
      G1 Z{move.axes[2].min} F500 ; bringtogether plate & extruder
      M291 R"Move plate to extruder to 0 distance" P"Confirm to proceed..." S3
      M291 R"Approaching 4th screw: back left" P"Confirm to proceed..." S3
      ;lift head:
      ;M98 P"z-do-lift.g" ; check for correct directory, default folder is /sys on sd-card
      G1 Z{move.axes[2].min+5} F500 ; separate plate & extruder
      ;goto position:
      G1 X{move.axes[0].min+10} Y{move.axes[1].max-10} F1000 ; position above screw
      M291 R"Move plate away with screw under extruder" P"Confirm to proceed..." S3
      ;lower head again
      G1 Z{move.axes[2].min} F500 ; bringtogether plate & extruder
      M291 R"Move plate to extruder to 0 distance" P"Confirm to proceed..." S3
      G1 Z{move.axes[2].min+5} F500 ; separate plate & extruder
      ;G1 X{move.axes[0].min+10} Y{move.axes[1].min+10} F1000 ; position above screw
      M291 R"Finished" P"Re-start macro if you want another pass" S1

      ... hope I could help a bit, but maybe someone with your setup might be better for help...

      1 Reply Last reply Reply Quote 1
      • undefined
        ofliduet
        last edited by 18 Nov 2020, 14:20

        On my printer (3 leads screws, 4 bed screws) the bed.g looks like this and performs an automatic level:

        M561 ; clear any bed transform
        ; If the printer hasn't been homed, home it
        [more code ...]
        ; Probe the bed and do auto calibration
        M558 H10 ; higher dive hight for yet to be levelled bed
        G30 P0 X{move.axes[0].max/2} Y{move.axes[1].max+sensors.probes[0].offsets[1]} Z-99999
        G30 P1 X{move.axes[0].max-10} Y10 Z-99999
        G30 P2 X10 Y10 Z-99999 S-1
        M558 H3 ; back to speed

        while this is my "bed_level.g" macro for tuning the bed level screws:

        ; Check bed level
        ; Probe the bed
        M558 H10
        G30 P0 X{move.axes[0].max} Y{move.axes[1].min} ; probe near an adjusting screw
        G30 P1 X{move.axes[0].min} Y{move.axes[1].min}
        G30 P2 X{move.axes[0].min} Y{move.axes[1].max}
        G30 P3 X{move.axes[0].max} Y{move.axes[1].max} S-1 ; probe near an adjusting screw and report adjustments needed
        M558 H3
        echo "Deviation:", move.calibration.initial.deviation ^ "mm"

        As you can see the commands are the same really, so I must assume the difference is that one is called from a G32 command, vs the other is a standalone macro without any special meaning.

        undefined 1 Reply Last reply 18 Nov 2020, 15:23 Reply Quote 1
        • undefined
          jay_s_uk
          last edited by 18 Nov 2020, 14:47

          Why do you want to do it manually and then get RRF to do the fine adjustments?
          Adding an S value increases the amount the levelling with compensate for.
          So for example, the default S value for M671 is 1mm. If the amount to be compensated is larger than this, nothing happens. Increase it to 10 and if your bed is 10mm out, it will compensate for that.

          Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

          ? undefined 2 Replies Last reply 18 Nov 2020, 14:57 Reply Quote 0
          • ?
            A Former User @jay_s_uk
            last edited by 18 Nov 2020, 14:57

            @jay_s_uk

            Great explanation: This should explicitly be added for the "newer " levelling routines and the reason and behaviour for the S-parameter should be explained here I guess:
            https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant

            1 Reply Last reply Reply Quote 0
            • undefined
              fcwilt @Piet
              last edited by 18 Nov 2020, 15:03

              @Piet said in Using bed leveling screws with independent z motors:

              Hi everyone,

              The printer im building has 3 independently driven Z leadscrews and 3 bed leveling screws. Now i want to probe at the 3 leveling screws and then manually adjust it so the bed is parallel to the printframe. At that point i would like to do the automatic bed leveling for the fine tuning.

              There is no real need to have the ability to both manual level and auto level.

              Replace the leveling screws with something fixed and then rely on auto level.

              Frederick

              Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

              ? undefined 2 Replies Last reply 18 Nov 2020, 15:07 Reply Quote 0
              • ?
                A Former User @fcwilt
                last edited by 18 Nov 2020, 15:07

                @fcwilt

                Hey folks - thanks for helping me back then here https://forum.duet3d.com/topic/19574/manual-bed-levelling-assistant - I think there is a real need to add all this information here:
                https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant
                Can I do that or do you wanna help me or how is this working with the duet-wiki?

                undefined 1 Reply Last reply 18 Nov 2020, 15:17 Reply Quote 0
                • undefined
                  fcwilt @A Former User
                  last edited by 18 Nov 2020, 15:17

                  @LB said in Using bed leveling screws with independent z motors:

                  @fcwilt

                  Hey folks - thanks for helping me back then here https://forum.duet3d.com/topic/19574/manual-bed-levelling-assistant - I think there is a real need to add all this information here:
                  https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant
                  Can I do that or do you wanna help me or how is this working with the duet-wiki?

                  I would think that all documentation about MBC, MBLA and ABL should start with an overview to put all the parts into the correct relation.

                  So no matter which one you search on you are first presented with the overview.

                  I have seen a good deal of confusion with folks mixing the concepts and the terms.

                  Frederick

                  Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                  1 Reply Last reply Reply Quote 0
                  • undefined
                    Piet @jay_s_uk
                    last edited by 18 Nov 2020, 15:19

                    @jay_s_uk As im using ballscrews i want minimal adjustment on the ballscrews themselves as they, and all the parts for mounting them, are precision machined. Therefore i want the first setup to be able to level the bed as close as possible to parallel. Im not having them correct for a 10mm difference obviously?

                    1 Reply Last reply Reply Quote 0
                    • undefined
                      Piet @fcwilt
                      last edited by 18 Nov 2020, 15:22

                      @fcwilt Can you explain to me why there is no need for both? I agree with you that the manual leveling should be a one time thing and im planning on exactly that. However this is not a consumer machine (more of these will be made). So i want it integrated.

                      undefined 1 Reply Last reply 18 Nov 2020, 16:08 Reply Quote 0
                      • undefined
                        Piet @ofliduet
                        last edited by 18 Nov 2020, 15:23

                        @ofliduet It works because you have 4 screws and 3 spindles. It apparently doesnt with 3 screws and 3 spindles unfortunately.

                        undefined 1 Reply Last reply 18 Nov 2020, 16:07 Reply Quote 0
                        • undefined
                          ofliduet @Piet
                          last edited by ofliduet 18 Nov 2020, 16:07

                          @Piet Right. I'm not a big fan of leaving bed edges unsupported with only 3 mounting points. You might be able to tell my bed isn't that stiff. I therefore actually have 2 screws and 2 fixed points. The two screws are there so I can adjust twist in the bed. One might be theoretically enough, but two allows me to make opposing adjustments that don't move the probe point in the middle near the lead screw. Probing all 4 in the script gives me the output I need to even everything out.

                          All this gives us a workaround for your original question: Probe an additional dummy point in your manual test and you get the output you need for your one-off calibration.

                          ? 1 Reply Last reply 18 Nov 2020, 22:39 Reply Quote 0
                          • undefined
                            fcwilt @Piet
                            last edited by 18 Nov 2020, 16:08

                            @Piet said in Using bed leveling screws with independent z motors:

                            @fcwilt Can you explain to me why there is no need for both? I agree with you that the manual leveling should be a one time thing and im planning on exactly that. However this is not a consumer machine (more of these will be made). So i want it integrated.

                            Because having adjustment screws for the Manual Bed Leveling Assistant (MBLA) and having multiple Z steppers for Auto Bed Leveling (ABL) are two different solutions to the same problem - leveling the bed.

                            The firmware probes the bed in the same matter - the only difference is MBLA outputs instructions on how to turn the adjustment screws while ABL issues commands to the steppers to move as needed to level the bed.

                            Frederick

                            Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                            undefined 1 Reply Last reply 18 Nov 2020, 22:28 Reply Quote 1
                            • undefined
                              Piet @fcwilt
                              last edited by 18 Nov 2020, 22:28

                              @fcwilt I understand the functions of either but don't you agree that manually adjusting the bed to be parallel to the print frame initially is a better way to go. For example in an extreme case where one point of the bed is 10mm off. If I were to level that initially using the ABL it would torque the entire Z-axis assembly and would put a lot of strain and resistance on the leadscrews. Now if initially the entire bed was parallel using the manual adjustment and the ABL can be called every now and then or before every print for that matter, wouldn't you think that's the better solution.

                              I do understand for small adjustments this is obsolete but like I said this is for a production machine and for our assembly people and customers, who frankly most of the time aren't as technical as any of us on this forum, it would be a useful feature to fall back on because its so easy to understand.

                              undefined 1 Reply Last reply 18 Nov 2020, 23:40 Reply Quote 0
                              • undefined
                                jay_s_uk
                                last edited by 18 Nov 2020, 22:33

                                I think you're thinking too much into it.
                                Whether the levelling is manual or automatic, the whole bed still has to move up and down to trigger the probe at each point. Then all that's left is for the one screw that's out to be adjusted and whether you are turning it, or the motor is turning it, o don't see the difference.

                                Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

                                undefined 1 Reply Last reply 18 Nov 2020, 22:36 Reply Quote 0
                                • undefined
                                  Piet @jay_s_uk
                                  last edited by 18 Nov 2020, 22:36

                                  @jay_s_uk Maybe you're right however I think its an interesting discussion. I'll draw a schematic tomorrow which will hopefully show my point more clearer. I appreciate the help nonetheless!

                                  1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User @ofliduet
                                    last edited by A Former User 18 Nov 2020, 22:39

                                    @ofliduet said in Using bed leveling screws with independent z motors:

                                    @Piet Right. I'm not a big fan of leaving bed edges unsupported with only 3 mounting points. You might be able to tell my bed isn't that stiff. I therefore actually have 2 screws and 2 fixed points. The two screws are there so I can adjust twist in the bed. One might be theoretically enough, but two allows me to make opposing adjustments that don't move the probe point in the middle near the lead screw. Probing all 4 in the script gives me the output I need to even everything out."

                                    That is the only real use-case to have both: Have the screws to "undistord" a non-planar plate you begin with (so you activly overconstrain it by purpose to make "a banana" to a "flat-toast"/"pizza". And then when that thing is flat like a pizza (or so, of which MBL can take care) you auto-level-home from there on with your I-Z-M.

                                    Did I get your intention right? If yes, an interesting survival-point for analog hand-dialed screws just came up here 🙂 But then I would not use them vertical but rather pull diagonal horizontal the whole metal-plate flat by pulling... just thinking for myself...

                                    1 Reply Last reply Reply Quote 0
                                    • undefined
                                      Gerrard
                                      last edited by 18 Nov 2020, 23:25

                                      Hi All,

                                      I've skimmed over this topic a little, but having just figured out this problem I thought I would add my 2c.

                                      I have a very large bed - roughly 800x800, with 16 manual adjustment screws (4x4 arrangement), and 4 independent Z motors.

                                      In my case, I have (at some point) needed to manually level both the lead screws, and the manual adjustment screw - I have also used G32 and G29 bed levelling.

                                      I partially agree that there is a hierarchy to bed levelling, which needs to be done after assembly, maintenance or a component failure (like a loose screw on a Z motor coupling for example?). With so many components there's plenty of opportunity for something to go wrong, so the correct procedure helps.

                                      I manually adjust the Z screws with the hot end close to the screws first - this gets the nozzle within a reasonable range for G32 to work its magic. Then I run G29 to do a mesh bed levelling - now that all 4 motors are coplanar this gives me a good idea on the flatness of the bed. If the min/max deviation of the mesh bed levelling is less than 1mm (an arbitrary number I've decided to use), then I'll leave it be - otherwise, I'll adjust the manual levelling screws...

                                      A more thorough method would be to look for a deviation greater than Xmm (some number) between any two neighboring points in the mesh bed levelling, but for now I'm satisfied with maximum deviation...

                                      On smaller printers like your typical 300x300 size, then I think a similar approach is easy enough to do, so it doesn't really matter whether it's necessary - do what ever you feel works best for you.

                                      undefined 1 Reply Last reply 19 Nov 2020, 08:32 Reply Quote 1
                                      • undefined
                                        fcwilt @Piet
                                        last edited by 18 Nov 2020, 23:40

                                        @Piet said in Using bed leveling screws with independent z motors:

                                        @fcwilt I understand the functions of either but don't you agree that manually adjusting the bed to be parallel to the print frame initially is a better way to go.

                                        By "print frame" do you mean something that surrounds and supports the bed?

                                        If so, yes, it is best to have the bed properly aligned to that frame but the solution is to design it such that it does not need manual adjustment.

                                        If you mean something else by "print frame" please explain.

                                        Thanks.

                                        Frederick

                                        Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                                        1 Reply Last reply Reply Quote 0
                                        • undefined
                                          engikeneer @Piet
                                          last edited by 18 Nov 2020, 23:49

                                          @Piet said in Using bed leveling screws with independent z motors:

                                          For example in an extreme case where one point of the bed is 10mm off. If I were to level that initially using the ABL it would torque the entire Z-axis assembly and would put a lot of strain and resistance on the leadscrews.

                                          Whether you're using manual levelling assistant or auto bed levelling, the process is taking the measurements from probing the bed surface.

                                          I think your concern is that the bed is not level with the z-gantry (e.g. because one of the manual adjustment screws is way off). So you want to get the bed close to level to the z-gantry (and so level with the lead screws) so that they aren't kinked over later. The trouble is the Duet has no idea where the lead screws are as it is still only probing the bed surface. Only exception/caveat is if you are using independent endstops on them as well (and somehow worked out the offset for them all).

                                          One option could be to remove the bed and try probing the z-gantry to get that near level (so the leadscrew are all level) using auto bed levelling. Then put the bed back on and use the manual assistant to get the manual screw right, then use auto levelling again to actually get it all tuned in fine (assuming you didn't with manual). Might work, but probably will end in tears trying to probe aluminium extrusions....

                                          Alternatively, just try making sure your bed is level to your z-gantry when building the printer. Simplest way is to use fixed spacers (i.e. no manual adjustment). Or just a spirit level/your eyes? The lead screws should take a little misalignment. Unless you have a massive bed, if you build your printer 10mm out and don't see it, you're probably gonna have a bunch of other problems in there too...

                                          E3D TC with D3Mini and Toolboards.
                                          Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
                                          i3 clone with a bunch of mods

                                          undefined 1 Reply Last reply 19 Nov 2020, 08:38 Reply Quote 2
                                          5 out of 30
                                          • First post
                                            5/30
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA