Z calibration issues



  • I have 3 printers all running on Duets and all run ok except for my last build which is a Ratrig Vcore Pro. It's the only printer running on RRF3.2 beta 3.2.
    On this printer I just cannot get a stable bed height. Every time i set Z, if i am lucky i can get the first print to work but there after Z is not at the correct height. The variation is only very small but small enough to disallow anything sticking to the bed. I can then adjust the height with baby stepping but even then, the Z height changes for the next print.
    I have studied my config.g and other settings until i am blue in the face and cant find the answer why.

    Here's my config.g:
    ; Configuration file for Duet 3 (firmware version 3.1.1)
    ; executed by the firmware on start-up
    ;
    ; Modified config for Ratrig Vcore with single extruder 23/08/2020

    ; ###General preferences###
    M42 P8 S255 ; Power up relay
    M555 P0 ; Set Reprap-style output
    G21 ; Set dimensions to millimetres
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves

    ;###Network###
    M550 P"V-Core Pro" ; set printer name
    M669 K1 ; select CoreXY mode

    ; ###Drives###
    M569 P0.0 S1 ; X physical drive 0.0 goes forwards
    M569 P0.1 S1 ; Y physical drive 0.1 goes forwards
    M569 P0.2 S0 ; Z0 physical drive 0.2 goes backwards
    M569 P0.3 S0 ; Z1 physical drive 0.3 goes backwards
    M569 P0.4 S0 ; Z2 physical drive 0.4 goes backwards
    M569 P0.5 S0 ; E0 physical drive 0.5 goes backwards

    ; ###Set drive mapping###
    ; For tripple Z make sure drive 2 is left hand Z and 3 is right hand, 4 at back
    M584 X0.0 Y0.1 Z0.2:0.3:0.4 E0.5 ; Drive mapping for single extruder
    ;M92 X80.00 Y80.00 Z400.00 E136 ; set steps per mm (clone titan = 425)
    ;M92 X80.00 Y80.00 Z400.00 E424 ; set steps per mm for volcano 0.8
    M92 X80.00 Y80.00 Z400.00 E466 ; set steps per mm for volcano 0.4
    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation

    ; ###Accelerations, speed and jerk###
    M98 P"print_settings/default_speed.g"
    ;M98 P"print_settings/E3_Fast.g"
    ;M98 P"print_settings/E3_T1.g"
    ;M98 P"print_settings/E3_T2.g"
    ;M98 P"print_settings/E_T3.g"

    M906 X1000 Y1000 Z1000 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent
    ; V-Core steppers are 1.68 amp so 80% = 1.32amp
    M84 S30 ; Set idle timeout

    ; ###Leadscrew positions###

    ;M671 X-35:535:245 Y116:116:560 S6.0 ; The measurement is taken from X=0, Y=0. Therefore X will be negative, Y positive
    M671 X-35:535:245 Y92:92:560 S6.0 ; The measurement is taken from X=0, Y=0. Therefore X will be negative, Y positive

    ; ###Mesh Grid###
    ; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
    ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
    M557 X20:480 Y20:480 S100 ; Define small mesh grid - 25 points
    ;M557 X10:480 Y20:480 S50 ; Define large mesh grid - 50 points

    ; ###Axis Limits###
    ;M208 X495 Y485 Z500 ; set axis maxima
    M208 X492 Y495 Z500 ; set axis maxima
    M208 X-6 Y0 Z0 S1 ; Set axis minima (adjust to make X=0 and Y=0 the edges of the bed)

    ; ###Endstops###
    M574 X1 S1 P"!io0.in" ; configure active-low endstop for low end on X via pin io0.in with internal pull-up
    M574 Y1 S1 P"!io1.in" ; configure active-low endstop for low end on Y via pin io1.in with internal pull-up

    ; ###Z-Probe###
    M558 P8 C"io2.in" H5 A2 F120 T3000 ; Z probe is type 8 in RRF3
    ; G31: the P is the reported Z value when triggered. X,Y are offset coordinates. Z is trigger height, you can decrease value if nozzle is too close
    ; or increase if too far away.
    ;G31 P500 X0 Y-25 Z1.80 ; set Z probe trigger value, offset and trigger height 2.07
    G31 P50 X-22 Y0 Z2.32 ; set Z probe trigger value, offset and trigger height 2.07 ########changed P500 to P50

    ; ###Push buttons###
    ; create e-stop microswitch
    M950 J3 C"!io3.in" ; Input 3 uses io2 pin, inverted
    M581 P3 S1 T0 R0 ; configure enstop as e-stop

    ; filament unload button
    ;M950 J4 C"!io4.in" ; Input 4 uses io4 pin, inverted
    ;M581 P4 S1 T2 R0 ; configure button for filament unload

    ; filament load button
    ;M950 J5 C"!io5.in" ; Input 5 uses io5 pin, inverted
    ;M581 P5 S1 T3 R0 ; configure push button for filament load

    ; M581 P"!io6.in" T0 C0 ; configure active-low endstop to perform an e-stop (on panel)
    ; e-stop button
    ;M950 P6 C"!io6.in" ; Input 6 uses io6 pin, inverted
    ;M581 P6 S1 T0 R0 ; configure push button for e-stop

    ; bed levelling button
    M950 P7 C"io7.out" ; Input 7 uses io7 pin, inverted
    ;M581 P7 S1 T4 R0 ; configure push button for Bed Levelling

    ; shutdown switch
    M950 P8 C"io8.out" ; Creates output on io8 to use as alternative power off switch

    ; Filament Run Out Sensor
    ;M591 D0 P1 C4 S1 ; Code requires conversion Filament runout Sensor for Extruder E0 P1 = signal HIGH.

    ;Magnetic Filament Sensor
    ;M591 P3 C"e0_stop" S1 ; filament monitor connected to E0_stop

    ; ###Bed thermistor/heater###
    M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; bed thermistor
    M950 H0 C"out0" Q100 T0 ; bed heater H = heater no. C = output Q = PWM frequencyT = temperature sensor no. defined above.
    M143 H0 S120 ; set temperature limit for bed heater 0 to 120C
    M140 H0 ; map heated bed to heater 0
    M143 H0 P0 S105 A2 ; switch off bed heater temporarily if it exceeds 105°C
    M143 H0 P1 S110 A0 ; raise a heater fault if it exceeds 110C

    ; ###Extruder thermister/heater###
    ; H Heater number to monitor (default 1 which is normally the first hot end)
    ; S Maximum permitted temperature
    ; P Heater monitor number, default 0
    ; T Sensor number used to monitor the heater. It default to the sensor that controls the heater (as was specified in the M05o command when the heater was created).
    ; A Action to trigger (0: Generate heater fault [default] 1: Switch off permanently 2: Switch off temporarily)1
    ; C Condition for temperature event (0: Temperature too high [default] 1: Temperature too low, -1: Monitor is disabled)

    M308 S1 P"temp1" Y"thermistor" T100000 B4138 C7.06e-8 ; extruder thermistor
    M950 H1 C"out1" T1 ; ext heater H = heater no. C = output T = temperature sensor no. defined above.
    M143 H1 S280 ; set temperature limit for extruder heater 1 to 250C
    M143 H1 P0 S290 A2 ; switch off extruder heater temporarily if it exceeds 250°C
    M143 H1 P1 S285 A0 ; raise a heater fault if it exceeds 255C

    ;###CPU Temperature Calibration###
    M912 P0 S1

    ; ###Fans###
    M950 F0 C"out7" Q100 ; create fan 0 on pin out7 and set its frequency (parts fan)
    M106 P0 S0 H-1 C"Part Cooling" ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out8" Q100 ; create fan 1 on pin out8 and set its frequency (ext fan)
    M106 P1 S0 H1 T45:65 C"Extruder" ; set fan 1 value. Turns on at 45 degrees and full speed at 65 or over
    M950 F4 C"out5" Q100 ; create fan 2 on pin out5 (bed cooling)
    M106 P4 S0 H-1 C"Bed Cooling" ; set fan 2 value. Thermostatic control is off

    ;###Hardware temperature control###
    ;CPU fan
    M950 F2 C"out9" ; create fan 2 (CPU fan)
    M308 S3 Y"mcutemp" A"MCU" ; set up a virtual sensor for cpu fan
    M106 P2 T35 H3 ; set fan 2 value. Fan comes on when cpu temp is above 35 degrees (Cool the pi as well!)
    M308 S4 P"drivers" Y"drivers" A"TMC" ; Create sensor for drivers

    ;###Led Lighting###
    M950 F3 C"out4" Q500 ; create a fan 3 output to use for led lighting control on pin out4
    M106 P3 S0 ; set output default to off

    ; ###Extruder setup###
    M563 P0 S"Extruder0" D0 H1 F0 ; define tool 0
    G10 P0 X0 Y0 ; set tool 0 axis offsets
    G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C

    ;### FW Retract ###
    M207 S0.5 F3000 Z0 ; max recommended retraction for V6 is 2mm (plus take in account length of bowden tube)

    ; ###Custom settings###
    ;M593 F50 ; anti-Ringing
    ;M572 D0 S0.800 ; Pressure advance = 0.8
    M42 P8 S255 ; Power up relay
    T0 ; select first tool
    M501 ; read parameters in config.overide
    M98 P"/macros/Bed Levelling/lead_screw_level.g" ; perform bed levelling if ok'd on startup and then activate the mesh grid

    homing files:
    ; homex.g
    ; called to home the X axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)
    G91 ; relative positioning
    M913 X70 Y70 Z80 ; reduce the motor current
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G1 H1 X-600 F2800 ; move quickly to X axis endstop and stop there (first pass)
    G1 H0 X5 F6000 ; go back a few mm
    G1 H1 X-600 F360 ; move slowly to X axis endstop once more (second pass)
    G1 H2 Z-5 F6000 ; lower Z again
    G90 ; absolute positioning
    M913 X100 Y100 Z100 ; reset motor currents
    ; homey.g
    ; called to home the Y axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)
    G91 ; relative positioning
    M913 X70 Y70 Z80 ; reduce the motor current
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G1 H1 Y-600 F2800 ; move quickly to Y axis endstop and stop there (first pass)
    G1 H0 Y5 F6000 ; go back a few mm
    G1 H1 Y-600 F360 ; move slowly to Y axis endstop once more (second pass)
    G1 H2 Z-5 F6000 ; lower Z again
    G90 ; absolute positioning
    M913 X100 Y100 Z100 ; reset motor currents

    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    G91 ; Relative positioning
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G90 ; absolute positioning
    G1 X245 Y247.5 F4000 ; Go to centre of bed

    ; Probe
    M558 A1 F350 ; Set single probing at faster feed rate F350
    G30 ; Do a single probe to home our Z axis
    M558 A10 F100 ; Set triple probing at slower feed rate
    G30 ; Probe again to get a more accurate position and set Z to trigger height

    M913 X100 Y100 Z100 ; reset motor currents

    set Z macro:
    ; My macro to set Z probe height

    M291 P"Bed compensation and height map will be deleted. Ok or Cancel?" R"WARNING" S3 T0; Click OK or Cancel.
    M561 ; cancel any existing bed compensation
    G29 S2 ; Clear bed height map

    M291 P"Checking for homed axis!" S0 T2 ; Display on DWC
    ; If the printer hasn't been homed, home it
    if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
    G28

    M291 P"Heat the bed and extruder, home X and Y then find Z" R"WARNING" S0 T3
    G1 X245 Y247.5 F4000 ; Go to centre of bed
    M208 S1 Z-5 ; Allow Z moves down to Z=-5mm.
    T0 ; Activate extruder
    M190 S60 ; Heat bed to 60 and wait
    M109 S190 ; Heat nozzle to 190 and wait

    ; Reset Z=0
    G31 Z0
    M564 S0 ; temporarily disable axis limits

    ; Move Z down to find Z=0
    M291 P"Jog the Z axis until the nozzle grips a peice of paper and click OK" R"Move Z" Z1 S2
    M291 P"Click OK to set Z=0" R"Setting Z=0" S2
    G92 Z0 ; Set Z to 0

    M291 P"Z is now set, starting multi-probing" R"Done Z" S0 T5

    ; Get trigger heights
    M291 P"Trigger height will now be measured 10 times. Heights will be found in gcode console" R"ZProbe Trigger Height Calibration" S0 T5

    ; G30 S-1 10 times
    ;

    ; 1
    G1 Z5
    G30 S-1

    ; 2
    G1 Z5
    G30 S-1

    ; 3
    G1 Z5
    G30 S-1

    ; 4
    G1 Z5
    G30 S-1

    ; 5
    G1 Z5
    G30 S-1

    ; 6
    G1 Z5
    G30 S-1

    ; 7
    G1 Z5
    G30 S-1

    ; 8
    G1 Z5
    G30 S-1

    ; 9
    G1 Z5
    G30 S-1

    ; 10
    G1 Z5
    G30 S-1

    M291 P"Probing finished. All heaters off, homing all axis. Check log for trigger heights and enter into config.g" S0 T5

    ; Turn off heaters
    ;
    M104 S0 ; Set nozzle to 0 and release
    M140 S0 ; Set bed to 0 and release
    G28 ; Home Z

    Strange thing is here is a typical result from set Z macro:
    Results from 10x calibration.png

    BUT here are results from 10 separate G30 S-1 commands:
    single Z probe.png

    Can anyone help?
    Thanks in advance.


  • Moderator

    After doing the 3 lead screw bed leveling are you re-probing the center of the bed to re-establish Z0?

    What kind of probe is it?

    @chas2706 said in Z calibration issues:

    RRF3.2 beta 3.2

    3.2 Beta 4 is now out, may want to update.



  • Sorry about the late reply.

    Yes, after bed levelling I home the probe in the center of the bed.

    It is DC42's ir probe.

    Are there improvements regarding probing etc in RRF3.2 beta 4?

    Cheers.


  • Moderator

    What do you have in that single_probe_check macro? How does it differ from the macro you did post?

    @chas2706 said in Z calibration issues:

    Are there improvements regarding probing etc in RRF3.2 beta 4?

    No, but other bug fixes



  • The single probe check just contains:

    G30 S-1 ;Probe the bed at the current XY position. When the probe is triggered, do not adjust the Z coordinate.
    G1 Z5

    Looking through the documentation again I found I did not have a M574 Z1 S2 ; configure Z-probe endstop for low end on Z

    in my config.g for endstops

    Now if I do multiple single probe checks the results are consistent so I will re-calibrate Z and see if the problem has gone away.

    In the meantime thanks for your help.


Log in to reply