Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+
-
@juliann how repeatable is the z probe if you probe manually multiple times in the same place?
-
Hi @t3p3tony
Which commands should I use to probe manually?
Thanks! -
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
-
@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. -
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 -
@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?
-
@juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:
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 mmYou 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-1Frederick
-
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!
-
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
-
@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
-
-
@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? -
You are correct, there is no G28 inserted in the slicer.
Yes, the variations are present between different runs of the same print.
-
@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
-
@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.
-
-
-
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. -
@juliann said in Unreliable Z height calibration on V-Core 3 w/BLtouch & Mini 5+:
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
-
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.