BLTouch offset problems only when printing



  • I have a Jubilee toolchanger with 2 tools, on which I had been using a microswitch on Z with relative success (aside from accuracy problems with the switch).
    This week I swapped to a BLTouch and got it probing successfully without much drama, and even got 1 successful print out with no problems.

    Now when I try to start a print using the primary tool (T0) the printer picks up the tool and then immediately sends it into the bed by about 3mm. This doesn't happen with T1 despite them being identical tools with almost identical offsets (a difference of 0.11mm in Z).

    Best of all, this only happens when printing!

    If I pick up T0 and G0 Z0, it lightly grabs a piece of paper perfectly, as does T1. If I initiate a print which sends T0 to Z0.2, it tries to drive it into the bed.
    If I pause the print, park T0 (ie T-1), re-home Z (required because the bed is no longer level), pick up T0 and resume the print the first layer is laid down well, and then when starting the 2nd layer it immediately tries to drive the nozzle into the bed again.

    If I take that exact g code and find/replace T0 with T1, it prints flawlessly. There is a (physical and G10 offset) difference of 0.11mm between the two extruders, so I don't understand why this ~3mm offset is applied to T0 but not T1, using the same file.

    TLDR:

    • RRF3.1.1 (though I upgraded to fix this issue - it happened with the latest RRF2 also)
    • Perfect offset when not printing, G0 Z0 lightly grabs paper
    • Around a 3mm negative offset is applied as soon as a print starts but only when using T0
    • The exact same gcode using T1 prints perfectly
    • Pausing the print, parking the tool, homing and then resuming the print works well but only for one layer, the second layer then tries to dive into the bed
    • config-override.g contains 3x M307 commands and nothing else
    • The probe offset is set using G31 in the config (included below)
    • Homing is done with G30, not the endstop method

    Can anyone help me here? What else might be applying this offset? I know it's not the slicer since using the 2nd tool has no such problems, and I'm fairly confident the bltouch is generally set up well since again it works well for T1, and works for T0 so long as it's not printing.

    config.g

    ; Jubilee 2.1.3 Config File for RepRapFirmware 3
    
    ; Name and Identification
    M550 P"Jubilee"                         ; Machine name and Netbios name
    
    ; Networking
    M552 S1
    M586 P2 S1                              ; Enable Telnet
    
    M575 P1 S1 B57600						; Enable serial port for PanelDue
    
    ; Debugging
    M111 S0                                 ; Debug off
    M929 P"eventlog.txt" S1                 ; Start logging to file eventlog.txt
    
    ; General Preferences
    M555 P2                                 ; Set Marlin-style output
    G21                                     ; Set dimensions to millimetres
    G90                                     ; Send absolute coordinates...
    M83                                     ; ...but relative extruder moves
    
    ; Joints
    M584 X0 Y1 Z5:9:8 E3:4 U2   ; Map Z to drivers 6, 7, 8. Map extruders to 3 and 4. Create Toolchanger Lock axis.
    
    M569 P0 S0                  ; Drive 0 direction | X stepper
    M569 P1 S0                  ; Drive 1 direction | Y Stepper
    
    M569 P6 S1                  ; Drive 6 direction | Front Left Z
    M569 P7 S1                  ; Drive 7 direction | Front Right Z
    M569 P8 S1                  ; Drive 8 direction | Back Z
    
    M569 P2 S0                  ; Drive 2 direction | Toolchanger Actuator
    
    M569 P3 S1 D2               ; Drive 3 direction | Extruder 0 in Spreadcycle Mode
    M569 P4 S1 D2               ; Drive 4 direction | Extruder 1 in Spreadcycle Mode
    
    ; Joint Kinematics
    M669 K1                                 ; CoreXY mode
    
    ; Kinematic bed ball locations.
    ; Locations are extracted from CAD model assuming lower left build plate corner is (0, 0) on a 305x305mm plate.
    
    M671 X297.5:2.5:150 Y313.5:313.5:-16.5 S10 ; Front Left: (297.5, 313.5) | Front Right: (2.5, 313.5) | Back: (150, -16.5)
    
    
    ; Axis and motor configuration
    M350 X16 Y16 Z16 E16 U4 I1              ; Set 16x microstepping for xyz axes & extruder, 4x for toolchanger lock. Use interpolation.
    
    M906 X2263 Y2263                        ; LDO XY motor currents (mA). 2263mA is 80% of 2828mA Peak Current. (2828mA Peak is 2000mA RMS)
                                            ; Do not exceed 90% of full XY motor current rating without heatsinking the XY motor drivers.
    M906 Z1600                              ; LDO ZZZ Motor Currents (mA).
    M906 U670 I60                           ; LDO Toolchanger Elastic Lock Motor Current and Idle Motor Percentage
    
    M201 X1100 Y1100                        ; Accelerations (mm/s^2)
    M201 Z100                               ; LDO ZZZ Acceleration
    M201 U800                               ; LDO U Accelerations (mm/s^2)
    
    M203 X18000 Y18000 Z1200 E8000 U9000    ; Maximum axis speeds (mm/min)
    M566 X1000 Y1000 Z500 E3000 U50         ; Maximum jerk speeds (mm/min)
    
    M92 X200 Y200                           ; Steps/mm for X,Y for 16x microstepping & 16T pulley
    M92 Z3200                               ; Steps/mm for Z for a T8x2 leadscrew and 0.9mm stepper. (16 * 400)/2
    M92 U30.578                             ; Steps/deg for U (LDO Stepper Motor) from (200 * 4 * 13.76)/360
    
    ; Set axis software limits and min/max switch-triggering positions.
    ; Adjusted such that (0,0) lies at the lower left corner of a 300x300mm square in the 305mmx305mm build plate.
    M208 X-13.75:313.75 Y-44:341 Z-0.2:305
    M208 U0:200                                 ; Set Elastic Lock (U axis) max rotation angle
    
    ; Machine Thermistors
    M308 Y"thermistor" S0 P"bedtemp" T100000 B3950 R4700 H0 L0    ; Built-in Keenovo Bed Thermistor values.
    M308 S3 P"duex.e2_temp" Y"pt1000" R4700         ; E2 temperature sensor
    M308 S4 Y"drivers" A"DRIVERS"                   ; sensor 4 as temperature warning and overheat flags on the TMC2660 on Duet
    M308 S5 Y"mcu-temp" A"MCU"                      ; sensor 5 as thermistor on pin e1temp for left stepper
    
    ; Machine Heaters
    M570 S5                                    ; Print will be terminated if a heater fault is not reset within 30 minutes.
    M950 H0 C"bed_heat" T0 						 ; heater 0 uses the bed_heat pin, sensor 0
    M140 H0										 ; the bed heater is heater 0
    M143 H0 S135                                 ; Maximum H0 (Bed) heater temperature
    
    ; Default settings for running a mesh bed leveling procedure:
    M557 X10:290 Y10:290 P6
    
    ; Machine Switches
    M574 X1 S1 P"^xstop"   ; X min active high endstop switch
    M574 Y1 S1 P"^ystop"   ; Y min active high endstop switch
    M574 U1 S1 P"^e0stop"  ; U max active high endstop switch
    
    ; BLTouch Z probe settings
    M950 S5 C"duex.pwm5"
    M574 Z1 S2 ; Set to probe-type Z sensor
    M558 P9 C"^zprobe.in" H5 F100 T100000 ; bltouch type probe with a plunge height of 5mm, probe speed 100mm/min and move speed 100,000mm/min (ie fast as possible)
    G31 X34.1 Y0 Z3.26
    
    ; Extruder Definitions
    M906 E1250:1250                         ; Motor currents for all E (mA).
    M201 E1300:1250                         ; E Acceleration (mm/s^2)
    M203 E8000:8000                         ; Maximum axis speeds (mm/min)
    M566 E3000:3000                         ; Maximum jerk speeds (mm/min)
    M92 E830:830                            ; BMG Extruder - 0.9 deg/step Tool0:Tool1
    M308 S1 P"e0_temp" Y"thermistor" T100000 B4725 C7.060000e-8   ; e3d style thermistor
    M308 S2 P"e1_temp" Y"thermistor" T100000 B4725 C7.060000e-8   ; e3d style thermistor
    M950 F0	C"fan0"                         ; Fan 0, part cooler fan on Tool 0
    M950 F1 C"fan1"                         ; Fan 2, part cooler fan on Tool 1
    M950 H1 C"e0heat" T1                   ; heater 1 uses the e0_heat pin and sensor 1
    M950 H2 C"e1heat" T2                   ; heater 2 uses the e1_heat pin and sensor 2
    M143 H1 S285                            ; Maximum H1 (Extruder 0) heater temperature
    M143 H2 S285                            ; Maximum H2 (Extruder 1) heater temperature
    M950 F2 C"fan2"
    M106 P2 T10 H5 S120 L100 X200    ; electronics fan triggered by any driver being over 10 degrees
    
    M563 P0 S"Extruder 0" D0 H1 F0          ; Define tool 0
    G10 P0 X-4.28 Y43.407 Z0               ; Set tool 0 offset from the bed
    G10 P0 S210 R190                        ; Set tool 0 operating and standby temperatures(-273 = "off")
    M572 D0 S0.05                           ; Set pressure advance on Extruder Drive 1
    
    M563 P1 S"Extruder 1" D1 H2 F1          ; Define tool 1
    G10 P1 X-4.842 Y43.208 Z-0.11             ; Set tool 1 offset from the bed
    G10 P1 S210 R210                        ; Set tool 1 operating and standby temperatures(-273 = "off")
    M572 D1 S0.05                            ; Set pressure advance on Extruder Drive 1
    
    
    M501                                    ; Load saved parameters from non-volatile memory
    

    config-override.g

    ; config-override.g file generated in response to M500 at 2020-10-22 18:16
    ; This is a system-generated file - do not edit
    ; Heater model parameters
    M307 H0 A373.1 C574.4 D1.8 S1.00 V24.2 B0
    M307 H1 A372.0 C198.2 D3.9 S1.00 V24.2 B0
    M307 H2 A334.6 C170.2 D3.8 S1.00 V24.2 B0
    

    homez.g

    M561 ; Disable any Mesh Bed Compensation
    G90 G1 X115.9 Y150 F10000 ; Move to the center of the bed
    M558 F500 ; Set the probing speed
    G30
    M558 F50 ; Set a slower probing speed
    G30
    G32                         ; Run 3-point bed calibration defined in bed.g
    G1 X0 Y0 F10000
    G29 S1   ; Enable Mesh Bed Compensation
    

    bed.g

    M561 ; Disable any Mesh Bed Compensation
    G30 P0 X150 Y10 Z-99999   ; probe near back leadscrew
    G30 P1 X290 Y295 Z-99999    ; probe near front left leadscrew
    G30 P2 X26 Y295 Z-99999 S3   ; probe near front right leadscrew and calibrate 3 motors
    G29 S1   ; Enable Mesh Bed Compensation
    


  • any possibility you set a tool offset in your slicer?



  • @mendenmh unfortunately no, looking at the gcode I can see the moves are correct at Z0.2.



  • I've worked out what is causing the Z dive, but I don't understand why.
    At the start of my Gcode is the following

    ;LAYER_CHANGE
    ;Z:0.2
    ;HEIGHT:0.2
    G1 Z0.200000 F24000.000
    G1 E-0.30000 F2400.00000
    G1 Z2.600000 F24000.000
    G1 X131.819 Y132.163
    G1 Z0.200000
    G1 E0.00000 F2400.00000
    

    If I remove the first E move (the one immediately after the Z move) like so:

    ;LAYER_CHANGE
    ;Z:0.2
    ;HEIGHT:0.2
    G1 Z0.200000 F24000.000
    G1 Z2.600000 F24000.000
    G1 X131.819 Y132.163
    G1 Z0.200000
    G1 E0.00000 F2400.00000
    

    Then I can get a successful print. So for some reason a Z move followed by a negative E move is causing the Z to go crazy and smash into the bed?!

    Edit: If I turn off retractions completely in the slicer then I can get a clean print out...


  • Moderator

    That's weird. Perhaps a good time to change to firmware retraction?


Log in to reply