Z probe was not triggered during probing move - bed crash



  • On my Duet 3, I am experiencing problems with the BLTouch probe not deploying, and the nozzle therefore crashing the bed. I have not found determined exactly what causes it, but I can reproduce it by doing the following:

    1. Home all
    2. G32 - True bed levelling
    3. Start a print
    4. Pause the print
    5. Cancel the print
    6. Home all again - Here the probe won't deploy, it will throw an error, but the bed will continue to move up until it crashes the nozzle

    Here is a video showing off the above sequence: https://www.youtube.com/watch?v=X0Y9zfQB8J0

    The error in my console is:

    Error: Z probe was not triggered during probing move
    Error: Homing failed
    

    The probe is a genuine BLTouch 3.1 connected to IO_7, and I can confirm it is wired correctly. I have also checked the crimps, and tested for continuity, I cannot find any issues with the wiring. I have also checked the pin itself which looks fine, and it is completely clean (it's brand new too). Also went through all of this, and altered my configs based on it: https://duet3d.dozuki.com/Wiki/BLTouch_Troubleshooting?fbclid=IwAR0hujQNUo7lwXghMRnpp-jbP4PYaaVPBfTyRK0iT_9Y5nwZFxxtn6oxJ7c

    I am hoping there is a way to make sure the Duet at least stops the bed from continuing to move up when the probe does not deploy to avoid crashes. But also obviously want to make sure the probe always deploys when it has to.

    My configurations

    config.g:

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 14 2020 14:49:36 GMT+0200 (Centraleuropæisk sommertid)
    
    ; General preferences
    G90                                                   ; send absolute coordinates...
    M83                                                   ; ...but relative extruder moves
    M550 P"CoreXY"                                        ; set printer name
    M669 K1                                               ; select CoreXY mode
    
    ; Network
    M540 PBE:62:38:32:53:34                               ; set custom MAC address
    M552 P0.0.0.0 S1                                      ; enable network and acquire dynamic address via DHCP
    M586 P0 S1                                            ; enable HTTP
    M586 P1 S0                                            ; disable FTP
    M586 P2 S0                                            ; disable Telnet
    
    ; Drives
    M569 P0.0 S0                                          ; X motor - physical drive 0.0 goes forwards
    M569 P0.5 S0                                          ; Y motor - physical drive 0.5 goes forwards
    M569 P0.1 S1                                          ; Z motor 1 - physical drive 0.1 goes forwards
    M569 P0.3 S1                                          ; Z motor 2 - physical drive 0.2 goes forwards
    M569 P0.4 S1                                          ; Z motor 3 - physical drive 0.2 goes forwards
    M569 P0.2 S1                                          ; Hemera motor - physical drive 0.2 goes forwards
    M584 X0.0 Y0.5 Z0.4:0.1:0.3 E0.2                      ; set drive mapping - X Y frontLeftZ FrontRightZ RearZ E
    
    M671 X-35:335:150 Y173:173:335 S15 	                  ; Bed rotational center - front left, front right and rear center
    
    M350 X16 Y16 Z16 E16 I1                               ; Microstepping with interpolation
    M92 X160.00 Y160.00 Z800.00 E381.81                   ; Steps/mm
    
    M566 X600 Y600 Z200 E3600                             ; Maximum jerk speeds (mm/min)
    M203 X24000 Y24000 Z900 E3600.00                      ; Maximum speeds (mm/min)
    ;M203 X24000 Y24000 Z200 E3600.00                      ; Maximum speeds (mm/min) LOW Z SPEED FOR TESTING
    M201 X1750 Y1750 Z250 E1500                           ; Accelerations (mm/s^2)
    M906 X1260 Y1260 Z1260 E1000 I30                      ; Motor currents (mA) - E3D HT Motor rated at 1680 => 75% = 1260 mA | Hemera rated at 1330 => 75% = 1000 | 30% idle factor
    M84 S30                                               ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                      ; set axis minima
    M208 X250 Y250 Z250 S0                                ; set axis maxima
    
    ; Endstops
    M574 X1 S3                                            ; configure sensorless endstop for low end on X
    M574 Y1 S3                                            ; configure sensorless endstop for low end on Y
    M574 Z0                                               ; configure BLTouch as Z endstop
    
    ; Z-Probe
    M950 S0 C"io7.out"                                    ; create servo pin 0 for BLTouch
    M558 P9 C"^io7.in" F100 H5 R0.2 T6000 A3 B1           ; set Z probe type to bltouch and the dive height + speeds
    G31 P25 X1 Y24 Z0.80                                  ; set Z probe trigger value, offset and trigger height
    M557 X15:250 Y15:250 S40                              ; define mesh grid
    
    ; Heaters
    M308 S0 P"temp0" Y"thermistor" T100000 B3950          ; configure sensor 0 as thermistor on pin temp0
    M950 H0 C"out0" T0                                    ; create bed heater output on out0 and map it to sensor 0
    M307 H0 B0 S1.00                                      ; disable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                               ; map heated bed to heater 0
    M143 H0 S200                                          ; set temperature limit for heater 0 to 200C
    M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp1
    M950 H1 C"out1" T1                                    ; create nozzle heater output on out1 and map it to sensor 1
    M307 H1 B0 S1.00                                      ; disable bang-bang mode for heater  and set PWM limit
    M143 H1 S300                                          ; set temperature limit for heater 1 to 300C
    
    ; Fans
    M950 F0 C"out7" Q500                                  ; create fan 0 on pin out7 and set its frequency
    M106 P0 S0 H-1                                        ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out4" Q500                                  ; create fan 1 on pin out4 and set its frequency
    M106 P1 S1 H1 T45                                     ; set fan 1 value. Thermostatic control is turned on
    
    ; Tools
    M563 P0 S"Hemera" D0 H1 F0                            ; define tool 0
    G10 P0 X0 Y0 Z0                                       ; set tool 0 axis offsets
    G10 P0 R0 S0                                          ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    T0                                                    ; select first tool
    M501												  ; load saved data from non volatile memory
    
    

    homeall.g:

    ; homeall.g
    ; called to home all axes
    ;Prepare for homing
    M400                         ; Finishes all current moves and and thus clears the buffer
    G91                          ; Set to Relative Positioning
    G1 Z5 F1200 H2               ; Move the bed down slightly
    
    ;Prepare for sensorless homing
    M913 X30 Y30                 ; Set motor currents to 50% 
    M201 X500 Y500               ; Set acceleration on X/Y to 500 to improve reliability of stall detection
    M915 X Y S1 R0 F0 H400       ; Configure motor stall detection on X and Y as they work together on corexy - sensitivity 1, don’t take action, don’t filter, 400steps/sec
    
    
    ;Sensorless homing X
    G1 H1 X-300 F4000            ; Move 300 mm left, stopping at the endstop - Speed is 4000 which is about twice the Hmin due to two motors working together on Corexy
    G1 X30 F2000                 ; Move 30 mm out from Xmin
    
    ;Sensorless homing Y
    G1 H1 Y-300 F4000            ; Move 300 mm back, stopping at the endstop - Speed is 4000 which is about twice the Hmin due to two motors working together on Corexy
    G1 Y30 F2000                 ; Move 30 mm out from Xmin
    
    ;End of sensorless homing
    M913 X100 Y100               ; Set motor currents back to 100%
    M201 X2000 Y2000             ; Set acceleration back to 2000
    G90                          ; Set to Absolute Positioning
    
    ;BLTouch home Z
    G1 X150 Y117 F12000 		 ; Move probe to middle of bed
    M558 F500 					 ; Set the first probing speed
    G30 						 ; First Z probe
    M558 F50  					 ; Set a slower probing speed
    G30							 ; Second Z probe
    
    ;End of homing
    G90                          ; Ensure we are in Absolute Positioning
    

    bed.g:

    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    M561 						; Clear any bed transform
    G30 P0 X35 Y173 Z-99999  	; Probe near front-left leadscrew
    G30 P1 X265 Y173 Z-99999 	; Probe near front-right leadscrew
    G30 P2 X150 Y290 Z-99999 S3 ; Probe near rear-center leadscrew and adjust bed parallel to corexy kinematics
    G1 X15 Y15 F12000			; Move close to home
    G29 S1						; Load heightmap.csv
    

    homex.g:

    ; homex.g
    ; called to home the X axis
    ;
    ;Prepare for homing
    M400                         ; Finishes all current moves and and thus clears the buffer
    G91                          ; Set to Relative Positioning
    G1 Z5 F1200 H2               ; Move the bed down slightly
    
    ;Prepare for sensorless homing
    M913 X30 Y30                 ; Set motor currents to 50% 
    M201 X500 Y500               ; Set acceleration on X/Y to 500 to improve reliability of stall detection
    M915 X Y S1 R0 F0 H400       ; Configure motor stall detection on X and Y as they work together on corexy - sensitivity 1, don’t take action, don’t filter, 400steps/sec
    
    ;Sensorless homing X
    G1 H1 X-300 F4000            ; Move 300 mm left, stopping at the endstop - Speed is 4000 which is about twice the Hmin due to two motors working together on Corexy
    G1 X30 F2000                 ; Move 30 mm out from Xmin
    
    ;End of sensorless homing
    M913 X100 Y100               ; Set motor currents back to 100%
    M201 X2000 Y2000             ; Set acceleration back to 2000
    
    ;End of homing
    G90                          ; Set to Absolute Positioning
    

    homey.g:

    ; homey.g
    ; called to home the Y axis
    ;
    ;Prepare for homing
    M400                         ; Finishes all current moves and and thus clears the buffer
    G91                          ; Set to Relative Positioning
    G1 Z5 F1200 H2               ; Move the bed down slightly
    
    ;Prepare for sensorless homing
    M913 X30 Y30                 ; Set motor currents to 50% 
    M201 X500 Y500               ; Set acceleration on X/Y to 500 to improve reliability of stall detection
    M915 X Y S1 R0 F0 H400       ; Configure motor stall detection on X and Y as they work together on corexy - sensitivity 1, don’t take action, don’t filter, 400steps/sec
    
    ;Sensorless homing Y
    G1 H1 Y-300 F4000            ; Move 300 mm back, stopping at the endstop - Speed is 4000 which is about twice the Hmin due to two motors working together on Corexy
    G1 Y30 F2000                 ; Move 30 mm out from Xmin
    
    ;End of sensorless homing
    M913 X100 Y100               ; Set motor currents back to 100%
    M201 X2000 Y2000             ; Set acceleration back to 2000
    
    ;End of homing
    G90                          ; Ensure we are in Absolute Positioning
    

    homez.g:

    ; homez.g
    ; called to home the Z axis
    ;
    ;Prepare for homing
    G91                          ; Set to Relative Positioning
    G1 Z5 F6000 H2               ; Move the bed down slightly
    G90                          ; Set to Absolute Positioning
    
    ;Probe Z
    G1 X150 Y150 F4000  		 ; Move probe to middle of bed
    G30 						 ; First Z probe
    G1 H2 Z5 F400				 ; Lift Z relative to current position
    

    deployprobe.g:

    ; deployprobe.g
    ; called to deploy a physical Z probe
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 14 2020 14:49:36 GMT+0200 (Centraleuropæisk sommertid)
    M280 P0 S10 ; deploy BLTouch
    

    retractprobe.g:

    ; retractprobe.g
    ; called to retract a physical Z probe
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 14 2020 14:49:36 GMT+0200 (Centraleuropæisk sommertid)
    M280 P0 S90 ; retract BLTouch
    

    *** Note: I have another thread based on this issue, but I decided to make this new post to make it more specific to the issue. The other one included alot about my sensorless homing for X and Y, which works perfectly now.


  • Moderator

    Is the pause/cancel part required for duplication? Does the probe consistently retract and deploy otherwise?

    Can you post the contents of your pause/cancel macros as well? If they are empty or don't exist can you create them and test again?



  • @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    Is the pause/cancel part required for duplication? Does the probe consistently retract and deploy otherwise?

    Unfortunately, it is not the only situation it happens. I just found out I can reproduce it every single time by doing this.

    @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    Can you post the contents of your pause/cancel macros as well? If they are empty or don't exist can you create them and test again?

    pause.g:

    ; pause.g
    ; called when a print from SD card is paused
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 14 2020 14:49:37 GMT+0200 (Centraleuropæisk sommertid)
    M83              ; relative extruder moves
    G1 E-2 F2500     ; retract 10mm of filament
    G91              ; relative positioning
    G1 Z5 F5000      ; lift Z by 5mm
    G90              ; absolute positioning
    G1 X20 Y20 F6000 ; go to X=20 Y=20
    

    By cancel, you mean stop.g right? I have it, but it's empty:

    ; stop.g
    ; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 14 2020 14:49:37 GMT+0200 (Centraleuropæisk sommertid)
    


  • This post is deleted!

  • Moderator

    @pandaym said in Z probe was not triggered during probing move - bed crash:

    By cancel, you mean stop.g right? I have it, but it's empty:

    No. those are two different files. Stop.g is called by M0 if present. This can be used in the slicer end gcode to place your after print commands.

    cancel.g may not be present and if not, there is a default behaviour, but I'm not exactly sure what that is. If you create a cancel.g file you can add commands for what you want to happen when you've canceled a print. For instance in mine a reset some values and allow things to cool in preparation for restarting a print.:

    ; cancel.g
    ;
    ; Run when the print is paused, and then canceled.
    ;
    
    G10 P0 R0 S0		; Set hotend temp to 0
    M140 S0			; Set bed temp to 0
    M106 S255 		; Fan at 100 to cool nozzle and bed
    M220 S100		; Set speed factor back to 100% in case it was changed
    M221 S100		; Set extrusion factor back to 100% in case it was changed
    M204 P1000 T4000	; Set printing and travel accelerations
    M566 X900 Y900 Z30 	; Set maximum instantaneous speed changes (mm/min) (Jerk)
    G28 XY			; home XY
    M84			; turn off steppers
    G4 S60			; wait 1 minute for nozzle to cool
    M107			; turn off the fan
    

    So for testing I was suggesting you create a cancel.g file and put some commands in it. But if you are able to reproduce the problem without doing the pause/cancel there may be no point.

    @pandaym said in Z probe was not triggered during probing move - bed crash:

    I am hoping there is a way to make sure the Duet at least stops the bed from continuing to move up when the probe does not deploy to avoid crashes. But also obviously want to make sure the probe always deploys when it has to.

    The problem with that is that the firmware may not be aware the pin hasn't deployed. As far as it's concerned, the request for pin as been made and the probing is in progress. Normally, if the pin is blocked and can't deploy the BLtouch may go into an error state. But if the BLTouch isn't getting the command to deploy the pin then there is no feedback to detect. The only way to safeguard in the event of a head crash is to lower the motor current during homing.

    It really sounds like there is an intermittent wiring problem on the servo connection.

    Can you do some tests with the BLTouch self-test command? It should place it into a deploy and retract loop for a few times. This used to be continuous until canceled which was nice to be able to test the pin for reliability, but in recent v3 of the bltouch it only does a few tests and stops. So you may need to create a macro that has many of the commands in a row, or even just many M401 and M402 commands in a row to confirm if the probe will reliably deloy time after time. Also test with the printhead in different locations incase it's a bad wire connection that gets triggered from a certain position.



  • @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    Can you do some tests with the BLTouch self-test command? It should place it into a deploy and retract loop for a few times. This used to be continuous until canceled which was nice to be able to test the pin for reliability, but in recent v3 of the bltouch it only does a few tests and stops. So you may need to create a macro that has many of the commands in a row, or even just many M401 and M402 commands in a row to confirm if the probe will reliably deloy time after time. Also test with the printhead in different locations incase it's a bad wire connection that gets triggered from a certain position.

    I found out that if you run self-test, then when it stops, you can run M401, then M402, then clear alarm and it allows you to run self test again. So I made it loop and moved the head around a ton. It did not fail once.

    @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    So for testing I was suggesting you create a cancel.g file and put some commands in it. But if you are able to reproduce the problem without doing the pause/cancel there may be no point.

    I have made a cancel.g based on yours:

    ; cancel.g
    ;
    ; Run when the print is paused, and then canceled.
    ;
     
    G10 P0 R0 S0		; Set hotend temp to 0
    M140 S0				; Set bed temp to 0
    M106 S255 			; Fan at 100 to cool nozzle and bed
    M220 S100			; Set speed factor back to 100% in case it was changed
    M221 S100			; Set extrusion factor back to 100% in case it was changed
    G28 XY				; home XY
    M84					; turn off steppers
    G4 S60				; wait 1 minute for nozzle to cool
    M107				; turn off the fan
    

    Actually, since I did that, I tested 3 times with the reproducible case, and now I could not make it fail anymore. Maybe solved?

    @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    The only way to safeguard in the event of a head crash is to lower the motor current during homing.

    I have added to my homeall and homez that my Z motors drop to 50% current during homing. At 40% they don't run up well at all. This is a great idea, and of course a good way to ensure that if it happens, it might only be the PEI sheet that is damaged, nothing too serious.


  • Moderator

    Please keep us posted on if it continues to happen and if you remove the cancel.g file if that causes it to happen reliably again.

    In addition to the motor current drop you can also add the BLTouch alarm release command to the start of homeall to clear any error state and retract the pin as a precaution. I think I may have mentioned that already.



  • @Phaedrux said in Z probe was not triggered during probing move - bed crash:

    Please keep us posted on if it continues to happen and if you remove the cancel.g file if that causes it to happen reliably again.

    In addition to the motor current drop you can also add the BLTouch alarm release command to the start of homeall to clear any error state and retract the pin as a precaution. I think I may have mentioned that already.

    Sorry, I did not press submit on the answer I had written here.

    I disassembled the printer to redo some wiring etc. to finish it off. When I am done, I will continue testing it, and I will get back if it keeps happening. Also I will add the alarm release, just to have an extra precaution.

    Thanks a lot for the help!


Log in to reply