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

    Trying to Understand and use M585

    Scheduled Pinned Locked Moved
    General Discussion
    4
    8
    1.3k
    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.
    • jstevewhiteundefined
      jstevewhite
      last edited by

      Background:

      3d Printer (Railcore 2 250 ZL, duet and duex5). Firmware 2.02 (release)

      Prior to M585, G10 L1 P0 reports offsets all zeroes.

      Macro:

      M574 Z0 S1
      G90
      G1 Z15 F300
      G1 X8 Y84 F1200
      M585 Z11.15 E2 L0 F60 S1

      Switch is connected to ZMin; triggers appropriately as reported by M119. The macro aligns the nozzle with the switch and probes to it. It stops on switch trigger. The switch triggers at 3.85mm above 0 on the bed, and we want to set the tool offset for this nozzle such that the nozzle tip will be at ~0 if we command a G0 Z0 for Tool 0 (in this case).

      Running this macro results in:

      G10 L1 P0
      Tool 0 offsets: X0.00 Y0.00 Z22.29, active/standby temperature(s): 0.0/0.0

      So I think, maybe it wants the actual trigger height, and try it with:

      M585 Z3.85 E2 L0 F60 S1

      Which results in:

      G10 L1 P0
      Tool 0 offsets: X0.00 Y0.00 Z14.99, active/standby temperature(s): 0.0/0.0

      So I really want the M585 to set this tool's Z offset such that it will be at 0 when we command T0; G0 Z0.

      What is it that I'm failing to understand here? I'm fairly certain I can make it work with a single tool by homing Z to this switch and setting the offset to 3.85, but that won't help with multiple tools (which is the problem we want to solve - i.e., offsets for T0 and T1 and T2 😄 )

      Thanks!

      jstevewhite

      jstevewhiteundefined 1 Reply Last reply Reply Quote 0
      • jstevewhiteundefined
        jstevewhite @jstevewhite
        last edited by

        Ok. A little more information - this appears to do what I want it to do now:

        M574 Z0 S1
        G90
        G1 Z15 F300
        G1 X8 Y84 F1200
        M585 Z-11.05 E2 L0 F60 S1

        So the trick is to take the trigger heigh (4.95, in this case), subtract it from the travel distance (15mm; that's where we start the M585 from). Then we put it in the Z parameter, negative: Z-11.05. This produces a tool offset of ~0.0 (sometimes 0.01, sometimes -0.01), which is what I would expect as Z was set with an offset for this tool in the Z probe for Z homing. Adjusting the nozzle so the height changes alters the tool offset predictably.

        Next test will be to take out the Z value in the probe setting - or set it to 0 - and see if it gives me the same value for the offset I have now (1.92mm).

        Thanks!

        jstevewhite

        jstevewhiteundefined 1 Reply Last reply Reply Quote 0
        • jstevewhiteundefined
          jstevewhite @jstevewhite
          last edited by

          One last update:

          So I set my bed probe Z offset to 0 (BLtouch). I then homed Z, and ran the "tool offset" macro, and it assigned a very similar number to the tool offset ( I had 2.05 in my Z probe offset, and the tool offset macro set it to 2.04 ). Then I commanded G0 Z0 and it behaved correctly.

          So I believe if I add M501 to my config, run the tool offset, issue M500, I should be good to go. Then when I change nozzles or hot ends, I can run the tool offset macro and M500; no more paper tests for offset config >:)

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

            I'm glad you got it working. Chrishamm is the person who implemented and used M585, so he knows more about it than I do and may have some observations.

            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 1
            • wilrikerundefined
              wilriker
              last edited by

              I was following this thread out of curiosity and one observation I have is that the documentation seems to be backward. Based on the documentation I also would have guessed to have a positive Z value as @jstevewhite tried first. But it turned out a negative value had to be used. So @chrishamm, does the documentation need to be fixed there? Or is the implementation wrong?

              Manuel
              Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
              with probably always latest firmware/DWC (incl. betas or self-compiled)
              My Tool Collection

              chrishammundefined 1 Reply Last reply Reply Quote 0
              • chrishammundefined
                chrishamm administrators @wilriker
                last edited by chrishamm

                @wilriker The documentation says:

                The values of the XYZ parameters are the absolute distances between the position at which the endstop is actually triggered and your own start position. It is mandatory to measure this distance once before M585 can be used reliably.

                So say the endstop is triggered at X=20 and you started probing at X=10, the X parameter would be -10. Is this not the case?

                I think we could change the behaviour of M585 with another parameter to specify the expected trigger position instead of the expected deviation/offset (there's another post about this topic here on the forum) but I am still wondering which parameter would be suitable for this. Also, I don't have access to a tool probe any more so it would be rather difficult for me to test any changes. I implemented and tested M585 in July when I had access to a more sophisticated machine.

                Duet software engineer

                wilrikerundefined 1 Reply Last reply Reply Quote 0
                • wilrikerundefined
                  wilriker @chrishamm
                  last edited by

                  @chrishamm said in Trying to Understand and use M585:

                  So say the endstop is triggered at X=20 and you started probing at X=10, the X parameter would be -10. Is this not the case?

                  As I said I was just following this thread out of curiosity. As far as I understood @jstevewhite's setup the starting point was at Z=15 and the trigger point was at Z=3.85 (absolute values above Z=0). This would mean he needs a Z parameter of 11.15 as he originally tried. But in the end it turned out that he needs to set Z-11.15 so the negative value.

                  Now it might be that I did not understand something here correctly as I don't have a tool probe nor do I even have a changeable tool in the first place. Just what I got from following and reading on the M585 documentation.

                  Manuel
                  Duet 3 6HC (v0.6) with RPi 4B on a custom Cartesian
                  with probably always latest firmware/DWC (incl. betas or self-compiled)
                  My Tool Collection

                  jstevewhiteundefined 1 Reply Last reply Reply Quote 0
                  • jstevewhiteundefined
                    jstevewhite @wilriker
                    last edited by

                    I have since gotten the system working (mostly) properly. Here's my macro (note I changed switches, so trigger height changed to 2.92):

                    ;; NB Your G31 must be set to 0 G31 X0 Y30 Z0 P1
                    ;; M585 needs 15 (because that's where we start ) - trigger height of switch
                    ;; so mine is 15-2.92 -12.08
                    ;;G1 X0 Y82.1 moves my nozzle over the switch. YMMV. 😄

                    M574 Z0 S0 ; set up the Z min endstop
                    G10 L1 P0 Z0 ; remove any existing offset
                    G28 Z ; home Z
                    T0 ; select tool
                    G90
                    G1 Z15 F300 ; go to 15mm
                    G1 X0 Y82.1 F3200 ; move to switch
                    M585 Z-12.08 E2 L0 F60 S1 ; probe
                    G1 Z15 F600; move back off the switch

                    I've tested this ... many 🙂 ... times and it produces the behavior I expected; that is, it sets the tool offset such that when I G0 Z0, the nozzle is at the bed. I can swap hot ends or nozzles, run the tool offset macro, M500, and start printing. I'm starting at 15 and moving towards 0. It's not intuitive which sign should be the right one, in either sense, though I think the way it's implemented makes sense to folks who've grown up using CNC mills.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post
                    Unless otherwise noted, all forum content is licensed under CC-BY-SA