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

    M558 F parameter only applied during approaching of probe

    Scheduled Pinned Locked Moved
    Firmware wishlist
    3
    13
    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.
    • Googliolaundefined
      Googliola
      last edited by

      I am using a BLTouch as Z-min and for bed leveling. Unfortunately I get bad repeatability due to the fact that the z-speeds for lowering and lifting are different. One is configured by the M558 F parameter (approaching the probe) while the other is defined by M203 Z parameter.

      IMHO, this is a bug as the difference in speeds accounts for the bad repeatability (as I tested). I propose that the M558 F parameter is applied to both directions in order to get a more consistent reading, while the M558 T parameter is only applied to XY movements.
      Lowering M203 Z is a possible workaround for bed.g auto-level, but not so for mesh grid compensation (G29). And sacrificing overall z-speed by lowering M203 Z in config.g to get more precision for G29 is just a last resort.

      Tests performed on firmware 2.02RC2

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

        Personally I would find it very annoying if I had to use a slow head lifting speed on my printers when probing, because it isn't necessary on my printers and it would slow down bed probing.

        If the BLTouch has special needs in this respect, then I guess the head lifting speed could be changed only when Z probe mode 9 is selected. But are you sure that it is the BLTouch that needs a slow head lifting speed, and not the Z axis of your machine?

        I'll need to hear the views of other BLTouch users before I make this change.

        Why is lowering the M203 Z parameter not a possible workaround when doing G29 mesh bed compensation?

        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
        • Googliolaundefined
          Googliola
          last edited by

          I just noticed that I get different readings if I probe 2 or 3 times and have a high z-speed. Lowering z-speed kind of solved the problem most of the times.
          Interestingly, first repeatability tests (as described here) with different M203 Z values could not confirm my suspicion above. Will have to do more testing.

          Why is lowering the M203 Z parameter not a possible workaround when doing G29 mesh bed compensation?

          What I mean is that there is no way to tell the firmware to lower Z speed whenever a G29 is issued - for example from the DWC. Of course I could create another macro for G29...

          1 Reply Last reply Reply Quote 0
          • Phaedruxundefined
            Phaedrux Moderator
            last edited by Phaedrux

            @dc42
            I agree that reducing the lifting speed has a positive effect on the BLTouch. I don't have a very fast bed to begin with, but I have found that slowing it down during probing is beneficial.

            I simply use a macro to do it though. Before the G30 I call a macro that sets z speed, accel, and jerk to lower values. When it's done it calls another macro that resets them to the default values. Which takes care of homing z.

            I use a seperate macro to run G29 and it calls the same macro to lower speeds and restore them again at the end. That may not be a practical answer for most people who don't want to mess with macros for everything, especially when the DWC is the main UI.

            Whether it would be better to have that a default behaviour option in M558 I can't really say. I don't have a large enough set of data to say if it would help every BLTouch probe in every situation. I will say that it's also possible to use a too low speed for head lift which can cause the pin to strike the bed and go into error.

            For what it's worth, here are the speeds I use for probing

            M566 Z6 ; Set maximum instantaneous speed changes (mm/min)
            M203 Z100 ; Set maximum speeds (mm/min)
            M201 Z6 ; Set maximum accelerations (mm/s^2)
            M558 P9 H3 F100 T6000 A5 R0.3 S0.005 B1
            

            Normal speeds are 300mm/min with 60mm/min accel and jerk.

            I use a lower 3mm dive height to offset the slower probe and lift speed, with a short pause to let the pin settle.

            @Googliola What speeds are you actually using, and how do you have the M558 command configured?

            Z-Bot CoreXY Build | Thingiverse Profile

            1 Reply Last reply Reply Quote 0
            • Googliolaundefined
              Googliola
              last edited by Googliola

              Funny, I just came to the opposite conclusion: M558 T and F params dont really account for quality of z-probe values 😱

              I ran an automated test Test M558.T_F.params.g that calls Repeat10.g (both stored in /macros/BLTouch/ , remove file extension.g) and got these results Test M558.T_F.params results.xlsx

              I built a custom coreXY, based on Tronxy X5S.
              My settings are

              M566 Z120 ; Set maximum instantaneous speed changes (mm/min)
              M203 Z8000.0 ; Set maximum speeds (mm/min)
              M201 Z500 ; Set accelerations (mm/s^2)
              M558 P9 H5 R1 Fx Ty A2 X0 Y0 Z1 S0.08
              

              Note: Since Z max speed is limited to 8000, the max speed never reached 9000 as it says in the results 🤔

              Questions:
              Whats your take on the results?
              What factor would you tune next? Acceleration?

              @Phaedrux Love your custom D-Bot

              Phaedruxundefined 1 Reply Last reply Reply Quote 0
              • Phaedruxundefined
                Phaedrux Moderator @Googliola
                last edited by

                @googliola

                Is this an accurate way to measure repeatability?

                G30 P0 X150 Y153 Z-9999
                G30 P1 X150 Y153 Z-9999
                G30 P2 X150 Y153 Z-9999
                G30 P3 X150 Y153 Z-9999
                G30 P4 X150 Y153 Z-9999
                G30 P5 X150 Y153 Z-9999
                G30 P6 X150 Y153 Z-9999
                G30 P7 X150 Y153 Z-9999
                G30 P8 X150 Y153 Z-9999
                G30 P9 X150 Y153 Z-9999 S-1
                

                It was my thinking that to measure the trigger height reliably you'd need to use G30 S-1 and manually reset Z=0 between each probe move. No?

                Z-Bot CoreXY Build | Thingiverse Profile

                Googliolaundefined dc42undefined 2 Replies Last reply Reply Quote 0
                • Googliolaundefined
                  Googliola @Phaedrux
                  last edited by

                  @phaedrux said in M558 F parameter only applied during approaching of probe:

                  Is this an accurate way to measure repeatability?

                  It was my thinking that to measure the trigger height reliably you'd need to use G30 S-1 and manually reset Z=0 between each probe move. No?

                  Honestly, I did not consider that, just plain copy&paste from this post 😇 😀

                  1 Reply Last reply Reply Quote 0
                  • Phaedruxundefined
                    Phaedrux Moderator
                    last edited by

                    Yeah I saw the reference post. I'm not sure if it matters?

                    I guess it depends if you know you can trust your trigger height and repeatability to begin with?

                    G30 Pn Z-9999 S-1 is typically used to measure multiple points on the bed after you've already determined the probe triggers reliably. Maybe it can be used this way? I'm not really sure.

                    Z-Bot CoreXY Build | Thingiverse Profile

                    1 Reply Last reply Reply Quote 0
                    • Phaedruxundefined
                      Phaedrux Moderator
                      last edited by

                      This is how I measure my trigger height. I manually enter the values into Excel to get the median and mode.

                      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
                      G29 S2			; Clear mesh bed compensation parameters
                      G31 Z0			; Reset Z probe trigger height
                      G90			; Absolute positioning
                      T0			; Activate first tool
                      M98 P"ZSpeedsSlow.g"	; Set lower speeds for Z homing and lower Z motor current
                      M913 Z60		; 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
                      
                      ; 1
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 2
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 3
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 4
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 5
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 6
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 7
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 8
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 9
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      ; 10
                      ;
                      M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
                      G1 X150 Y130 Z5 F4000	; Move to bed center
                      G92 Z8 			; 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
                      G92 Z0			; Set z = 0
                      M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
                      G1 Z1			; Drop bed for nozzle clearance
                      G1 X190 Y90 F4000 	; Move to bed center
                      G1 Z10
                      G30 S-1
                      
                      
                      ; 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
                      M913 Z75	; reset z motor current
                      G28		; Home Z
                      
                      M291 P"Probing complete. Turning off heaters and homing axis. Check log for trigger heights and enter into config.g" S2
                      
                      
                      ; Tone to get user attention
                      ;
                      M400			; Clear movement buffer so tones play reliably
                      M300 S666 P500
                      G4 P501
                      M300 S1111 P300
                      G4 P301
                      

                      Note that you won't be able to use that on your own system without adapting it.

                      Z-Bot CoreXY Build | Thingiverse Profile

                      1 Reply Last reply Reply Quote 0
                      • Googliolaundefined
                        Googliola
                        last edited by

                        Thanks for the macro. Maybe, repeatability test will become much easier once Forced averaging for M558 is implemented. Meanwhile I will investigate your macro.

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

                          @phaedrux said in M558 F parameter only applied during approaching of probe:

                          @googliola

                          Is this an accurate way to measure repeatability?

                          G30 P0 X150 Y153 Z-9999
                          G30 P1 X150 Y153 Z-9999
                          G30 P2 X150 Y153 Z-9999
                          G30 P3 X150 Y153 Z-9999
                          G30 P4 X150 Y153 Z-9999
                          G30 P5 X150 Y153 Z-9999
                          G30 P6 X150 Y153 Z-9999
                          G30 P7 X150 Y153 Z-9999
                          G30 P8 X150 Y153 Z-9999
                          G30 P9 X150 Y153 Z-9999 S-1
                          

                          Yes, that's a good method. On delta printers especially, it's also good to run the same test with movements to alternate high-X and low-X between probings, for example:

                          G30 P0 X0 Y0 Z-9999
                          G1 X-100 F6000
                          G30 P1 X0 Y0 Z-9999
                          G1 X100 F6000
                          G30 P2 X0 Y0 Z-9999
                          G1 X-100 F6000
                          ...
                          

                          Similarly for Y. This tests for backlash in the movement system.

                          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
                          • Googliolaundefined
                            Googliola
                            last edited by

                            @Phaedrux your macro is quite nice. I adapted it to my needs but I am a little confused:
                            Considering "my" way to measure repeatability (see above) what is the benefit from

                            • moving the probe away by X40 Y-40 at the end of each round of probing and
                            • lowering the bed to Z10 before probing - in addition to dive height?
                            1 Reply Last reply Reply Quote 0
                            • Phaedruxundefined
                              Phaedrux Moderator
                              last edited by

                              The X40 and Y-40 move is basically to negate the nozzle offset of the BLTouch, so that I am probing the same spot that the nozzle actually touches.

                              The bed move by 10 was basically done to ensure enough clearance and dive height while I was still narrowing down the dive height. It also gives a longer dive height to allow for the probe to settle. That plus the lower speeds is an attempt to give the probe the best chance of getting a repeatable measurement.

                              I also have a macro for manual bed leveling and then another for mesh grid measurement. I don't run these very often, but they are nice to have when you need them.

                              1_1538593590722_0_Grid Compensation Assist.g
                              0_1538593590721_0_Auto Bed Level Assist.g

                              And there's also this bundle for tuning:
                              https://forum.duet3d.com/topic/6181/tuning-macros-menus-accel-jerk-retraction-pressure-advance

                              Z-Bot CoreXY Build | Thingiverse Profile

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