Automatic Z offset Calculation



  • I would like to implement a feature that will calculate my nozzle to bltouch offset.

    The idea i am thinking of is i can have a metal plate mounted next to bed or clip on bed.

    This can be wired to a switch input that is normally open.

    home Z till nozzle touches plate, this giving me a Z=0

    Then use BLtouch to home on that metal plate.

    Then all i need is the difference in mm between the 2 Z homes.

    And that is my Z Offset.

    I am trying to make the 3d printer as simple as possible to operate



  • You mean like the procedure described here? https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height

    I use a macro to automate the process, with no need for additional hardware.

    ; Clear compensation map and Z probe trigger height
    ;
    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.
    ;M561			; Disable any current bed compensation
    G29 S2			; Clear mesh bed compensation parameters
    G29 S2			; Clear mesh bed compensation parameters
    G31 Z0			; Reset Z probe trigger height
    
    ; home all axis
    ;
    G28			; Home all axis
    G90			; Absolute positioning
    T0			; Activate first tool
    
    ; Set lower speeds for Z homing and lower Z motor current
    ;
    M566 Z10			; Set maximum instantaneous speed changes (mm/min) (Jerk)
    M203 Z300			; Set maximum speeds (mm/min)
    M201 Z10	 		; Set maximum accelerations (mm/s^2)
    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
    
    ; Move nozzle to center of bed at z10
    ;
    M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
    G1 Z1			; Drop bed for nozzle clearance
    G1 X150 Y110 Z2 F4000	; Move to bed center
    
    ; Reset z to 5 to allow jogging up to touch bed to nozzle
    ;
    G92 Z5
    
    ; Dialog to allow user to jog z to touch nozzle to bed gently and then move Z down 10
    ;
    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
    
    M104 S0		; Set nozzle to 0 and release
    
    ; Move probe to center of bed and get probe trigger heights
    ;
    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
    
    M291 P"Heights will be found in gcode console if logging successful gcode is enabled" R"Did you remember to enabled gcode logging?" S3
    
    ; G30 S-1 10 times
    ;
    ; 1
    G1 Z10
    G30 S-1
    
    ; 2
    G1 Z10
    G30 S-1
    
    ; 3
    G1 Z10
    G30 S-1
    
    ; 4
    G1 Z10
    G30 S-1
    
    ; 5
    G1 Z10
    G30 S-1
    
    ; 6
    G1 Z10
    G30 S-1
    
    ; 7
    G1 Z10
    G30 S-1
    
    ; 8
    G1 Z10
    G30 S-1
    
    ; 9
    G1 Z10
    G30 S-1
    
    ; 10
    G1 Z10
    G30 S-1
    
    
    ; Turn off heaters
    ; 
    M104 S0		; Set nozzle to 0 and release
    M140 S0		; Set bed to 0 and release
    M913 Z85	; Return Z motor current to normal
    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
    


  • Thanks for that.

    I wanted to get away from the user trying to jog.

    Your process will work, how ever having experienced a wide variety of customers and their abilities,
    i would like a one touch solution

    That was the reason of using a plate to make electrical contact with the nozzle.

    What one user assumes is touching the plate, another user will think there should be some pressure against nozzle, so it opens it up to a variety of settings.

    Since hardware like the BLtouch has come out, it has made 3d printers a lot more user friendly,
    how ever the process of Z-Offset is one of my greatest customer support issues.

    We produce a lot of custom made larger format printers, so bed levelling becomes a critical process as opposed to common 200x200mm and smaller build plates.

    We have recently switched over to Duet/Reprap controllers, so slowly getting familiar with it.



  • @ozgiac If I understand correctly, you are trying to automate the process of calculating the offset from the BL Touch probe trigger point to the nozzle, to maker it easier for end users of your printers.

    That being the case, then have you considered doing away with the BL Touch and using the nozzle itself as the probe? Then there is no offset to worry about.

    It can be accomplished a couple of ways. One way is to use a piezo sensor, similar to the smart effector. Another way (which is how I do it) is to use a "simple" precision positioning switch but for that the mechanics are quite complicated as the hot end needs to be able to move a mm or so in Z but be constrained from any other movement in X or Y.

    Either way involves a bit of re-designing but once that's done you'll have a reliable and trouble free way of homing Z which is fairly "user error proof" and may reduce production costs.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.