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

    Motor stall detection as Z probe

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    11
    45
    10.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.
    • Mystaundefined
      Mysta
      last edited by

      Oops must have followed a link and forgot, was referring to endstop not probe. Have smart Effector for probing.

      1 Reply Last reply Reply Quote 0
      • DjDemonDundefined
        DjDemonD
        last edited by

        It works fine for endstops, but because it is not very accurate, and I can confirm this having an endstop-less delta running, you need to auto-calibrate after each homing or you will not have an accurate enough calibration to print. Not a particularly big problem, but it highlights that it won't work for most deltas as a z-probe. My cylinder delta is 400steps/mm as it is leadscrew driven on XYZ but this is still only a 40-microns-accuracy z probe which is a good factor of 4-8 out on a smart effector or piezo probe.

        Simon. Precision Piezo Z-Probe Technology
        www.precisionpiezo.co.uk
        PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

        Mystaundefined 1 Reply Last reply Reply Quote 0
        • Mystaundefined
          Mysta @DjDemonD
          last edited by

          @djdemond said in Motor stall detection as Z probe:

          It works fine for endstops, but because it is not very accurate, and I can confirm this having an endstop-less delta running, you need to auto-calibrate after each homing or you will not have an accurate enough calibration to print. Not a particularly big problem, but it highlights that it won't work for most deltas as a z-probe. My cylinder delta is 400steps/mm as it is leadscrew driven on XYZ but this is still only a 40-microns-accuracy z probe which is a good factor of 4-8 out on a smart effector or piezo probe.

          Yeah I'm excited to try out the smart effector, my arms finally arriving today. 500mm from Haydn. Do you have your calibrate script for endstop less? I definitely don't mind probing each print.

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

            @mysta said in Motor stall detection as Z probe:

            Yeah I'm excited to try out the smart effector, my arms finally arriving today. 500mm from Haydn. Do you have your calibrate script for endstop less? I definitely don't mind probing each print.

            For a script to home a delta without endstops, see the example macro file towards the end of https://duet3d.dozuki.com/Wiki/Stall_detection_and_sensorless_homing#Section_Configuring_sensorless_homing. This file is for testing homing without endstops. For actual use as a homing file you could simplify it. For example, you don't need the M574 commands to change the endstop type because you can just set stall detect endstops in config.g if that's the only type of endstop you ever use.

            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
            • Mystaundefined
              Mysta
              last edited by

              Thanks, I'll start from there. I left the endstops on my frame just in case but I'm really interested in using some of the new functionality of the 2660

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

                In firmware 2.0beta 1 you can now set Z probe type 10 in the M558 command, which selects a Z motor stall-detect probe. As I explained previously, this will only work if your Z steps/mm is high enough for 1 motor full step to provide sufficient resolution, and if you can find a combination of M915 stall detect settings and motor current that you can detect the stall before the Z motor drives the nozzle too hard into the bed.

                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
                • DjDemonDundefined
                  DjDemonD
                  last edited by DjDemonD

                  M80 ;PSU ON
                  ; Homing file for RepRapFirmware on Large Kossel
                  ; Sensorless Homing test file for RepRapFirmware on Kossel
                  M915 X Y Z S2 F1 R0 ;set stall detect drives, S-threshold (-64 to 63), F1 filtered, R-log only
                  M400 ; make sure everything has stopped before we make changes
                  M574 X2 Y2 Z2 S3 ; set endstops to use motor stall
                  M913 X30 Y30 Z30 ; reduce motor current to 50% to prevent belts slipping
                  G91 ; use relative positioning
                  G1 S1 X700 Y700 Z700 F2000 ; move all carriages up 700mm, stopping at the endstops
                  G1 Z-5 F2000 ; down a few mm so that we can centre the head
                  G90 ; back to absolute positioning
                  M400 ; make sure everything has stopped before we reset the motor currents
                  M913 X100 Y100 Z100 ; motor currents back to normal
                  G1 X0 Y0 F2000 ; centre the head and set a reasonable feed rate
                  M574 X2 Y2 Z2 S1 ; set endstops back to normal so that homedelta.g works

                  You just need to experiment with M915 R to get the threshold right.

                  Simon. Precision Piezo Z-Probe Technology
                  www.precisionpiezo.co.uk
                  PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

                  1 Reply Last reply Reply Quote 0
                  • bartolomeusundefined
                    bartolomeus
                    last edited by

                    I like experimenting and would like to give this a go. I am building a corexy, with 3200steps/mm on Z with1/16th microstepping. I could also go for a 0.9 stepper motor and get 6400 steps/mm at 1/16th or 3200 at 1/8th, or 1600 at 1/4 and so on.

                    With a 1.8 stepper, accuracy would be 0.005
                    With a 0.9 stepper, accuracy would be 0.0025

                    What would be the best choice?

                    1 Reply Last reply Reply Quote 0
                    • DjDemonDundefined
                      DjDemonD
                      last edited by

                      Well for Z positional accuracy at 10 microns would be fairly good, 5 microns even better, 2.5 microns is probably excessive, but then I cannot see a reason to choose 1.8 deg motor for Z, it never has to move fast.

                      Simon. Precision Piezo Z-Probe Technology
                      www.precisionpiezo.co.uk
                      PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

                      1 Reply Last reply Reply Quote 0
                      • bartolomeusundefined
                        bartolomeus
                        last edited by

                        How about steps/mm with a 0.9degree. Is 6400 doable for the duet or should I then use 1/8th microstepping, or does this have no effect at all? And then, are there any downsides to 1/8th microstepping?

                        1 Reply Last reply Reply Quote 0
                        • DjDemonDundefined
                          DjDemonD
                          last edited by

                          6400 steps/mm is doable and given the very small amount of movement required in z it won't overly tax the processor. However in terms of stall detect only full steps count so 0.9 degree is preferable.

                          1/8th is noisier. But try it, its very interesting to see the differences in noise, speed and (if you look really hard) print quality between different microstepping modes.

                          Simon. Precision Piezo Z-Probe Technology
                          www.precisionpiezo.co.uk
                          PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

                          1 Reply Last reply Reply Quote 0
                          • bartolomeusundefined
                            bartolomeus
                            last edited by

                            Cool, thanks!

                            1 Reply Last reply Reply Quote 0
                            • Francisco3Dundefined
                              Francisco3D
                              last edited by Francisco3D

                              Hi @dc42!

                              I have been able to successfully autohome X, Y and Z using sensorless homing (I am working with a coreXY).

                              Currently I am experimenting with manual bed levelling assistant using StallGuard but I don't know how to correctly input StallGuard parameters into probing. My code is as shown below. Am I missing something?

                              config.g file
                              ...
                              M671 X111:11:211 Y14.2:194:193 P0.7
                              ...
                              M558 P10 X0 Y0 Z0
                              ...

                              bed.g file

                              G28
                              M915 Z H200 S3 F0 R1
                              G30 P0 X111 Y14.2 Z-99999
                              G30 P1 X11 Y194 Z-99999
                              G30 P2 X211 Y193 Z-99999 S3

                              I have uploaded firmware 2.0 beta 2

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

                                That looks correct to me, although you may need to adjust the probing speed (F parameter in M558) and you may also wish to adjust the travel speed between probe points (T parameter).

                                Getting the Z motors to stall without applying excessive force to the nozzle will be a delicate balance. You will probably need to use M913 to reduce the Z motor current temporarily.

                                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
                                • Francisco3Dundefined
                                  Francisco3D
                                  last edited by

                                  Thank you @dc42

                                  The manual bed levelling assistant is working smoothly now! Great stuff!

                                  We are looking onto the possibility of implementing fully automated bed levelling using 5V servomotors. Is it possible to connect them to the original duet wifi board. If so, where should we connect them?

                                  Thanks, good job

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

                                    If the servomotors have stepper motor style step/dir/enable inputs then you can connect them to the expansion connector.

                                    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
                                    • carlossprundefined
                                      carlosspr
                                      last edited by carlosspr

                                      I have tested the feature on 2.0(RTOS)beta2 and it works.
                                      I have a Cartesian printer with dual Z axis connected in Serial. The problem is that the Force of the nozzle when it hits the bed overshoots a little bit the bed due to the springs and that makes unfeasible for mesh bed leveling.

                                      However, an excellent finding is that G30 executed on the same X,Y coordinates gives exactly the same result. As a test I run G30 S-1 20 times and I got the same result all 20 times on the same spot with 0 standard deviation!. I think that the overshoot is to the next "full step" and this is allowing a very good accuracy.

                                      Basically is an excellent Z-min switch that does not require calibration and takes into account thermal expansions.

                                      I have made a small script to use Z stall before G30 and change back to NPN capacitive probe for bed leveling. The results are excellent, I do not have to worry about the Z offset of the probe because it is only used to level a plane and the repeat ability of the Stall always on the same spot is extremely repetitive. First layer always perfect.

                                      My script in case that someone is interested.

                                        ;find_zero_and_level.g
                                        G90                ;absolute positioning
                                        G1  X110 Y105 Z10 F4000 ; Always probe on the same spot
                                        M558 P10 X0 Y0 Z0 H2 F600 T5000	    ; Enable Stall Z probe
                                        G31 X0 Y0 Z-0.77 P200           ; Set Z probe trigger value, offset and trigger offset (overshoot due to springs)
                                        M574 Z1 S3         	    	; set Z-min to use motor StallGuard
                                        M913 Z20   		      	; reduce motor current to 20%
                                        M201 Z30			; Reduce acceleration mm/s2
                                        M915 Z S-2.9 F0 R0		; Set StallGuard sensitivity for endstop homing
                                        G30; Find the bed Z=0 reference
                                        G1 Z2
                                        G30 S-1 ; do a couple of repeteability tests
                                        G1 Z2
                                        G30 S-1 ;
                                        G1 Z2
                                        G30 S-1 ;
                                        G1 Z2
                                        G30 S-1 ;
                                        M913 X100   		      	; restore current to 100%
                                        M201 Z300 			; Restore acceleration
                                      
                                        ; Revert back to Capacitive Z probe NPN
                                        M558 P4 X0 Y0 Z0 H3 I1 F300 T5000	  
                                        G31 X23.5 Y5 Z1.04 P200           ; Set Z probe trigger value, offset and trigger height.
                                        G29 S2  	; Clear any bed leveling compensation
                                        G29 S0 			 ; Run probing sequence defined by M557 on the config.g
                                        M374 			 ; Save calibration data in sys/heightmap.csv
                                      

                                      I have added M98 P/sys/find_zero_and_level.g on the start G-Code script on the slicer and the results are more than satisfactory for me.

                                      1 Reply Last reply Reply Quote 1
                                      • bartolomeusundefined
                                        bartolomeus
                                        last edited by

                                        So, I had motor stall configured beautifully as z probe with 30% motor current. I tested with a macro, and when it was working nicely I put the parameters in config.g and homez.g.

                                        After that, I couldn't get it working as beautifully again. My best guess is the motor was getting warm and that was affecting sensitivity. Is that possible?

                                        Another thing. I read higher homing speeds work better. I am now at 380mm/min. If I go faster the motor really starts screeching/whining (3200 steps/mm). Is that a bad thing? Should I try 1/8th microstepping and 1600 steps/mm and then increase homing speed?

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

                                          I never expected it to be possible to use motor stall for Z homing on a Cartesian or CoreXY printer, and I am surprised that several Duet users have got it working. If you have a Z probe (as most 3D printers do), that is the obvious device to use for Z homing.

                                          If you do want to use stall detect Z homing, here are some tips:

                                          • Stall detection gives false reports at low speeds, so there is a cut-off speed below which stall detection is disabled. The default is 200 full steps per revolution although you can change it. So your homing speed needs to correspond to at least this value. Changing microstepping won't help.

                                          • The stall must occur without applying excessive force between the nozzle and the bed. That is why reducing motor current during homing is recommended.

                                          • When the motors are hot, the voltage drop due to resistance increases. This voltage drop is in phase with the motor current, making it indistinguishable from the back emf when approaching the motor stall. So the stall detection threshold will need to be higher when the motors are hot.

                                          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
                                          • Bravojulundefined
                                            Bravojul
                                            last edited by

                                            I was thinking of stall detection to calibrate z probe offset (G31 Z value). Is it possible to do that. I would continue to probe using my inductive sensor.

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