Duet3D Logo

    Duet3D

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Documentation
    • Order

    Solved Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+

    Tuning and tweaking
    7
    50
    972
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • juliann
      juliann last edited by

      Hi!

      I am having a recurrent issue with the Z calibration of my RatRig V-Core 3 500mm.

      After getting the perfect first layer calibration and being able to complete a print without issues, when I send new prints I always need to adjust the baby steps to get the same good results as the previous one. What I am missing?

      I will appreciate any advice/ help to solve this problem. 🙂

      The machine has the following setup:

      • Duet 3 Mini 5+ (with SBC)
      • Toolbard 1LD v1.1
      • BL-Touch 3.1

      Thank you very much!
      Julián.

      config.g:

      ; General preferences 
      
      G90                                     ; send absolute coordinates...
      M83                                     ; ...but relative extruder moves
      M550 P"duet3"                        ; set printer name
      M669 K1                                 ; CoreXY
      G21                                     ; Set Units to Millimeters
      
      ; Network
      M586 P0 S1                              ; enable HTTP
      M586 P1 S0                              ; disable FTP
      M586 P2 S0                              ; disable Telnet
       
       G4 S2   ;wait for expansion boards to start
       
      ; Drives
      M569 P0.0 S0 D3                         ; physical drive 0.0 goes forwards
      M569 P0.1 S0 D3                         ; physical drive 0.1 goes forwards
      M569 P0.2 S0 D3                         ; physical drive 0.2 goes forwards
      M569 P0.3 S1 D3                         ; physical drive 0.3 goes forwards
      M569 P0.4 S1 D3                         ; physical drive 0.4 goes forwards
      M569 P20.0 S0 D3                         ; physical drive 0.5 goes forwards
      M584 X0.4 Y0.3 Z0.0:0.1:0.2 E20.0        ; set drive mapping
      M350 X16 Y16 Z16 E16 I1                 ; configure microstepping with interpolation
      
      ;LGX
      M92 X80.00 Y80.00 Z800.00 E408.23
      M906 X1200 Y1200 Z1000 E800 I30               ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                 ; Set idle timeout
      
      M566 X600.00 Y600.00 Z60.00 E600 P1          ; set maximum instantaneous speed changes (mm/min)
      M203 X60000.00 Y60000.00 Z1000.00 E3600.00     ; set maximum speeds (mm/min)
      M201 X3500.00 Y3500.00 Z100.00 E3600.00
      
      ;Axis Limits
      M208 X0 Y0 Z0 S1                              ; set axis minima
      M208 X500 Y500 Z500 S0                         ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"20.io2.in"                           ; configure active high endstops
      M574 Y2 S1 P"io1.in"                           ; configure active high endstops
      M574 Z1 S2                                     ; configure Z-probe endstop for low end on Z
      
      ; Z-Probe
      ;; BLTouch
      M950 S0 C"20.io0.out"                     ; Create a servo pin on io3
      M558 P9 C"20.io0.in" F150 H4 R0.2 T12000 A5 B0  ; set Z probe type to unmodulated and the dive height + speeds
      
      G31 P1000 X-39.25 Y-13.50 Z3.180
      
      M671 X-4.5:250:504.5 Y-4.52:505:-4.52 S50       ; Define positions of Z leadscrews or bed levelling screws
      M557 X25:475 Y25:475 S25                    ; define 5x5 mesh grid
      
      M563 P0 D0 H1 F1           ; define tool 0
      
      ; BED HEATER
      M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed"    ; configure sensor 0 as thermistor on pin temp0
      M950 H0 C"out0" T0                                     ; create bed heater output on out5 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 S120                                        ; set temperature limit for heater 0 to 110C
      
      ;; BED Heater PID Tune JEN
      M307 H0 B0 R0.795 C325.9 D3.08 S1.00 V23.9
      
      ; Fans
      M950 F0 C"20.out2" Q25000                   ; create fan 0 on pin out3 and set its frequency
      M106 P0 C"Hotend Fan" S.5 H1 T45      ; set fan 0 name and value. Thermostatic control turned on for Hotend
      M950 F1 C"!20.out1+out1.tach" Q25000                   ; create fan 1 on pin out4 and set its frequency
      M106 P1 C"Layer Fan" S0 H-1 L0.2 X0.3      ; set fan 1 name and value. Thermostatic control is turned off
      
      M950 F2 C"!out3+out3.tach" Q25000                  ; create fan 1 on pin out4 and set its frequency
      M106 P2 C"Filter & Bottom Fans" S0 H-1 L255       ; set fan 1 name and value. Thermostatic control is turned off
      M950 F3 C"!out4+out4.tach" Q25000                  ; create fan 1 on pin out4 and set its frequency
      M106 P3 C"Exhaust Fan" S0 H-1 L255       ; set fan 1 name and value. Thermostatic control is turned off
      M950 F4 C"out5" Q10                  ; create fan 1 on pin out4 and set its frequency
      M106 P4 C"12vFANs" S1.0 H-1 L255       ; set fan 1 name and value. Thermostatic control is turned off
      
      ; Tools
      G10 P0 X0 Y0 Z0            ; set tool 0 axis offsets
      G10 P0 R0 S0               ; set initial tool 0 active and standby temperatures to 0C
      
      M308 S1 P"20.temp0" Y"thermistor" T500000 B4723 C1.196220e-7 ; PARA SLICE ENGINNERING HIGH TEMP
      M950 H1 C"20.out0" T1         ; create nozzle heater output on out2 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 the maximum temperature in C for heater
      M307 H1 B0 R2.138 C163.4:146.8 D7.88 S1.00 V23.8
      
      
      ; Miscellaneous
      M575 P1 B57600 S1;enable panelDue UART
      M501                                               ; load saved parameters from non-volatile memory
      M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set tension thresholds and actions to run on power loss
      M404 N1.75 D0.4                                 ; Filament width and nozzle diameter
      
      ;DHT Sensor on IO4
      M308 S10 P"io4.out+io4.in" Y"dht22" A"Chbr Temp[C]"
      M308 S11 P"S10.1" Y"dhthumidity" A"Chbr Hum[%]"
      
      M591 D0 P3 C"20.io1.in" S0 R10:200 L22.00 E3.0 	; Duet3D rotating magnet sensor for extruder drive 0 is connected to E0 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length
      
      ;Input Shaping
      M593 P"none"     ; disable DAA
      
      ; Pressure Advance
      M572 D0 S0.18
      
      
      ;Taper Height
      M376 H20
      
      ; Set up Accelerometer
      M955 P20.0 I12 S1000 Q2000000 ; Accelerometer on toolboard, Enable for RRF 3.3 Stable
      
      M593 P"ei3" F68.43 S0.1 L10
      T0
      

      config-override.g

      
      ; Heater model parameters
      M307 H0 R0.795 C325.900:325.900 D3.10 S1.00 V23.9 B0
      M307 H1 R2.138 C163.400:146.800 D7.90 S1.00 V23.8 B0
      ; Workplace coordinates
      G10 L2 P1 X0.00 Y0.00 Z0.00
      G10 L2 P2 X0.00 Y0.00 Z0.00
      G10 L2 P3 X0.00 Y0.00 Z0.00
      G10 L2 P4 X0.00 Y0.00 Z0.00
      G10 L2 P5 X0.00 Y0.00 Z0.00
      G10 L2 P6 X0.00 Y0.00 Z0.00
      G10 L2 P7 X0.00 Y0.00 Z0.00
      G10 L2 P8 X0.00 Y0.00 Z0.00
      G10 L2 P9 X0.00 Y0.00 Z0.00
      
      

      bed.g

      M290 R0 S0    ;  clear baby stepping
      M561          ;  reset all bed adjustments
      M400          ;  flush move queue
      
      if !move.axes[0].homed or !move.axes[1].homed or !move.axes[2].homed
        echo "not all axes homed, homing axes first"
        G28
      
      
      while true
        if iterations = 5
          abort "Auto calibration repeated attempts ended, final deviation", move.calibration.final.deviation ^ "mm"
        G30 P0 X5 Y10 Z-99999 ; probe near a leadscrew
        if result != 0
          continue
        G30 P1 X245 Y470 Z-99999 ; probe near a leadscrew
        if result != 0
          continue
        G30 P2 X460 Y10 Z-99999 S3 ; probe near a leadscrew and calibrate 3 motors
        if result != 0
          continue
        if move.calibration.initial.deviation <= 0.01
          break
        echo "Repeating calibration because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
      ; end loop
      echo "Auto calibration successful, deviation", move.calibration.final.deviation ^ "mm"
      G0 X250 Y250 Z10 F9000
      ; rehome Z as the absolute height of the z plane may have shifted
      G28 Z
      G29 S1
      

      homeall.g

      M280 P0 S160           ; Ensure the pin is raised
      
      G91                     ; relative positioning
      G1 H2 Z10 F6000          ; lift Z relative to current position
      
      G1 H1 X-505 Y505 F3600 ; move quickly to X and U axis endstops and stop there (first pass)
      G1 H1 X-505 F1800 ; move quickly to X and U axis endstops and stop there (first pass)
      G1 H1 Y505 F1800 ; move quickly to X and U axis endstops and stop there (first pass)
      G1 H1 X-505 Y505 F360  ; move slowly to X and U axis endstops once more (second pass)
      G1 H1 X-505 F360  ; move slowly to X and U axis endstops once more (second pass)
      G1 H1 Y505 F360  ; move slowly to X and U axis endstops once more (second pass)
      
      G90                     ; absolute positioning
      G1 X250 Y250 F10000 ; go to first probe point
      G30                     ; home Z by probing the bed
      
      G91                    ; relative positioning
      G1 Z10 F1800             ; lift Z relative to current position
      G90                    ; absolute positioning
      G1 X0 Y35 F10000
      

      homex.g

      G91               ; relative positioning
      G1 H1 X-505 F1800 ; move quickly to X axis endstop and stop there (first pass)
      G1 H2 X5 F6000    ; go back a few mm
      G1 H1 X-505 F360  ; move slowly to X axis endstop once more (second pass)
      G90               ; absolute positioning
      
      G1 X0 F6000
      
      

      homey.g

      G91               ; relative positioning
      G1 H1 Y505 F1800 ; move quickly to Y axis endstop and stop there (first pass)
      G1 Y-5 F6000     ; go back a few mm
      G1 H1 Y505 F360  ; move slowly to Y axis endstop once more (second pass)
      G90               ; absolute positioning
      G1 Y250 F6000
      

      homez.g

      ; BLTouch
      ;M280 P0 S160           ; Precautionary alarm release
      M280 P0 S160            ; Ensure the pin is raised
      
      G91               ; relative positioning
      G1 H2 Z5 F6000    ; lift Z relative to current position
      G90               ; absolute positioning
      G1 X250 Y250 F10800 ; go to first probe point
      G30               ; home Z by probing the bed
      
      ; Uncomment the following lines to lift Z after probing
      G91              ; relative positioning
      G1 Z5 F100       ; lift Z relative to current position
      G90              ; absolute positioning
      
      T3P3Tony 1 Reply Last reply Reply Quote 0
      • T3P3Tony
        T3P3Tony administrators @juliann last edited by

        @juliann how repeatable is the z probe if you probe manually multiple times in the same place?

        www.duet3d.com

        juliann 1 Reply Last reply Reply Quote 0
        • juliann
          juliann @T3P3Tony last edited by

          Hi @t3p3tony

          Which commands should I use to probe manually?
          Thanks!

          PCR T3P3Tony 2 Replies Last reply Reply Quote 0
          • PCR
            PCR @juliann last edited by

            @juliann

            you could try this macro

            
             
            
            ; Reprap firmware version 3.3b2 or later required!
            
             
            
             
            
             
            
            ; if two speed probing is configured in M558,we probably want to reduce the speed for this test
            
             
            
            var ProbeSpeedHigh = sensors.probes[0].speeds[0]*60 ; Speeds are saved in mm/sec in the object model but M558 uses mm/min
            
             
            
            var ProbeSpeedLow = sensors.probes[0].speeds[1]*60
            
             
            
             
            
             
            
             
            
             
            
            M558 F60 ; reduce probe speed to 60mm/min for accuracy - adjust F parameter as required
            
             
            
             
            
             
            
            ;define some variables to store readings
            
             
            
             
            
             
            
            var NumTests=10 ; modify this value to define number of tests
            
             
            
             
            
             
            
            ; Do not change below this line
            
             
            
            var RunningTotal=0
            
             
            
            var Average=0
            
             
            
            var Lowest=0
            
             
            
            var Highest=0
            
             
            
             
            
             
            
             
            
             
            
            ; If the printer hasn't been homed, home it
            
             
            
            if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
            
             
            
              G28
            
             
            
            else
            
             
            
            	G1 Z{sensors.probes[0].diveHeight} F360 ; if axes homed move to dive height
            
             
            
             
            
             
            
            M561 ; clear any bed transform
            
             
            
             
            
             
            
            M290 R0 S0 ; clear babystepping
            
             
            
             ;ensure you have room for the probe
            
             
            
            if move.axes[2].machinePosition < sensors.probes[0].diveHeight
            
             
            
            	G1 Z{sensors.probes[0].diveHeight}
            
             
            
            ; move nozzle to centre of bed
            
             
            
            G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2}
            
             
            
             
            
             
            
            M564 S0 H0 ; Allow movement beyond limits
            
             
            
             
            
             
            
             
            
             
            
            M280 P0 S160 I1 ; reset BL Touch
            
             
            
            G4 S0.5
            
             
            
            M98 P"0:/sys/retractprobe.g" ; Ensure probe is retracted & reset
            
             
            
            G4 S0.5
            
             
            
            M561 ; clear any bed transform
            
             
            
            ; Jog head to position
            
             
            
            M291 P"Jog nozzle to touch bed" R"Set nozzle to zero" S3 Z1
            
             
            
             
            
             
            
            G92 Z0 ; set Z position to zero
            
             
            
            M291 P"Press OK to begin" R"Ready?" S3;
            
             
            
             
            
             
            
            ; Move probe over top of same point that nozzle was when zero was set
            
             
            
            G1 Z{sensors.probes[0].diveHeight}; lift head
            
             
            
            G1 X{move.axes[0].machinePosition - sensors.probes[0].offsets[0]} Y{move.axes[1].machinePosition - sensors.probes[0].offsets[1]} F1800
            
             
            
             
            
             
            
            echo "Current probe offset = " ^ sensors.probes[0].triggerHeight ^ "mm"
            
             
            
             
            
             
            
            ; carry out 10 probes (or what is set in NumTests variable)
            
             
            
             
            
             
            
            while iterations < var.NumTests
            
             
            
            	G1 Z{sensors.probes[0].diveHeight} ; move to dive height
            
             
            
            	if sensors.probes[0].value[0]=1000 ; if probe is in error state
            
             
            
            		echo "Probe in error state- resetting"
            
             
            
            		M280 P0 S160 I1 ; reset BL Touch
            
             
            
            		G4 S0.5
            
             
            
            		M98 P"0:/sys/retractprobe.g" ; Ensure probe is retracted & reset
            
             
            
            		G4 S0.5
            
             
            
            	G30 S-1
            
             
            
            	M118 P2 S{"Test # " ^ (iterations+1) ^ " Triggered @ " ^ move.axes[2].machinePosition ^ "mm"} ; send trigger height to Paneldue console
            
             
            
            	M118 P3 S{"Test # " ^ (iterations+1) ^ " Triggered @ " ^ move.axes[2].machinePosition ^ "mm"} ; send trigger height to DWC console
            
             
            
             
            
             
            
            	if iterations == 0
            
             
            
            		set var.Lowest={move.axes[2].machinePosition} ; set the new lowest reading to first probe height
            
             
            
            		set var.Highest={move.axes[2].machinePosition} ; set the new highest reading to first probe height
            
             
            
             
            
             
            
            	if move.axes[2].machinePosition < var.Lowest
            
             
            
            		set var.Lowest={move.axes[2].machinePosition} ; set the new lowest reading
            
             
            
            		;M118 P3 S{"new low reading = " ^ move.axes[2].machinePosition} ; send trigger height to DWC console
            
             
            
            		G4 S0.3
            
             
            
            	if move.axes[2].machinePosition > var.Highest
            
             
            
            		set var.Highest={move.axes[2].machinePosition} ; set the new highest reading
            
             
            
             
            
             
            
            		;M118 P3 S{"new high reading = " ^ move.axes[2].machinePosition} ; send trigger height to DWC console
            
             
            
            		G4 S0.3
            
             
            
            	set var.RunningTotal={var.RunningTotal + move.axes[2].machinePosition} ; set new running total
            
             
            
            	;M118 P3 S{"running total = " ^ var.RunningTotal} ; send running total to DWC console
            
             
            
            	G4 S0.5
            
             
            
            set var.Average = {(var.RunningTotal - var.Highest - var.Lowest) / (var.NumTests - 2)} 	; calculate the average after discarding th ehigh & low reading
            
             
            
             
            
             
            
            ;M118 P3 S{"running total = " ^ var.RunningTotal} ; send running total to DWC console
            
             
            
            ;M118 P3 S{"low reading = " ^ var.Lowest} ; send low reading to DWC console
            
             
            
            ;M118 P3 S{"high reading = " ^ var.Highest} ; send high reading to DWC console
            
             
            
            M118 P2 S{"Average excluding high and low reading = " ^ var.Average} ; send average to PanelDue console
            
             
            
            M118 P3 S{"Average excluding high and low reading = " ^ var.Average} ; send average to DWC console
            
             
            
             
            
             
            
            G31 P500 Z{var.Average} ; set Z probe offset to the average reading
            
             
            
            M564 S0 H1 ; Reset limits
            
             
            
            M558 F{var.ProbeSpeedHigh}:{var.ProbeSpeedLow} ; reset probe speed to original
            
             
            
            G1 Z{sensors.probes[0].diveHeight} F360 ; move head back to dive height
            
             
            
            M291 P{"Trigger height set to : " ^ sensors.probes[0].triggerHeight  ^ " OK to save to config-overide.g, cancel to use until next restart"} R"Finished" S3
            
             
            
            M500 P31 ; optionally save result to config-overide.g
            
            1 Reply Last reply Reply Quote 0
            • T3P3Tony
              T3P3Tony administrators @juliann last edited by

              @juliann move the the postion you want to test, then send G30 S-1
              https://duet3d.dozuki.com/Wiki/G30
              Send it a few time to see the result.

              www.duet3d.com

              juliann 1 Reply Last reply Reply Quote 0
              • juliann
                juliann @T3P3Tony last edited by

                Thank you! @PCR @T3P3Tony

                12/10/2021, 14:48:02 G30 S-1 Stopped at height 3.174 mm
                12/10/2021, 14:47:51 G30 S-1 Stopped at height 3.171 mm
                12/10/2021, 14:47:37 G30 S-1 Stopped at height 3.172 mm
                12/10/2021, 14:47:24 G30 S-1 Stopped at height 3.175 mm
                12/10/2021, 14:47:09 G30 S-1 Stopped at height 3.171 mm
                12/10/2021, 14:46:51 G30 S-1 Stopped at height 3.172 mm

                T3P3Tony fcwilt 2 Replies Last reply Reply Quote 0
                • T3P3Tony
                  T3P3Tony administrators @juliann last edited by

                  @juliann so pretty repeatable probing, it does not look like its probe repeatability causing the issue (although maybe it stops becoming repeatable when it shot or something). Do you always probe with everything at the same temperature? How much variation between prints are you seeing?

                  www.duet3d.com

                  juliann 1 Reply Last reply Reply Quote 0
                  • fcwilt
                    fcwilt @juliann last edited by fcwilt

                    @juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:

                    Thank you! @PCR @T3P3Tony

                    12/10/2021, 14:48:02 G30 S-1 Stopped at height 3.174 mm
                    12/10/2021, 14:47:51 G30 S-1 Stopped at height 3.171 mm
                    12/10/2021, 14:47:37 G30 S-1 Stopped at height 3.172 mm
                    12/10/2021, 14:47:24 G30 S-1 Stopped at height 3.175 mm
                    12/10/2021, 14:47:09 G30 S-1 Stopped at height 3.171 mm
                    12/10/2021, 14:46:51 G30 S-1 Stopped at height 3.172 mm

                    You can do a variation that reports not the height but the variation and deviation:

                    Assuming the point of interest is X=180,Y=180.

                    G30 P0 X180 Y180 Z-99999
                    G30 P1 X180 Y180 Z-99999
                    G30 P2 X180 Y180 Z-99999
                    G30 P3 X180 Y180 Z-99999
                    G30 P4 X180 Y180 Z-99999
                    G30 P5 X180 Y180 Z-99999
                    G30 P6 X180 Y180 Z-99999
                    G30 P7 X180 Y180 Z-99999
                    G30 P8 X180 Y180 Z-99999
                    G30 P9 X180 Y180 Z-99999 S-1

                    Frederick

                    Printers: A FT-5 with the 713 upgrade bits. A custom MarkForged style. A small Utilmaker style and a CoreXY from kits. Various hotends. Using Duets (2 and 3) running 3.4.1

                    juliann 1 Reply Last reply Reply Quote 0
                    • juliann
                      juliann @T3P3Tony last edited by

                      @t3p3tony

                      Yes, I did the calibration at the same bed temperature I always use but the variation is not always the same, sometimes is a bit challenging to me getting the right calibration spot again.

                      What would be the best method/ procedure to minimise this issue? 🙂

                      Thanks again!

                      T3P3Tony 1 Reply Last reply Reply Quote 0
                      • juliann
                        juliann @fcwilt last edited by

                        Thank you @fcwilt

                        This is the result:

                        G32 bed probe heights: -0.079 -0.077 -0.077 -0.078 -0.078 -0.076 -0.078 -0.078 -0.078 -0.077, mean -0.078, deviation from mean 0.001

                        fcwilt 1 Reply Last reply Reply Quote 0
                        • T3P3Tony
                          T3P3Tony administrators @juliann last edited by

                          @juliann the probe looks to have minimal variation, well under what should need babystepping to compensate for.

                          what is your start gcode doing? maybe you are homing the printer after probing and the endstops are less repeatable

                          www.duet3d.com

                          juliann 1 Reply Last reply Reply Quote 0
                          • juliann
                            juliann @T3P3Tony last edited by

                            @t3p3tony

                            I have a very basic start gcode so I guess I should improve it.

                            M290 R0 S-0.16
                            G29 S1

                            T3P3Tony 1 Reply Last reply Reply Quote 0
                            • T3P3Tony
                              T3P3Tony administrators @juliann last edited by

                              @juliann so no G28 is inserted by the slicer?
                              Also can you post an image of the height map you are using?
                              Is there a variation between different runs of the same print?

                              www.duet3d.com

                              juliann 1 Reply Last reply Reply Quote 0
                              • juliann
                                juliann @T3P3Tony last edited by

                                @t3p3tony

                                You are correct, there is no G28 inserted in the slicer.

                                Yes, the variations are present between different runs of the same print.

                                Screenshot 2021-10-12 at 15.56.31.png

                                T3P3Tony 2 Replies Last reply Reply Quote 0
                                • fcwilt
                                  fcwilt @juliann last edited by fcwilt

                                  @juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:

                                  Thank you @fcwilt

                                  This is the result:

                                  G32 bed probe heights: -0.079 -0.077 -0.077 -0.078 -0.078 -0.076 -0.078 -0.078 -0.078 -0.077, mean -0.078, deviation from mean 0.001

                                  I'm a bit late to the party so if I repeat what you have already been told I apologize.

                                  When you use a single G30 at a fixed XY location you are setting the Z=0 Datum.

                                  For the fixed XY location I suggest using the center of the bed.

                                  It is important to do this when creating your height map and when loading your height map.

                                  Now setting the Z=0 Datum can be done as part of homing Z or homing ALL as long as it occurs before creating the height map or before loading the height map.

                                  If you change Z probe settings in either M558 or G31 it would be best to create a new height map.

                                  If you change the XY point you use when setting the Z=0 Datum you should also create a new height map.

                                  Frederick

                                  Printers: A FT-5 with the 713 upgrade bits. A custom MarkForged style. A small Utilmaker style and a CoreXY from kits. Various hotends. Using Duets (2 and 3) running 3.4.1

                                  1 Reply Last reply Reply Quote 1
                                  • T3P3Tony
                                    T3P3Tony administrators @juliann last edited by

                                    @juliann ok so quite a lot of variation across the bed is shown by the height map.

                                    Try adding a single G30 at the bed centre into your start gcode before you load the height map and see if it if makes it more consistent (it might not be exactly right and still need baby stepping. its more about seeing if the amount of baby stepping needed changes.

                                    www.duet3d.com

                                    1 Reply Last reply Reply Quote 0
                                    • T3P3Tony
                                      T3P3Tony administrators @juliann last edited by

                                      @juliann and @fcwilt 's post is also helpful - worth checking the height map again

                                      www.duet3d.com

                                      juliann 1 Reply Last reply Reply Quote 0
                                      • juliann
                                        juliann @T3P3Tony last edited by

                                        Thank you very much @t3p3tony @fcwilt

                                        I am checking it right now, I will be back as soon as I finish the tests 🙂

                                        juliann 1 Reply Last reply Reply Quote 0
                                        • juliann
                                          juliann @juliann last edited by

                                          Hi @fcwilt and @T3P3Tony

                                          After following your instructions I think I got an improvement because now there is not a baby stepping variation anymore between different runs of the same print.
                                          But... always there is a but... 🙂 if I turn off and on the printer and then try to print anything, all the calibration is gone, so I need to recalibrate the baby steps again to get those nice first layers that I used to have.

                                          Thanks again!
                                          Julián.

                                          fcwilt 1 Reply Last reply Reply Quote 0
                                          • fcwilt
                                            fcwilt @juliann last edited by

                                            @juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:

                                            Hi @fcwilt and @T3P3Tony

                                            After following your instructions I think I got an improvement because now there is not a baby stepping variation anymore between different runs of the same print.
                                            But... always there is a but... 🙂 if I turn off and on the printer and then try to print anything, all the calibration is gone, so I need to recalibrate the baby steps again to get those nice first layers that I used to have.

                                            Thanks again!
                                            Julián.

                                            If you find you need to adjust baby-stepping once at power on and then it works fine you should be able change the Z Trigger Height parameter in G31 by the same amount.

                                            If you are baby-stepping closer (a negative value) add the absolute of that value to the Z Trigger height parameter.

                                            If you are baby-stepping away (a positive value) subtract that value from the Z Trigger height parameter.

                                            Recall that increasing the Z Trigger Height parameter will result in the nozzle ending up closer to the bed.

                                            In any case when you change G31 you need to be sure it is executed to have the changes take effect.

                                            Frederick

                                            Printers: A FT-5 with the 713 upgrade bits. A custom MarkForged style. A small Utilmaker style and a CoreXY from kits. Various hotends. Using Duets (2 and 3) running 3.4.1

                                            juliann 1 Reply Last reply Reply Quote 1
                                            • juliann
                                              juliann @fcwilt last edited by

                                              Hi @fcwilt and @T3P3Tony

                                              Sorry for the delay, I did a lot of tests! After applying all the tweaks you gave me the Z height improved a lot, I have a new printer! 😄

                                              There is just one specific and persistent issue which is only present after powering on the printer.

                                              Its behaviour is the following:

                                              • The printer is already calibrated and all previous prints were perfectly fine.
                                              • Power off and power on the printer
                                              • I try to print anything and the first layer is much more closer to the bed that usual.
                                              • Cancel that print (Emergency stop on DWC) and clean the bed
                                              • so I print again the same file without touching any setting and now the first layer is perfect again.... (and of course I can continue printing without issues)

                                              What I am missing?

                                              Thanks a lot for all the help! 🙂
                                              Julián.

                                              fcwilt 1 Reply Last reply Reply Quote 0
                                              • fcwilt
                                                fcwilt @juliann last edited by fcwilt

                                                @juliann

                                                Hi,

                                                Well clearly something is being done under those circumstances that is not being done on power up and thus some setting is not getting set correctly. 😉

                                                Do you have any of the following files in your Sys folder:

                                                • cancel.g
                                                • pause.g
                                                • stop.g

                                                If you do please post them here using the </> tag.

                                                Frederick

                                                Printers: A FT-5 with the 713 upgrade bits. A custom MarkForged style. A small Utilmaker style and a CoreXY from kits. Various hotends. Using Duets (2 and 3) running 3.4.1

                                                juliann 1 Reply Last reply Reply Quote 0
                                                • juliann
                                                  juliann @fcwilt last edited by

                                                  @fcwilt

                                                  Thank you very much Frederick!

                                                  No, I don't have any of these files in my system folder.

                                                  Julián.

                                                  fcwilt 1 Reply Last reply Reply Quote 0
                                                  • fcwilt
                                                    fcwilt @juliann last edited by

                                                    @juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:

                                                    @fcwilt

                                                    Thank you very much Frederick!

                                                    No, I don't have any of these files in my system folder.

                                                    Julián.

                                                    Hmm...

                                                    I don't know all the "side effects" of hitting "Emergency Stop".

                                                    It's possible that, in the code executed at the start of a print, the order of execution is incorrect.

                                                    Here is a very simple, artificial example of what I am getting at using just two commands:

                                                    M703
                                                    T0
                                                    

                                                    The command M703 will fail if a tool is not selected but the tool is not selected by the T0 command until after the M703 command has already failed.

                                                    If I execute that same pair of commands a second time the M703 will work since the tool is now selected.


                                                    So if you could post the first 20 lines or so of a file that doesn't print after power on but prints the second time perhaps we can see something.

                                                    Frederick

                                                    Printers: A FT-5 with the 713 upgrade bits. A custom MarkForged style. A small Utilmaker style and a CoreXY from kits. Various hotends. Using Duets (2 and 3) running 3.4.1

                                                    juliann 1 Reply Last reply Reply Quote 0
                                                    • juliann
                                                      juliann @fcwilt last edited by

                                                      @fcwilt

                                                      Hi Frederick,

                                                      This is a fragment of the file I am printing today, of course the behaviour is still the same, after cancelling the first try now it is printing perfectly.

                                                      About M703 and T0, I executed them but I didn't get any event or error.

                                                      Thanks again!
                                                      Julián.

                                                      
                                                      ; 
                                                      
                                                      ; external perimeters extrusion width = 0.45mm
                                                      ; perimeters extrusion width = 0.45mm
                                                      ; infill extrusion width = 0.42mm
                                                      ; solid infill extrusion width = 0.42mm
                                                      ; top infill extrusion width = 0.40mm
                                                      ; first layer extrusion width = 0.42mm
                                                      
                                                      
                                                      M140 S80 ; set bed temperature
                                                      G10 P0 R265 ; sets the standby temperature
                                                      G10 P0 S267 ; set temperature
                                                      ;TYPE:Custom
                                                      G28 ; home all axes
                                                      G1 Z5 F5000 ; lift nozzle
                                                      M107
                                                      G21 ; set units to millimeters
                                                      G90 ; use absolute coordinates
                                                      M82 ; use absolute distances for extrusion
                                                      G92 E0
                                                      ; Filament gcode
                                                      G1 X250 Y250 
                                                      G30
                                                      M290 R0 S-0.12
                                                      
                                                      
                                                      G29 S1
                                                      G10 P0 S267 ; set temperature
                                                      M116 ; wait for temperature to be reached
                                                      M190 S80 ; set bed temperature and wait for it to be reached
                                                      M107
                                                      ;LAYER_CHANGE
                                                      ;Z:0.25
                                                      ;HEIGHT:0.25
                                                      ; 0.2mm layer, 8 bands 5mm each, total height 40mm
                                                      ;
                                                      G1 Z0.25 F18000
                                                      G1 E-0.3 F3600
                                                      G1 X225.081 Y213.029 F18000
                                                      G1 E0 F3000
                                                      ;TYPE:Skirt
                                                      ;WIDTH:0.42
                                                      G1 F600
                                                      G1 X226.211 Y211.864 E0.05129
                                                      G1 X226.84 Y211.385 E0.07628
                                                      G1 X227.733 Y210.982 E0.10725
                                                      G1 X228.699 Y210.814 E0.13823
                                                      G1 X271.124 Y210.809 E1.47905
                                                      G1 X271.771 Y210.864 E1.49958
                                                      G1 X272.401 Y211.025 E1.52011
                                                      
                                                      fcwilt 1 Reply Last reply Reply Quote 0
                                                      • First post
                                                        Last post
                                                      Unless otherwise noted, all forum content is licensed under CC-BY-SA