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

    Best way to implement bed level adjustment/nozzle offset?

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    3
    8
    1.5k
    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.
    • Adam_Sundefined
      Adam_S
      last edited by

      There are several of us working on building a new-design CoreXY printer, the Voron 2. It makes use of a totally stationary bed, and moving gantry.

      In operation, it has an inductive probe for probing the bed itself, and a mechanical switch to calculate nozzle offset. Once bed probing is completed, it uses it's Z motors to adjust the gantry to bring it level. You can see how this is done using a RAMPS board in the following video.

      https://www.youtube.com/watch?v=wRdF0ZTIliY&t=30s

      (It's running the probe/gantry level sequence multiple times in this video)

      I've poked at this in RRF, and there hasn't been a good way I've determined as of yet. We can use the inductive probe for determining bed level, and homing, but that doesn't calculate nozzle offset.

      Is there something I'm missing here on how to implement this?

      1 Reply Last reply Reply Quote 0
      • whosrdaddyundefined
        whosrdaddy
        last edited by

        Looking good!

        Did you read this item in the wiki?
        https://www.duet3d.com/wiki/Bed_levelling_using_multiple_independent_Z_motors

        1 Reply Last reply Reply Quote 0
        • Adam_Sundefined
          Adam_S
          last edited by

          @whosrdaddy:

          Looking good!

          Did you read this item in the wiki?
          https://www.duet3d.com/wiki/Bed_levelling_using_multiple_independent_Z_motors

          I did, and the leveling aspect as described in the Wiki works perfectly. What I'm wanting to incorporate is the nozzle offset switch. This would allow for nozzle offset to be done automatically, no matter the temperature the nozzle is set at, or even if you swapped from a V6 to a Volcano…

          1 Reply Last reply Reply Quote 0
          • whosrdaddyundefined
            whosrdaddy
            last edited by

            Ah I see,
            I use a piezo sensor setup (under bed construction) so whatever nozzle/surface I use, the height is always correct.
            I used inductive probes on my P3Steel with marginal success, but since I went to piezo, I have perfect 1st layers.
            I will try to post a small video of the the printer in action…

            1 Reply Last reply Reply Quote 0
            • dc42undefined
              dc42 administrators
              last edited by

              Can you use the inductive sensor to level the bed using the Z motors, then use the switch to see an accurate Z=0 level? You can switch between different Z probes using M558.

              Duet WiFi hardware designer and firmware engineer
              Please do not ask me for Duet support via PM or email, use the forum
              http://www.escher3d.com, https://miscsolutions.wordpress.com

              1 Reply Last reply Reply Quote 0
              • Adam_Sundefined
                Adam_S
                last edited by

                @dc42:

                Can you use the inductive sensor to level the bed using the Z motors, then use the switch to see an accurate Z=0 level? You can switch between different Z probes using M558.

                That could be just the trick. Would it be able to be automated in the bed.g file, or would we really need to drive this via macro? I'm unsure how much shifting we can get away with in the ancillary files versus the config.g.

                What I'd envision is have the inductive probe declared in the config.g, and then the nozzle offset probe in the bed.g. When the bed compensation routine is run (thus invoking bed.g), it uses the declared inductive probe from config.g to probe the bed, and then level the gantry. Once this is done, while still in the bed.g, m558 is run to switch to the nozzle probe, trigger it, and set the nozzle offset.

                If this is possible, would you have a suggested layout for setting that up? If I'm going about it in my head incorrectly, would you mind setting me straight?

                1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators
                  last edited by

                  The only special thing about the bed.g file is that it gets run in response to the G32 command. Otherwise it's just like any other macro file. So you can do whatever you like in it.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  1 Reply Last reply Reply Quote 0
                  • Adam_Sundefined
                    Adam_S
                    last edited by

                    I just had another thought…

                    HomeAll.g stores the configuration for the inductive probe (as does config.g, just for safety sake). Homez.g stores the configuration for the nozzle offset switch.

                    Then, using bed.g

                    [[language]]
                    M561 ; clear any bed transform
                    ; Probe the bed at 4 points
                    G28
                    G30 P0 X10 Y10 H0.33 Z-99999
                    G30 P1 X10 Y290 H0.33 Z-99999
                    G30 P2 X290 Y290 H0.33 Z-99999
                    G30 P3 X290 Y10 H0.33 Z-99999 S4
                    
                    ; Nozzle offset home
                    G28 Z
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post
                    Unless otherwise noted, all forum content is licensed under CC-BY-SA