Z_tilt_adjust and bed mesh

Basic Information:

klippy.log (3.3 MB)

Printer Model: TriZero
MCU / Printerboard: BTT SKR2
Host / SBC : Raspberry Pi4
klippy.log

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:

Have a freshly rebuilt TriZero (voron0.2 with triple belted Z) and a nozzle probing setup called Boop. I have been experiencing an issue with Z_tilt_adjust and the bed mesh, as well as the resulting printed first layer test. The Z_tilt_adjust probes the bed with the nozzle at Z:x10y10 Z1:x60y115 and Z2:x10y110 and levels those three points using the triple belted z system with these results:
stepper_z = 0.008615
stepper_z1 = 0.004348
stepper_z2 = -0.012790

so it seems they are very close to the same z height from the nozzle. I perform a bed mesh and the mesh is not great looking


I have printed some first layer tests and they are no good either, starting off way too close at x110y10 and graduating across the build plate to being too high at x10 y110

I performed a nozzle paper tug test at each z_tilt_adjust point, and have found that the rear point Z1 is too high, despite the near perfect result from z_tilt_adjust. Z2 feels too close with the paper and Z is just right at 0.2mm with paper moving with the proper resistance or tug. So the three points are at different heights despite Z_tilt being used.

I performed a probe_accuracy test at each point z, z1 and z2
x110, y10
probe accuracy results: maximum -0.587210, minimum -0.617210, range 0.030000, average -0.607210, median -0.607210, standard deviation 0.010000

x10, y10
probe accuracy results: maximum -0.587210, minimum -0.587210, range 0.000000, average -0.587210, median -0.587210, standard deviation 0.000000

x60, y110
probe accuracy results: maximum -0.667210, minimum -0.687210, range 0.020000, average -0.676210, median -0.677210, standard deviation 0.007

the z1 point shows as being 0.1mm higher which is consistent with what I was seeing with the paper test. this has to be a mechanical issue, but I cant for the life of me figure out what.

I’m having a hard time understanding these results:

  • PROBE_ACCURACY tests should not yield different results at different locations. At least not in the range shown here.
  • Ranges around 0.025 are already considered not fit for the purpose.

From the Range number: range: 0.030000 my guess is your Z axis cant have a resolution better than 0.01mm/microstep. Really we want that to be more like 0.0005mm/microstep.

Can you increase micro stepping on the Z axis?

This indicates to me that there is some effect on the probe system at different points of the bed. As the toolhead moves, something is affecting it, such as frame alignment or toolhead integrity. Perhaps the optical switch from the Boop kit?

Ill make the config change tonight. I have been running the z system at 16 microsteps, which results in a 0.00125 step distance. From my limited research, it sounds like i could go to 256 microsteps which would yield a step distance of 0.000625, which is very close to your suggested number.

Hi
I did look at your logs and seems i can point to some direction where trouble is.

  1. First of all make sure that temperature of your toolhead and heatbed are well stabilized and is constant when you are doing calibration routines.
    As I can see in your logs when your printer is executing Z_TILT_ADJUST routines and BED_MESH_CALIBRATE - almost always your toolhead temperature is rising or falling.
    It’s a first FATAL error - your toolhead is changing size and you are usint it to measuze Z height.

  2. During your callibration routines and between them i see following warnings

Stepper stepper_z phase change (was 4 now 36)
Stepper stepper_z1 phase change (was 8 now 40)

I didn’t see similar messages about stepper_z2.

This warnings are generated from tmc.py - Klipper is querying TMC drivers and see that stepper motors did change their rotor position !
For 16 microsteps mode 64 phases is a 1 full step, so for example 36-4=32 phases shift.
32 phases shift is a 8 microsteps which in your configuration translates to 0.08mm shift. I did see few times multiple instances of shifts between tilt adjust and bed_mesh calibration.
Klipper does see this issue and just throws warning and updating internal state to current state - as i undestand Klipper is not compensating it, it just update the state.
More about phases you can read here, it’s explained in relation to ENDSTOP, but basically your PROBE is also an ENDSTOP.

Goog luck.
Please give some feedback of your findings for others.

Thank you for your input! On the first point, most of my work has been done cold, however there is a nozzle clean routine that raises the temp to brush the nozzle clean of filament. I will make sure things are stable during further testing, to avoid changes to the toolhead.

When I perused the log, I did see those mentions of the stepper phase change, and was curious about its meaning. Your point that its affecting only two motors is a good one. I will look into this further. I wonder if bad steppers or bad tmc2209 could cause such a thing?

I changed microsteps to 256 and retried the probe_accuracy command:

x110y10
probe accuracy results: maximum -0.585523, minimum -0.604273, range 0.018750, average -0.597773, median -0.598336, standard deviation 0.005117

x10y10
probe accuracy results: maximum -0.588023, minimum -0.613023, range 0.025000, average -0.603961, median -0.607086, standard deviation 0.007553

x60y110
probe accuracy results: maximum -0.593648, minimum -0.601148, range 0.007500, average -0.598211, median -0.598336, standard deviation 0.002093

these results are very different than before, notable at the rear position the range is much better and the offset is the same instead of 0.1mm more

the paper tug test however still indicates that the three points are off, with the x10y110 position being higher than the other two.

the bed mesh is still garbage too.

looks like my first job will be looking at improving probe accuracy at all three points

furthermore, the stepper phase change is still mentioned in the log, only the values are much greater, due to the microstep change:
Stepper stepper_z phase change (was 593 now 937)
Stepper stepper_z1 phase change (was 626 now 970)

Did you try to increase a minimal holding current for steppers or compleetly disable autotune ?
it’s possible that autotune decrease them so much that they can’t hold a load and start slipping - but this is just guessing from my side.

BTW did you re-check stepper positions ?
maybe you mixed them up - you assume following
stepper_z is at -47, 10
stepper_z1 is at 60, 130
stepper_z2 is at 167, 10
but if some of them are mixed (like stepper_z1 is at position of stepper_z2)you will have troubles …

Also i spotted following from your log:

Line 2671: Calculating bed tilt with: [[10.000000000020444, 10.000000000020469, -0.6099888585838182], [59.99999999997655, 104.99999999998252, -0.599988858583838], [109.99999999998875, 10.000000000011248, -0.6099888585838578]]
Line 2694: probe at 10.000,10.000 is z=-0.680000
Line 2719: probe at 110.000,10.000 is z=-0.640000
Line 2824: probe at 60.000,110.000 is z=-0.760000

first one was from tild adjust at 200777 sec - and as we can see it stabilised at -0.60
next lines was from bed_mesh which started at 200785 (8 second differeence)
and immediately we see that Z heights at same points already drifted - Question: How it’s possible ?? it’s clearly something wrong there. Also in thouse 8 seconds (after Tilt adjust and start of bed mesh) phase_shifts was happening 3 times, and many more during bed scanning.

So I have made several moves over the last couple of days. I felt there was a problem with the frame, and decided to tear down and rebuild the printer, doing so on a glass stovetop and paying extra care to squareness, tightness etc. Since the rebuild the bed mesh is better, but still faulty.

I also disabled autotune and have been running without it. The phase changes are appearing in the log still, on stepper_z and stepper_z1 but never stepper_z2. I have also seen the phase changes appear for stepper_x and stepper_y in separate instances.

The probe accuracy is still changing at different points of the bed. All within the Klipper recommended limit of 0.025 but still I am wondering why it is changing.
This is indicated perhaps in your point about the probe drifting. I’m not sure how it can drift, as the Boop/Tap mechanism seems very robust and I have gone over it carefully, unable to find any defects.

I have determined that stepper_z, z1 and z2 are correctly set up as the front left(z), rear(z1) then front right(z2) as detailed in the documentation, confirmed with stepper_buzz commands and I have measured the distances to the pivot points and adjusted them somewhat so they are more accurate, but they were close before.

I am able to lay down a good first layer if I perform z_tilt_adjust, and then issue a force move command for stepper_z1 to move -0.1mm and stepper_z2 to move -0.075mm, and then not perform a bed mesh and simply print a first layer test. This has been reproduced over ten times now. Why is z_tilt_adjust reporting a flat plane, but the reality is the three points are off by these margins? I’m feeling frustrated.

I am thinking the problem could be hardware related. Perhaps I will try changing out a few things:

  1. Z steppers *Changed out the rear stepper_z1 with another. Still phase changes in the klippy.log on stepper_z1.
  2. Control board SKR2
  3. TMC2209 driver chips
  4. reinstall Klipper from a fresh start, reflash MCU’s?
1 Like

I would try to do repeatability test:

Do Z_tilt_adjust, then position toolhead at point x=10,y=10,z=40
then do PROBE command and record distance, (toolhead should return to Z=40)
then wait 60 sec and repeat PROBE again
do this 5 times (without moving of toolhed)
then analyze the results.

If distance is the same (deviation should be minimal in 0.025 range) - then repeat PROBE command 5 times but now between probing - move toolhead on X axis, something like:

G1 X10Y10Z40
PROBE
G1 X80
G1 X10
# Wait 60 sec
PROBE
G1 X80
G1 X10
# Wait 60 sec
....

and again analyze the results, then do the same but move on Y axis.

This way you can try to catch on which conditions error is appearing,
If you would see that without moving toolhead on XY your error is there and constatlly increasing - then most probably it’s a STEPPER_Z skipping (mechanically or electronically), if error is jumping in some range - then most probably it’s your toolhead jamming/slipping or probe itself is not reliable, if error will appear only after you moved some axis X or Y - then error is related to them, etc …

First identify exact issue and only then do some action (one at a time) or you will be chasing this error very long time.