Bl-touch and distance printing nozzle



  • Hello
    I'm struggling against this calibration with my Bl.touch.
    Here is the sequence that I'm following :

    • Home XY

    • Carriage at the center of the bed manually jogged

    • Piece of paper and I manually jog the nozzle to the paper.

    • G92 Z0

    • I manually jog the nozzle away from the bed

    • I test G31 S-1, note the value and insert in my config.g file (G31 P500 ....)

    • Save and restart

    Where am I wrong ?
    When I'm launching a print, nozzle is still away from the bed...
    Thanks for help



  • I have the exact same problem with an inductive probe and wasted the better part of last evening with it (instead of trying this: https://forum.duet3d.com/topic/18223/auto-adjust-z-offset).
    To successfully get a print going, I always had to re-adjust Z=0 after the homing and bed probing, or the nozzle will be .35mm too high. This value is pretty much consistent 90% of the time, so I didn't check the height after a while and just added

    M564 S0
    G1 Y-0.35
    G92 Z0
    

    To the homez.g file...

    Varying the Z-offset (set with G31 in config.g) doesn't affect the outcome and the Z=0 error is always consistent. The offset only affects values in the bed compensation map and seems to be subtracted from those values for Z=0, so no matter what Z-offset I use (positive or negative and even absurd values like 10mm); the nozzle always is .35mm too high at Z=0.

    Even when disabling bed compensation the Z-error is persistent and always is present immediately after homing Z with G30, so I suspect there's a bug with calculating/setting Z=0 via that command.
    I've printed a bracket for a Z-endstop switch to set Z=0 by triggering that switch with the nozzle (as I was already planning to do), so I can completely avoid depending on some calculation for Z=0 and use the Z-probe only for bed leveling and compensation.



  • G31 most certainly will work .... have you checked your config-overwrite.g file to see if there is maybe a different G31 command there that overwrites the value in config.g ?
    I am sure other people will chime in with other suggestions.



  • So am I, I'm getting crazy with this Z=0
    I double checked the config-overwrite.g file and I don't have such a command.



  • The way I handled this issue in the past is to use babysteps (on the Duet web interface) to bring the nozzle down to the perfect height (while printing the first layer). This would give me the amount that my Z offset was off by. I would then add/subtract (invariably I would pick the wrong procedure when choosing between adding or subtracting) this offset to the G31 Z offset in config.g. You then need to reset the board to activate the new setting and you should be golden.
    There is a macro available for doing that but I think at this point you are better off doing it manually. No sense in adding more complications to an already confusing/frustrating situation.



  • @jens55
    Yes indeed I use babystepping on my Sparklab (Repetier) and it goes perfect.



  • Hi,

    What is the sequence of commands do you execute to start a print?

    Frederick



  • @fcwilt
    SD card (from Panel Due) , I click on the file and it prints.
    I use Simplify 3D to export my gcode file.

    I noticed that I had a bad steps/mm for my z motors. Now I have 800 steps/mm



  • Not saying it's wrong but I have 80 steps per mm for my printer ....



  • I just wired the Z-endstop switch and did some testing...

    The Z-switch is mounted 10mm next to the bed (bedsize 330x330, probing position 341,310) and is adjusted to exactly match the bed height in that corner. Homing Z is 100% accurate now and after probing I can reliably lower the nozzle to 0 and it is exactly just touching the bed surface in that corner.

    BUT: as soon as I run mesh compensation (G29) I get an error of ~0.5mm (higher) for that corner. I've checked the trigger height manually and it is at 1.44-1.46mm height, but no matter what I set in the config.g via G31, e.g. G31 P500 X0 Y0 Z1.45; the .5mm error is always present after running G29. I also tried absurd values like 5 or 10mm and even negative ones, the nozzle is now always ~.45-.5 over the bed after running G29.

    The Tool doesn't have any offsets set (G10 P0 X0 Y0 Z0) and in config-override.g only the heater parameters are present (M307)

    Here's my 'homez.g':

    M558 P1 C"!zprobe.in" H15 A5 F600 T25000		; increase dive height
    
    G90	
    G30 P0 X50 Y165 Z-99999 ; probe near a leadscrew
    G30 P1 X350 Y165 Z-99999 S2 ; probe near a leadscrew
    M558 P1 C"!zprobe.in" H5 A5 F600 T25000			; reduce dive height after adjusting the bed
    G90						; absolute positioning
    
    G1 X340.8 Y310 F18000
    G1 H1 Z-350 F600 ; move quickly to X axis endstop and stop there (first pass)
    G1 Z5 F1200       ; go back a few mm
    G1 H1 Z-6 F300   ; move slowly to X axis endstop once more (second pass)
    G92 Z0 			; G1 H1 sometimes doesn't set Z=0???
    G1 H2 Z15 F1200   ; lower Z again
    G90                ; absolute positioning
    
    G1 X0 Y330 F18000				; move printhead to the back
    

    and config.g:

    ; General preferences
    G90                                           ; send absolute coordinates...
    M83                                           ; ...but relative extruder moves
    M550 P"x5sapro"                               ; set printer name
    M669 K1                                       ; select CoreXY mode
    
    ; PanelDue
    M575 P1 S1 B57600 
    
    ; Network
    M552 S1                                       ; enable network
    M586 P0 S1                                    ; enable HTTP
    M586 P1 S0                                    ; disable FTP
    M586 P2 S0                                    ; disable Telnet
    
    ; Drives
    M569 P0 S1 F12                                   ; XY 1 physical drive 0 goes forwards
    M569 P1 S1 F12                                   ; XY 2 physical drive 1 goes forwards
    M569 P2 S0 F12                                   ; invert Z1
    M569 P3 S0 F12                                   ; invert E0
    M569 P4 S0 F12					; invert Z2
    M584 X0 Y1 Z4:2 E3                              ; set drive mapping
    M671 X-90:410 Y165:165 S50							; set X and Y offsets of lead screws
    M350 X16 Y16 Z16 E16 I1                       ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z400.00 E393.88             ; set steps per mm
    M566 X300.00 Y300.00 Z300.00 E600.00
    M203 X48000.00 Y48000.00 Z3000.00 E3000.00    ; set maximum speeds (mm/min)
    M201 X8000.00 Y8000.00 Z250.00 E1000.00       ; set accelerations (mm/s^2)
    M906 X1050 Y1050 Z950 E650 I30                  ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                       ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y-8 Z0 S1                              ; set axis minima
    M208 X350 Y329 Z400 S0                        ; set axis maxima
    
    ; Endstops
    M574 X1 S1 P"!xstop"                           ; configure active-high endstop for low end on X via pin xstop
    M574 Y1 S1 P"!ystop"                           ; configure active-high endstop for low end on Y via pin ystop
    M574 Z1 S1 P"!zstop"
    
    ; Z-Probe
    M558 P1 C"!zprobe.in" H20 A5 F600 T18000           ; set Z probe type to unmodulated and the dive height + speeds
    G31 P500 X0 Y0 Z1.85
    M557 X50:350 Y15:315 S75                      ; define mesh grid
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                         ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 B1 S1.00                              ; enable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                       ; map heated bed to heater 0
    M143 H0 S120                                  ; set temperature limit for heater 0 to 120C
    M308 S1 P"e0temp" Y"thermistor" T100000 B4100  ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1                          ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 B0 S1.00                              ; disable bang-bang mode for heater  and set PWM limit
    
    ; Fans
    M950 F0 C"fan0" Q500                          ; create fan 0 on pin fan0 and set its frequency
    M106 P0 C"Part Cooling" S0 H-1                ; set fan 0 name and value. Thermostatic control is turned off
    M950 F1 C"fan1" Q500                          ; create fan 1 on pin fan1 and set its frequency
    M106 P1 C"Hotend" S0.5 H1 T45                 ; set fan 1 name and value. Thermostatic control is turned on
    M950 F2 C"fan2" Q500                          ; create fan 2 on pin fan2 and set its frequency
    M106 P2 C"Board" S0 H-1                       ; set fan 2 name and value. Thermostatic control is turned off
    
    ; Tools
    M563 P0 S"CR-10 Hotend" D0 H1 F0              ; define tool 0
                                  ; set tool 0 axis offsets
    G10 P0 R0 S0                                  ; set initial tool 0 active and standby temperatures to 0C
    
    ; Miscellaneous
    M575 P1 S1 B57600                             ; enable support for PanelDue
    
    M501
    


  • (I couldn't edit my previous post b/c it was tagged as spam!?)

    I compared the manually determined trigger height to the one reported by G30 S-1 and it is always off by ~.45
    Actual trigger height at the point where Z is homed (and the probe is above the bed) as said is ~1.4mm If I run a G30 S-1 at the same position it reports ~1.8-1.9mm trigger height...



  • Did you run a new bed mesh once you had adjusted your z zero ?
    I don't know this for sure but it sounds like the additional offset is because you applied bed mesh compensation.



  • As soon as I ran a bed mesh compensation, the error was introduced into the height map and the nozzle was ~0.4mm above the bed when moving to "Z=0"

    I now reverted to using G30 S-3 directly next to the Z-endstop. This fixes the mysterious ~.4mm error that was consistently introduced when using G30 and a fixed offset in the config.g. So I removed all probe offsets from the config.g and now set the offset during Z-homing:

    ; homez.g
    ; called to home the Z axis
    M561					; cancel all bed mesh compensations
    M558 P1 C"!zprobe.in" H15 F300		; increase dive height to prevent crashing into a tilted bed
    
    ; probe and adjust the bed tilt
    G90	
    G30 P0 X50 Y165 Z-99999 ; probe near a leadscrew
    G30 P1 X350 Y165 Z-99999 S2 ; probe near a leadscrew
    
    M558 P1 C"!zprobe.in" H5		; reduce dive height after adjusting the bed
    
    ; move over endswitch to set Z=0
    G1 X341 Y310 F18000
    G1 H1 Z-350 F600 ; move quickly to Z axis endstop and stop there (first pass)
    G1 Z5 F1200       ; move up a few mm
    G1 H1 Z-6 F300   ; move slowly to Z axis endstop once more (second pass)
    G92 Z0 			; set Z=0
    G1 Z15 F1200   ; lift printhead
    
    ; calibrate probe trigger distance
    G1 X341 Y313 F18000	; move directly next to the switch to calibrate the probe
    G30 S-3				; set probe trigger height
    G1 Z15 F1200		; lift printhead
    
    G1 X0 Y330 Z20 F18000				; move printhead to the back
    

    afterwards I can run bed mesh compensation and am getting plausible results (with an error of ~0.015-0.02mm over multiple mesh compensation runs) and the compensation is properly working. I.e. I can move to any point on the bed and when moving the Z-axis to 0 the nozzle actually touches the bed, even if I deliberately introduce an error somewhere.



  • I am now officially lost ....
    In your homez.g macro you are adjusting bed tilt but you only run the tilt routine once. Normally this is a successive approximation so it would make more sense to run this several times (the tilt compensation)
    Then you run close to where the limit switch is located and set z=0. Never mind the fact that ideally z should be set to zero when it is in the middle of the bed .... you are now using the z limit switch and not the probe.
    You then run the probe and over-ride the previous z=0 setting which was set with the end limit switch rather than the probe.

    There is a good possibility that I do not completely understand what is happening here but it looks to me like the probe triggering point is different from the endstop trigger point and you are seeing weirdness because of that.

    I think I would like to bow out from this discussion as I feel I am over my head.



  • @jens55 said in Bl-touch and distance printing nozzle:

    I am now officially lost ....
    In your homez.g macro you are adjusting bed tilt but you only run the tilt routine once. Normally this is a successive approximation so it would make more sense to run this several times (the tilt compensation)

    I wasn't aware of that. The reported adjustment is usually <0.2mm, but I will try to rewrite it to repeat until the deviation is even lower.

    Then you run close to where the limit switch is located and set z=0. Never mind the fact that ideally z should be set to zero when it is in the middle of the bed .... you are now using the z limit switch and not the probe.

    Z=0 is set at the position where the limit switch is triggered. I confirmed this several times by checking the nozzle height after this step.

    You then run the probe and over-ride the previous z=0 setting which was set with the end limit switch rather than the probe.

    G30 S-3 doesn't set the Z=0 value but only the trigger height:
    G30 S-3 ; Probe the bed and set the Z probe trigger height to the height it stopped at

    There is a good possibility that I do not completely understand what is happening here but it looks to me like the probe triggering point is different from the endstop trigger point and you are seeing weirdness because of that.

    I am aware that the endstop trigger is different from the probe trigger height.
    My problem was, that when using G30 to home Z using the probe, there was an offset of ~0.4mm added somewhere. This led to Z=0 being off by the same value when I tried to home Z by only using the probe and the trigger distance defined via G31 in config.g



  • I followed this process and it seems to work :
    -put z=0.0 in config.g G31 line

    • homing all axes
      G30 (be careful and be ready to press emergency button)
    • manually jog nozzle to touch the bed
      G92 Z0
    • manually jog 10mm z axes away from nozzle
    • G30 S-1 (2 times)
    • insert the z value in the G31 line
    • Start mesh process from the PanelDue

    I did it 2 times and if you want to modify the z, you have to redo the all process (in my case)



  • @jens55
    Thanks I have to control. I have now layers problems and it could be this step/mm that causes it.
    But 80 steps/mm is very low...



  • It all depends on your mechanics .... it works for me but there are many reasons why it might not be right for you. The appropriate thing is to measure things and adjust until the Duet and real life agree 🙂



  • @jens55
    Ok, I'll check 😉


  • Moderator

    This thread is very confusing to follow because there are 2 people with problems posting in the same thread.

    Best way to get accurate and timely help on a problem is to post a good description of the problem and include all of your config files. RRF is configured with gcode, so showing what gcode you are using is critical to helping others understand what's actually happening with the printer.

    @Touchthebitum @sko if you want some more help getting your z offset correct, start new threads and include your files. It's usually a fairly simple fix to methodology.


Log in to reply