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

    [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh

    Scheduled Pinned Locked Moved Solved
    Tuning and tweaking
    mesh z-probe
    3
    16
    571
    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.
    • tcamguilundefined
      tcamguil
      last edited by tcamguil

      Hello,

      I am running an IDEX 3D-printer with a klicky as the Z-probe and two toolheads one on the XY axis and the other one on the UY axis.

      I have three issues :

      • The first one is that during the G29 calibration the machine will sometimes fail to detect the "status change" of the Z-probe and will go all the way down breaking the Z-probe before generating a "Error: G29: Probe was not triggered during probing move" message.
        I have tried increasing the Z lift to 0.5mm in between two probes without success. H2:0.25 => H2:0.5
        I also tried to increase the recovery time to 0.5s thinking the Z-probe "status" was not updated in time. R0.0 => R0.5

      • The second one is that the XY mesh calibration is only applied to the Left toolhead (the one connected to the X motor).
        Is there a way to apply it to the U axis without having to run the mesh calibration twice?

      • The third issue is that while the mesh calibration is almost running as expected when the G29 is running on the left toolhead. When I try to run the mesh calibration with the right one (the one using the U axis) the mesh is advancing along the Y axis as expected but it does not advances along the U axis, the toolhead stays at the last position the U axis was moved to before starting the G29 command and is simply going back and forth.
        I have tested every release between 3.5.4 and 3.6.0-rc2 and it seems this is a new issue to 3.6.0-rc2:

        • 3.5.4 is moving the toolhead diagonally (U and Y are moving)
        • 3.6.0-beta.3 - 3.6.0-rc1 is running fine
        • 3.6.0-rc2 is not moving along U

      extract from the config.g file

      [...]
      ;Kliky L
      M558 P8 C"10.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds
      (the forum thinks this is an URL hence the commas)
      G31 P500 X42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height
      M556 S50 X0 Y0 Z0 U0 ; set orthogonal axis compensation parameters
      M557 X0:300 Y0:250 S50 ; define mesh grid
      
      ;Kliky R
      M558 P8 C"11.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds
      (the forum thinks this is an URL hence the commas)
      G31 P500 U-42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height
      M556 S50 X0 Y0 Z0 U0 ; set orthogonal axis compensation parameters
      ;M557 U0:300 Y0:250 S50 ; define mesh grid
      [...]
      

      ; run mesh.g

      ; Mesh compensation
      T-1
      M290 R0 X0 Y0 Z0 U0    ; clear babystepping
      G28    ; Home all towers
      
      ;pickup the klicky
      M98 P"0:/sys/pickupprobe.g"
      M558 F120 K1    ; Reduce probing speed to prevent scares
      M556 S50 X0 Y0 Z0 U0    ; set orthogonal axis compensation parameters
      M557 U0:300 Y0:250 S25:30    ; define mesh grid
      
      G1 Z5 F1200    ; Approach tool - BL Touch
      G1 U-42 Y0 F15000
      G29 S0 K1    ; Proceed mesh compensation by probing, saving heightmap.csv correction map file and displaying the matrix
      if result != 0     ; If the Mesh failed
          abort    ;  cancel the calibration process
      G29 S1    ; Activate meshgrid compensation
      G29 S3 P"0:/sys/heightmap_U.csv"    ; Save meshgrid U
      M376 H{max(5,(move.compensation.liveGrid.deviations.max-move.compensation.liveGrid.deviations.min)*20)} ; Set the mesh bed compensation taper to 10% of a layer height.
      
      ;drop
      M98 P"0:/sys/dropprobe.g"
      G28                                               ; Home all towers
      

      Board Name:

      Duet3-6HC
      Toolboard1LC
      Firmware Version:

      MB6HC: 3.6.0-rc.2 ( 2025-03-31 12:17:13)
      Toolboard1LC: 3.6.0-rc.2 (2025-03-31 12:22:41)
      DWC Version: 3.6.0-rc.1
      Raspberry Pi: No

      droftartsundefined 1 Reply Last reply Reply Quote 0
      • tcamguilundefined
        tcamguil
        last edited by

        Downgrading the Toolboard1LC firmware to the version 3.6.0-rc.1 (2025-02-28 15:03:36) seems to have solved the first issue.
        Even increasing the probing speed does not seems to be able to reproduce the issue with the old firmware.

        1 Reply Last reply Reply Quote 0
        • droftartsundefined
          droftarts administrators @tcamguil
          last edited by

          @tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

          ;Kliky L
          M558 P8 C"10.io0.in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds
          G31 P500 X42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height
          ...
          ;Kliky R
          M558 P8 C"11.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds
          

          Do you have one Klicky probe, or two? You seem to be defining two, on different IO inputs. Or is it the same Klicky, but it depends which tool head picks it up?

          You have K1 set as the probe number for both probes, so most likely only one of them is actually being configured; the second effectively overwrites the first, so when the 1st toolhead (using the CAN '10' board) picks it up, it's looking on the wrong input for the probe response. Same for G31. Send M558 K# to check what probes are defined. Use a different K number for each probe. I don't know which probe number you are using in your 'pickupprobe.g' etc macros, but you could pass a parameter to the macro based on the tool number.

          As far as I'm aware, the mesh should be applied to both tools. Please post your full config.g, maybe it's a config issue.

          There is an issue running mesh probing on the U axis, it has been reported before, and your third issue sounds similar to this: https://forum.duet3d.com/topic/37165/issue-with-szp-on-secondary-idex-toolhead

          Ian

          Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

          tcamguilundefined 1 Reply Last reply Reply Quote 0
          • tcamguilundefined
            tcamguil @droftarts
            last edited by

            @droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

            Do you have one Klicky probe, or two? You seem to be defining two, on different IO inputs. Or is it the same Klicky, but it depends which tool head picks it up?

            You have K1 set as the probe number for both probes, [...]

            I have one Klicky probe that can be loaded by both heads.
            I was playing with the macros before posting here and forgot to change back the first probe to K0 but yes both probes are declared. So as far as the Duet is concerned it has two probes, K0 is on T0 (CAN '10' board on the X motor) and K1 is on T1 (CAN '11' board on the U motor).

            As far as I'm aware, the mesh should be applied to both tools. Please post your full config.g, maybe it's a config issue.

            After experimenting with the mesh and both toolheads I realized that the mesh is being applied to both tools as expected. The mesh XY simply does not affect raw U moves which is the expected result. So I think this solves my second issue and may render my third issue moot.

            There is an issue running mesh probing on the U axis, it has been reported before, and your third issue sounds similar to this: https://forum.duet3d.com/topic/37165/issue-with-szp-on-secondary-idex-toolhead

            I also noticed that the mesh is probed along Y first then U (in every version of RRF 3.6) only in RRF 3.6.0-rc2 does the U axis not move at the end of each row.

            For example, if I run the 3 commands below U moves to the center of the buildplate (U150, Y125), to the front (U150, Y0), then to the back (U150, Y250) where it probes twice (performing one probing move from Z5 and 2-3 probes from Z0.5 each time) and finally to the front again (U150, Y0) instead of probing each corner once.

            M557 U0:300 Y0:250 P2  ; define mesh grid
            G1 U150 Y125 F15000    ; Move to the center
            G29 S0 K1              ; Proceed mesh compensation
            

            But the resulting heightmap is "correct" here is the heightmap.csv file generated

            RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020
            axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1
            Y,U,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2
             -0.038,  0.001
             -0.041, -0.000
            
            droftartsundefined 1 Reply Last reply Reply Quote 0
            • droftartsundefined
              droftarts administrators @tcamguil
              last edited by

              @tcamguil Thanks for your response. I've raised a github issue, and @dc42 is looking into it.
              https://github.com/Duet3D/RepRapFirmware/issues/1105

              Ian

              droftarts created this issue in Duet3D/RepRapFirmware

              closed [Bug]: Z probes on tools mapped to X axis fail at creating bed mesh heightmap #1105

              Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

              tcamguilundefined 1 Reply Last reply Reply Quote 0
              • tcamguilundefined
                tcamguil @droftarts
                last edited by

                @droftarts, I have quickly tested a few things with the following handmade heightmap.

                heightmap_X.csv

                RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020
                axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1
                X,Y,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2
                 -4.000,  4.000
                 -4.000,  4.000
                

                heightmap_U.csv (the points are rotated to match the probing order)

                RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020
                axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1
                Y,U,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2
                  4.000,  4.000
                 -4.000, -4.000  
                

                here are my results

                With heightmap_X active,

                • If no tool is active the heightmap is applied on G1 moves using the G1 Xaaa command but not the G1 Uaaa command.
                • If T0 (connected to X motor) is active the heightmap is applied on G1 moves using the G1 Xaaa command but not the G1 Uaaa command.
                • If T1 (connected to U motor) is active the heightmap is applied on moves using the G1 Xaaa command but not the G1 Uaaa command.

                With heightmap_U active,

                • If no tool is active the heightmap is applied on G1 moves using the G1 Uaaa command but not the G1 Xaaa command.
                • If T0 (connected to X motor) is active the heightmap is applied on G1 moves using the G1 Uaaa command but not the G1 Xaaa command.
                • If T1 (connected to U motor) is active the heightmap is applied on both moves using the G1 Uaaa command and the G1 Xaaa command.

                I hope this can help you diagnose the issue.

                On the other hand do you have an idea about what could be causing the toolboard to fail to detect the status change of the klicky thus attempting to push it through the bed?

                @tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

                The first one is that during the G29 calibration the machine will sometimes fail to detect the "status change" of the Z-probe and will go all the way down breaking the Z-probe before generating a "Error: G29: Probe was not triggered during probing move" message.
                I have tried increasing the Z lift to 0.5mm in between two probes without success. H2:0.25 => H2:0.5
                I also tried to increase the recovery time to 0.5s thinking the Z-probe "status" was not updated in time. R0.0 => R0.5

                droftartsundefined 1 Reply Last reply Reply Quote 0
                • droftartsundefined
                  droftarts administrators @tcamguil
                  last edited by

                  @tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

                  On the other hand do you have an idea about what could be causing the toolboard to fail to detect the status change of the klicky thus attempting to push it through the bed?

                  I'd guess it's looking for a response from the wrong probe. Are you using G29 with a K parameter? Also check that any deployprobe#.g, retractprobe#.g and tool change macros (tpre#.g, tpost#.g and tfree#.g) are all numbered appropriately for the correct tool and probe. If you leave off the number (the #), that macro will be running for ALL probes/tools.

                  For the heightmaps, @dc42 is looking into this. However, to me it looks like the order of the axes are incorrect when doing a mesh bed on the tool with U mapped to X, because it is listing the Y axis before U, when it should be U first. Can you post your full config.g, so I can see how you've set up your tools?

                  I also think the mesh is being applied correctly (though not in the correct order), ie a mesh that has been made on the XY axes affects the XY axes but not U, and a mesh made on the UY axes affects the X when U is mapped to it, and UY axes. You generally wouldn't command a U axis move during a job, so this seems sensible.

                  Ian

                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                  tcamguilundefined 1 Reply Last reply Reply Quote 0
                  • tcamguilundefined
                    tcamguil @droftarts
                    last edited by

                    @droftarts
                    After hours of trying to debug this issue here are the three files left on my printer
                    Empty_printer.JPG

                    config.g
                    homeall.g
                    mesh.g

                    @droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

                    I'd guess it's looking for a response from the wrong probe. Are you using G29 with a K parameter? Also check that any deployprobe#.g, retractprobe#.g and tool change macros (tpre#.g, tpost#.g and tfree#.g) are all numbered appropriately for the correct tool and probe. If you leave off the number (the #), that macro will be running for ALL probes/tools.

                    G29 is using K1. I don't use / don't like using the deployprobe/retractprobe pair as it has a tendency to pickup/drop the probe too frequently when running a full machine calibration. tfree-tpre-tpost macros are all correctly numbered

                    @droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

                    For the heightmaps, @dc42 is looking into this. However, to me it looks like the order of the axes are incorrect when doing a mesh bed on the tool with U mapped to X, because it is listing the Y axis before U, when it should be U first. Can you post your full config.g, so I can see how you've set up your tools?

                    For the heightmap I suppose the machine is configuring the mesh in the order of the axes in the firmware (ie: XYZUVWABC...) so it will select Y then U when calibrating, I may be wrong here but it seems logical to me maybe the firmware is selecting Y as both the first axis and the default Y axis (I could not quite understand how the mesh is working under the hood).

                    @droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:

                    I also think the mesh is being applied correctly (though not in the correct order), ie a mesh that has been made on the XY axes affects the XY axes but not U, and a mesh made on the UY axes affects the X when U is mapped to it, and UY axes. You generally wouldn't command a U axis move during a job, so this seems sensible.

                    That is also my point of view I think the Heightmap is correctly applied, Both toolheads were applying the compensation while the XY heightmap was active.
                    The fact that the Heightmap is rotated when displayed on the DWC is an old issue as is the points being meshed and saved in the "wrong" order. It was for me just a quirk of the Firmware (the spacing has to be declared backwards Y then U).

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

                      @tcamguil please try the 3.6.0-rc.2+1firmware from https://www.dropbox.com/scl/fo/kj7gwwzxg5lhe26twph5z/AAdwkPCTYi6bcogLmIIIup4?rlkey=8oo6z5il7wzk2u5b7qpykf3qv&dl=0. Let us know if you are able to generate the correct heightmap for the U/Y tool.

                      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

                      tcamguilundefined 1 Reply Last reply Reply Quote 0
                      • tcamguilundefined
                        tcamguil @dc42
                        last edited by

                        @dc42
                        The good news is the points seems to be taken in the "right" order now.
                        But the toolhead connected to the U motor needs to be active while the mesh is running for the U axis to move.
                        Which was not needed for RRF3.6.0-rc1 and before.
                        The points are being recorded in the right order in the heightmap file.

                        But the Klicky triggering was not detected again about midway through the second mesh calibration breaking it.

                        dc42undefined 2 Replies Last reply Reply Quote 0
                        • dc42undefined
                          dc42 administrators @tcamguil
                          last edited by

                          @tcamguil as a workaround to the U motor not moving unless the toolhead is active, try executing a short G1 U move before probing.

                          I can't think of any reason why the klicky triggering would not be detected other than a wiring issue, e.g. a bad crimp connection that causes a bad connection at some UY locations but not others.

                          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

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

                            @tcamguil I believe I have fixed the issue of the U axis not moving. Please try the 3.6.0-rc.2+2 firmware at https://www.dropbox.com/scl/fo/nlkfneaas1osgtdw37s17/AIS_H0KSAKCmfYSjSRTSOAE?rlkey=ad4omnq36zkdz3wl8i7kthqqt&dl=0.

                            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
                            • tcamguilundefined
                              tcamguil @dc42
                              last edited by

                              @dc42, it is working now. Thank you for the quick update.

                              I guess it could be a bad connection.But why does it happens at random points on the buildplate. And why can't I reproduce the issue on RRF 3.6.0-RC.1 or before. Could it be an issue with the debouncer ?

                              I switched to a NO sensor and the issue is now flipped the error is now "Error: G29: Probe already triggered before probing move started". and the Z-probe status is stuck in the triggered state until I trigger/un trigger it manually.

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

                                @tcamguil regarding the Klicky probe not triggering, please try the updated 3.6 tool board firmware at https://www.dropbox.com/scl/fo/vyin5beexljdndp3c00ln/AE6qWXcANSDo40ffsEaRZI4?rlkey=5kc28a1jbr7hu4l90w5shovh1&dl=0.

                                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

                                tcamguilundefined 1 Reply Last reply Reply Quote 0
                                • tcamguilundefined
                                  tcamguil @dc42
                                  last edited by

                                  @dc42 thank you very much.

                                  I was able to run multiple consecutive meshes an increasing probing speeds without issues.
                                  I think this solves the last of my issues.

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

                                    @tcamguil thanks for confirming this.

                                    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
                                    • dc42undefined dc42 has marked this topic as solved
                                    • First post
                                      Last post
                                    Unless otherwise noted, all forum content is licensed under CC-BY-SA