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

Strange Z error

Scheduled Pinned Locked Moved
Using Duet Controllers
5
43
1.8k
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
    Phaedrux Moderator @sunToxx
    last edited by 22 Apr 2022, 15:46

    @suntoxx said in Strange Z error:

    The former would make nozzle changes quite a hazzle, even with an LGX.

    I don't know what to tell you about that. Here is how we recommend you do it: https://docs.duet3d.com/en/User_manual/Connecting_hardware/Z_probe_testing

    I'm not sure what your Caribou config setup recommends.

    undefined 1 Reply Last reply 24 Apr 2022, 12:00 Reply Quote 0
    • undefined
      sunToxx @Phaedrux
      last edited by 24 Apr 2022, 12:00

      @phaedrux you dont go through all of that when you change your nozzle, do you? What steps do you personally do then, or do you rarely change it?

      1 Reply Last reply Reply Quote 0
      • undefined
        Phaedrux Moderator
        last edited by 24 Apr 2022, 17:54

        Well yes actually. If I change the nozzle and I want an accurate first layer I need to at the very least re-measure the nozzle tip to probe trigger height offset (G31 Z)

        This part in particular: https://docs.duet3d.com/en/User_manual/Connecting_hardware/Z_probe_testing#calibrate-the-z-probe-trigger-height

        It's not really a time consuming process. I even have a macro to make it repeatable.

        M291 P"Grid bed compensation map and Z Probe trigger height will be cleared. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel.
        M291 P"Heights will be found in gcode console if logging successful gcode is enabled" R"Did you remember to enabled gcode logging?" S3
        ; Clear compensation map and Z probe trigger height
        ;
        G28 ; home all axis
        M561 ; Disable any current bed compensation
        G90 ; Absolute positioning
        T0 ; Activate first tool
        M98 P"ZSpeedsSlow.g" ; Set lower speeds for Z homing and lower Z motor current
        M913 Z50 ; Drop motor current to prevent damage in case of head crash
        ; Preheat to probing temps
        ;
        M291 P"Preheating to bed to 60 and nozzle to 210 for accurate probing"
        M104 S210 ; Set nozzle to 210 and release
        M190 S60 ; Set bed to 60 and wait
        M109 S210 ; Set nozzle to 210 and wait
        M98 P"0:/macros/musical tunes/GetAttention.g"
        ; 1
        ;
        M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
        M98 P"0:/macros/Calibration/Bed Leveling/1_Center Nozzle on Bed"
        G90 G1 Z3 F400
        M400
        G92 Z4 ; Reset z to 8 to allow jogging up to touch bed to nozzle
        M291 P"Jog the Z Axis until the bed and nozzle are touching and click OK" R"Setting Z=0" Z1 S3
        M400
        G92 Z0 ; Set z = 0
        G90 G1 Z3 F400
        M104 S0 ; Turn off hotend heater as it's no longer needed
        M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" T3
        M400
        M98 P"0:/macros/Calibration/Bed Leveling/1_Center Probe on Bed"
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-1
        M400
        G1 Z5
        M400
        G30 S-3 ; measure probe height and set it.
        M400
        M500 P31 ; save trigger height to config-override.g
        G1 Z5
        M98 P"0:/macros/musical tunes/GetAttention.g"
        ; Turn off heaters
        ;
        M104 S0 ; Set nozzle to 0 and release
        M140 S0 ; Set bed to 0 and release
        M98 P"ZSpeedsNormal.g" ; return to normal speeds
        M98 P"CurrentsNormal.g"
        M400
        M291 P"Homing"
        G28 ; Home Z
        M84 ; turn off the motors
        M291 P"Probing complete. Turning off heaters and homing axis. Check log for trigger heights and enter into config.g" S2

        I have limited experience with the caribou config files and macros, but I believe they have something similar.

        undefined 2 Replies Last reply 25 Apr 2022, 21:31 Reply Quote 1
        • undefined
          sunToxx @Phaedrux
          last edited by sunToxx 25 Apr 2022, 21:31

          @phaedrux I checked the macro folders and did not see anything like the one you posted.

          "Jog" nozzle means to use the babysteps command on the display?

          So it triggers 10 times and you watch it to see if the values are consistent and then it automatically saves the new 0 height value.

          Do I understand this correctly, you reduce motor speed and also reduce motor current, which makes the motor too weak to damage the print sheet?

          1 Reply Last reply Reply Quote 0
          • undefined
            Phaedrux Moderator
            last edited by 26 Apr 2022, 05:23

            Yes you got it. Obviously you don't have the same sub macros as I do, but you get the idea of the function and would have to modify for your specifics.

            At the most basic level though you can follow the instructions in that earlier link for measuring the offset within 5 minutes.

            1 Reply Last reply Reply Quote 0
            • undefined
              sunToxx @Phaedrux
              last edited by sunToxx 26 Apr 2022, 17:45

              @phaedrux said in Strange Z error:

              M291 P"Jog the Z Axis until the bed and nozzle are touching and click OK" R"Setting Z=0" Z1 S3

              It seems we dont have anything like it and the suggestion in the group didnt even include deactivating the mesh compensation. I definitely want to create a macro similar to yours, that seems much better to me.

              In the quoted code, it looks like a window will pop up and you are supposed to jog the nozzle and then press OK. How do you jog the nozzle while the window is open and watch the nozzle touch the bed? Does that need dwc and the printer screen at the same time?

              And do you first center the nozzle and then the probe onto the same spot, to eliminate possible deviations? Does it automatically use the currently saved probe xy offset?

              Also, I am not sure if I have done it sufficiently correct before as the instructions involve G92 Z0 and G30 S-1. On caribou we simply save the current babysteps with a macro and it gets saved into config-override. So all I did after the nozzle change is, go down with the nozzle with 0.01mm babysteps till it touches the bed and then hit the save babysteps macro, which resulted in G31 K0 P500 X31.6 Y-10.1 Z2.76 in the config-override.g. Was that a wrong or dangerous thing to do? Seems to work so far.

              Thats the babysteps macro

              if state.status != "processing" ; printer is not currently printing!
              if move.axes[2].babystep !=0 ; if no babysteps are currently adjusted - exit routine
              M291 R{"z-Trigger Height"} P{"Current: " ^ sensors.probes[0].triggerHeight ^ ", Babysteps:" ^ move.axes[2].babystep ^ ", New: " ^ sensors.probes[0].triggerHeight - move.axes[2].babystep} S2
              M291 P{"Press OK to continue or CANCEL to abort."} R{"Setting z-probe offset to " ^ sensors.probes[0].triggerHeight - move.axes[2].babystep ^ "?"} S3
              M400 ; finish all current moves / clear the buffer
              G31 Z{sensors.probes[0].triggerHeight - move.axes[2].babystep} ; set G31 Z offset to corrected
              M500 P10:31 ; save settings to config-overide.g - G31 P31 saves trigger height
              M290 R0 S0 ; set babystep to 0mm absolute
              G28
              else
              M291 P"Babysteps are 0.000. z-trigger height will not be changed." S1
              else
              M291 S2 P"z-Trigger height cannot be changed during an ongoing print. Please run this macro when the print is finished, and the bed is clear and ready!" R"WARNING!"
              ;
              undefined 1 Reply Last reply 26 Apr 2022, 23:57 Reply Quote 0
              • undefined
                Phaedrux Moderator @sunToxx
                last edited by 26 Apr 2022, 23:57

                @suntoxx said in Strange Z error:

                In the quoted code, it looks like a window will pop up and you are supposed to jog the nozzle and then press OK. How do you jog the nozzle while the window is open and watch the nozzle touch the bed? Does that need dwc and the printer screen at the same time?

                M291 ill pop up a dialog box with Z movement buttons on the DWC and Paneldue.

                @suntoxx said in Strange Z error:

                And do you first center the nozzle and then the probe onto the same spot, to eliminate possible deviations? Does it automatically use the currently saved probe xy offset?

                That's up to you. In my example it moves the nozzle to the center where Z0 is set, and then it moves the probe over to that exact spot. It's not strictly needed though.

                @suntoxx said in Strange Z error:

                Also, I am not sure if I have done it sufficiently correct before as the instructions involve G92 Z0 and G30 S-1. On caribou we simply save the current babysteps with a macro and it gets saved into config-override.

                I have no idea about any of that unfortunately. I have seen that baby steps macro posted before and I think that's what I thought might be applicable to your case, but I have not used it. It seems to do something similar, but you'd have to ask the author of it.

                undefined 1 Reply Last reply 28 Apr 2022, 16:29 Reply Quote 0
                • undefined
                  sunToxx @Phaedrux
                  last edited by sunToxx 28 Apr 2022, 16:29

                  @phaedrux thanks for your help. I am working on adapting your macro for myself, I hope that is ok. This is where I am currently at.

                  M291 P"Grid bed compensation map and Z Probe trigger height will be cleared. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel.
                  G28 ; home all axis
                  M561 ; Disable any current bed compensation
                  G90 ; Absolute positioning
                  T0 ; Activate first tool
                  M203 Z500.00 ; Set lower speeds for Z homing and lower Z motor current
                  M913 Z50 ; Drop motor current to 50mAh to prevent damage in case of head crash
                  M291 P"Preheating to bed to 60 and nozzle to 210 for accurate probing"
                  M104 S210 ; Set nozzle to 210 and release
                  M190 S60 ; Set bed to 60 and wait
                  M109 S210 ; Set nozzle to 210 and wait
                  M98 P"0:/sys/playsound.g"
                  M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                  xxxM98 P"0:/macros/Calibration/Bed Leveling/1_Center Nozzle on Bed" ;TODO<-------------<Manual G1 move?
                  G90 G1 Z3 F400 ;Moves Z a bit up?
                  M400
                  G92 Z4 ; Reset z to 8? to allow jogging up to touch bed to nozzle ;feeds arbitrary coordinate?
                  M291 P"Jog the Z Axis until the bed and nozzle are touching and click OK" R"Setting Z=0" Z1 S3
                  M400
                  G92 Z0 ; Set z = 0
                  G90 G1 Z3 F400
                  M104 S0 ; Turn off hotend heater as it's no longer needed
                  M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" T3
                  M400
                  xxxM98 P"0:/macros/Calibration/Bed Leveling/1_Center Probe on Bed" ;TODO<--------------<Manual g1 move?
                  G1 Z5
                  M400
                  G30 S-1
                  M400
                  G1 Z5
                  M400
                  G30 S-1
                  M400
                  G1 Z5
                  M400
                  G30 S-3 ; measure probe height and set it.
                  M400
                  M500 P31 ; save trigger height to config-override.g ;need save babysteps macro anyway?
                  G1 Z5
                  M98 P"0:/sys/playsound.g"
                  M104 S0 ; Set nozzle to 0 and release
                  M140 S0 ; Set bed to 0 and release
                  M203 Z1000.00 ; return to normal speeds (better to revert to saved values than to set them manually?)
                  M906 X1250 Y1250 Z650 ;return to normal currents
                  M400
                  M291 P"Homing"
                  G28 ; Home Z
                  M84 ; turn off the motors
                  M291 P"Probing complete. Turning off heaters and homing axis. Check log for trigger heights and execute Save Babysteps Macro" S2

                  There are some points I wonder about though. You use another macro to return the z motors to your previous mAh. Is there a reason behind it, like does that macro get automatically updated after a firmware update that might mess with the values, or what is the idea behind it?

                  Then the move to the center with nozzle and probe. Is there an elegant way to get the probe to that position? Like do you use a relative movement reflecting your xy offset after the nozzle was centered, maybe even by reading out that value instead of manually copying it? Or you simply calculate the center?

                  undefined 1 Reply Last reply 28 Apr 2022, 17:09 Reply Quote 0
                  • undefined
                    Phaedrux Moderator @sunToxx
                    last edited by 28 Apr 2022, 17:09

                    @suntoxx said in Strange Z error:

                    There are some points I wonder about though. You use another macro to return the z motors to your previous mAh. Is there a reason behind it, like does that macro get automatically updated after a firmware update that might mess with the values, or what is the idea behind it?

                    I do that so that there is only one place I have to change the values if I want to make adjustments and it will then reflect in all the other macros that call it. Make shift variable from before there were actual variables.

                    @suntoxx said in Strange Z error:

                    Then the move to the center with nozzle and probe. Is there an elegant way to get the probe to that position? Like do you use a relative movement reflecting your xy offset after the nozzle was centered, maybe even by reading out that value instead of manually copying it? Or you simply calculate the center?

                    Again the reason for the macro for this is that I can adjust it as needed incase the actual probe gets moved and I need to change the offset. I can just update the position in that one macro. But to be honest it doesn't matter so much if I set the Z0 at the nozzle position and then do the probe testing 1mm away from that spot. General vicinity is enough.

                    You can see the entire macro set here: https://github.com/Duet3D/RRF-machine-config-files/tree/master/DBotCoreXY/x0r-wifi-RRF3

                    undefined 1 Reply Last reply 28 Apr 2022, 17:19 Reply Quote 0
                    • undefined
                      sunToxx @Phaedrux
                      last edited by sunToxx 28 Apr 2022, 17:19

                      @phaedrux said in Strange Z error:

                      I do that so that there is only one place I have to change the values if I want to make adjustments and it will then reflect in all the other macros that call it. Make shift variable from before there were actual variables.

                      Does that mean that now it would be possible to save the current state from within the macro, change it to a lower value and at the end return to the saved state?

                      Again the reason for the macro for this is that I can adjust it as needed incase the actual probe gets moved and I need to change the offset. I can just update the position in that one macro. But to be honest it doesn't matter so much if I set the Z0 at the nozzle position and then do the probe testing 1mm away from that spot. General vicinity is enough.

                      I want to do it the same way, because there is quite some distance between nozzle and probe on the caribou and the mesh compensation is not working as perfect as I would like. I assume there is no way to tell the head to make a relative movement based on the current g31 xy offset?

                      You can see the entire macro set here: https://github.com/Duet3D/RRF-machine-config-files/tree/master/DBotCoreXY/x0r-wifi-RRF3

                      I will check that out, thanks!

                      undefined 1 Reply Last reply 28 Apr 2022, 18:08 Reply Quote 0
                      • undefined
                        Phaedrux Moderator @sunToxx
                        last edited by 28 Apr 2022, 18:08

                        @suntoxx said in Strange Z error:

                        Does that mean that now it would be possible to save the current state from within the macro, change it to a lower value and at the end return to the saved state?

                        That may be possible with conditional gcode, but my example is not that fancy.

                        @suntoxx said in Strange Z error:

                        I assume there is no way to tell the head to make a relative movement based on the current g31 xy offset?

                        With conditional gcode and the object model that is possible, though I don't know the exact syntax off the top of my head. But if you're hte programmatic type, see here: https://docs.duet3d.com/en/User_manual/Reference/Gcode_meta_commands

                        undefined 1 Reply Last reply 28 Apr 2022, 22:05 Reply Quote 1
                        • undefined
                          sunToxx @Phaedrux
                          last edited by sunToxx 28 Apr 2022, 22:05

                          @phaedrux i had a look at the metacommands, but it seems with the current level of documentation, the time needed to get that working probably outmatches the work it would save me. I got the macro working though and quite consistently at that. I keep ending up with either 2.777 or 2.78 in console and on multiple runs of the macro I end up with either g31 Z2.77 or Z2.78 which seems fine to me. Do you end up at the exact same G31 Z if you run the macro multiple times in a row? Is it just practice, or is that deviation to be expected and can't really be avoided?

                          Edit: I did the "touch down" by looking the the nozzle and confirming the height when the shadow disappears. Is this the correct way, or is the speed and motor current reduced, in order so that i can move the extruder downwards until it stops moving?

                          Edit2: The mesh compensation is active again after the macro finishes? Should I restart Duet after the macro?

                          1 Reply Last reply Reply Quote 0
                          • undefined
                            Phaedrux Moderator
                            last edited by 29 Apr 2022, 00:46

                            @suntoxx said in Strange Z error:

                            Do you end up at the exact same G31 Z if you run the macro multiple times in a row? Is it just practice, or is that deviation to be expected and can't really be avoided?

                            There's always going to be some small variation. 0.01mm is pretty tight. Nothing to worry about.

                            @suntoxx said in Strange Z error:

                            the shadow disappears.

                            I use the same method. It helps to have a light source behind the printer so you can see the gap disappear. Maybe there's a better way, but it's good enough and works for me. It doesn't really matter so much because you're calibrating once and it stays set for a long time.

                            @suntoxx said in Strange Z error:

                            The mesh compensation is active again after the macro finishes? Should I restart Duet after the macro?

                            That depends on where you activate it in the first place. You can load it at the end of homeall, or at start of a print in start.g or in the slicer start gcode.

                            undefined 1 Reply Last reply 29 Apr 2022, 08:31 Reply Quote 1
                            • undefined
                              sunToxx @Phaedrux
                              last edited by 29 Apr 2022, 08:31

                              @phaedrux said in Strange Z error:

                              I use the same method. It helps to have a light source behind the printer so you can see the gap disappear. Maybe there's a better way, but it's good enough and works for me. It doesn't really matter so much because you're calibrating once and it stays set for a long time.

                              I got a number of nozzle sizes and print in a lot in varying layer heights. I want to take full advantage of how easy nozzle swapping is in the lgx, so as soon as my torque screwdriver arrives, I want to start using the optimal nozzle for each height. The macro sets me up very nicely for this!

                              That depends on where you activate it in the first place. You can load it at the end of homeall, or at start of a print in start.g or in the slicer start gcode.

                              I will check that out.

                              Thanks for the help! 👍😎

                              undefined 1 Reply Last reply 29 Apr 2022, 08:42 Reply Quote 0
                              • undefined
                                fcwilt @sunToxx
                                last edited by fcwilt 29 Apr 2022, 08:42

                                @suntoxx

                                Did you get an answer on how to center the probe without hardcoding?

                                This is my way:

                                 G1 X{((move.axes[0].max + move.axes[0].min) / 2) - sensors.probes[0].offsets[0]}, Y{((move.axes[1].max + move.axes[1].min) / 2) - sensors.probes[0].offsets[1]}, F1800
                                

                                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 undefined 2 Replies Last reply 30 Apr 2022, 13:56 Reply Quote 2
                                • undefined
                                  Stephen6309 @fcwilt
                                  last edited by 30 Apr 2022, 13:56

                                  @fcwilt You need to change "axis" to "axes".

                                  1 Reply Last reply Reply Quote 1
                                  • undefined
                                    sunToxx @fcwilt
                                    last edited by 2 May 2022, 17:43

                                    @fcwilt Thanks, this looks good. From where do you get for example the "sensors.probes[0].offsets[0]"? Is there a list somewhere?

                                    undefined 1 Reply Last reply 2 May 2022, 17:50 Reply Quote 0
                                    • undefined
                                      fcwilt @sunToxx
                                      last edited by 2 May 2022, 17:50

                                      @suntoxx said in Strange Z error:

                                      @fcwilt Thanks, this looks good. From where do you get for example the "sensors.probes[0].offsets[0]"? Is there a list somewhere?

                                      The DWC has a plug-in for browsing the object model:

                                      DWC Plug-Ins.png

                                      If it is not started just start it and then you can browse through the object model.

                                      Some of what I know is just from trial-and-error, other things were picked up here on the forum.

                                      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 3 May 2022, 18:04 Reply Quote 2
                                      • undefined
                                        Phaedrux Moderator
                                        last edited by 2 May 2022, 17:51

                                        This post is deleted!
                                        1 Reply Last reply Reply Quote 0
                                        • undefined
                                          sunToxx @fcwilt
                                          last edited by sunToxx 5 Mar 2022, 18:23 3 May 2022, 18:04

                                          @fcwilt said in Strange Z error:

                                          The DWC has a plug-in for browsing the object model:

                                          Oh, I completely missed that part of dwc somehow, as the plug in section in machine specific was empty. But from where in there do you get that with sensors.probes[0].offsets[0] you can refer to the current value? This is probably possible with most variables?

                                          undefined 1 Reply Last reply 3 May 2022, 19:13 Reply Quote 0
                                          16 out of 43
                                          • First post
                                            16/43
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA