• 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.7k
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
    sunToxx @Phaedrux
    last edited by sunToxx 21 Apr 2022, 16:17

    @phaedrux said in Strange Z error:

    Unless something was bent during the crash.

    Thanks for the reply.

    What could have been bent? I started the print, he kind of engraved the 5cm line into the print bed, I hit the Emergency Stop button. Then he restarted. I started with a big babystep offset and printed a single layer, lowering it slowly and end up at 0 offset. So the offset definitely remained unchanged. Plus it was still high enough, to print normally. I did end up raising it by 0.04 now, but just to optimize the imprint of the structural sheet. You think something could have been bent in the process?

    @phaedrux said in Strange Z error:

    Remeasure the z offset for the probe since after changing the nozzle the distance between probe trigger height and nozzle tip is likely slightly different.

    How exactly would i do this? I want to change nozzles quite often, so it should be as hassle free as possible.

    undefined 1 Reply Last reply 21 Apr 2022, 19:23 Reply Quote 0
    • undefined
      sunToxx @Phaedrux
      last edited by 21 Apr 2022, 16:21

      @phaedrux and what could have caused this? I did interrupt or pause a print, to apply some plastic repellant paint, after the nozzle change. I might have moved it on the z axis unintentionally? Quite unsettling not to know which factors could have led to this.

      1 Reply Last reply Reply Quote 0
      • undefined
        Phaedrux Moderator @sunToxx
        last edited by 21 Apr 2022, 19:23

        @suntoxx said in Strange Z error:

        How exactly would i do this? I want to change nozzles quite often, so it should be as hassle free as possible.

        I believe Caribou has a method for this do they not? I'm not super familiar with their config set, but from what I've seen it's quite involved.

        Z-Bot CoreXY Build | Thingiverse Profile

        undefined 1 Reply Last reply 22 Apr 2022, 08:50 Reply Quote 0
        • undefined
          sunToxx @Phaedrux
          last edited by sunToxx 22 Apr 2022, 08:50

          @phaedrux I am not quite sure what exactly you mean. The whole calibration process for the BLTouch? 3mm distance etc? Or just start with a bit higher Z offset and work down (which is done via babysteps and saved in config.override)?

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

          undefined 1 Reply Last reply 22 Apr 2022, 15:46 Reply Quote 0
          • 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.

            Z-Bot CoreXY Build | Thingiverse Profile

            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.

                Z-Bot CoreXY Build | Thingiverse Profile

                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.

                    Z-Bot CoreXY Build | Thingiverse Profile

                    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.

                        Z-Bot CoreXY Build | Thingiverse Profile

                        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

                            Z-Bot CoreXY Build | Thingiverse Profile

                            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

                                Z-Bot CoreXY Build | Thingiverse Profile

                                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.

                                    Z-Bot CoreXY Build | Thingiverse Profile

                                    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! 👍😎

                                      fcwiltundefined 1 Reply Last reply 29 Apr 2022, 08:42 Reply Quote 0
                                      • fcwiltundefined
                                        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

                                        Stephen6309undefined undefined 2 Replies Last reply 30 Apr 2022, 13:56 Reply Quote 2
                                        • Stephen6309undefined
                                          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
                                          12 out of 43
                                          • First post
                                            12/43
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA