Something strange is happening with axis_twist_compensations

Basic Information:

Printer Model: Reborn 2
MCU / Printerboard: MKS Robon nano 3.2
Host / SBC OPi 3LTS
klippy.log
klippy.log (448.9 KB)

Describe your issue:

I encountered a problem with the cartographer probe, it seems that the “magnetic properties” of my plate are uneven over its area. Or maybe I have a twisted axle.

I tried to solve the problem using axis twist compensation, but in automatic mode, and in manual mode the result was bad.

I got a good result by manually filling the zy_compensations array based on a comparison of the mesh captured by a mechanical probe and cartographer. In the end I got a good result.

I had to manually determine (substituting the value +1/-1) which coordinate is affected by each of the array points. Since the grid point affected by the array points does not coincide with what is expected (according to step calculations)

For example:

zy_compensations = -1.008539, 1.000313, 0.015569, 0.014932, 0.006441, -0.000984, -0.012127, 0.002186, 0.028477, 0.068101, 0.077560, 0.051082, 0.009974, -0.001965, -0.012288, -0.028904, -0.043189, -0.053216, -0.067589, -0.069802, -0.059742, -0.054628, -0.039702, -0.030494, -0.019312, -0.004636, 0.508863, 1.029587, 2.076481, 3.347414
compensation_start_y = 24.0
compensation_end_y = 324.0

Gives:

The first point affects the Y24 coordinate and the second one affects Y60. The last 2-3 points are completely ignored.
(The calculated step between points should be 324-300/(30-1)=~10.3mm)

I also attach a text log of an example calibration
log.txt (12.9 KB)

calibrate_x: 164
calibrate_start_y: 24
calibrate_end_y: 324

It shows that the coordinates of the measuring points are strange:

// AXIS_TWIST_COMPENSATION_CALIBRATE: Probing point 1 of 30
// probe at 164.000,0.300,1.987 is z=1.970846
// AXIS_TWIST_COMPENSATION_CALIBRATE: Probing point 2 of 30
// probe at 164.000,10.644,1.977 is z=1.969698
// AXIS_TWIST_COMPENSATION_CALIBRATE: Probing point 3 of 30
// probe at 164.000,20.991,1.959 is z=1.966829
// AXIS_TWIST_COMPENSATION_CALIBRATE: Probing point 4 of 30
// probe at 164.000,31.334,1.960 is z=1.967443

My probe has an offset of Y-23.7 which means a coordinate less than Y23.7 is unattainable for it. In this case, the following points are displayed in the log: Y0.300, Y10.644, 20.991,31.334
It also seems that the parameter calibrate_start_y: 24 is ignored, and calibration occurs in some kind of “fictional” coordinate system.

The step between the real points affected by the zy_compensations array is strange, in the screenshot below:
1.First line - calculated coordinates
2. The second line is the step between pairs of points (sorry it took a long time to figure out the coordinates of each point, I measured only the even ones)
3. Third line - Real coordinates to which the offset from the array is applied
4. The fourth line is a test array for example

Perhaps I found the reason, now the second point affects the Y33 coordinate, not Y60.

zy_compensations = +0.00, +0.50, +0.00, -0.03, -0.04, -0.03, -0.03, -0.00, -0.00, -0.00, +0.00, +0.00, +0.00, +0.00, +0.00, +0.00, +0.00, -0.02, -0.05, -0.06, -0.08, -0.08, -0.05, -0.035, -0.01, -0.04, -0.03, +0.00, +0.00, +0.00, +0.00, +0.00, +0.50

Hello, I don’t understand why you ignore this topic? A bug was found, as far as possible I provided evidence and a way to fix it. For me, the solution works perfectly, now manual calibration works correctly.

It would also be nice to take the parameters
[axis_twist_compensation]
calibrate_x:
calibrate_start_y:
calibrate_end_y:
calibrate_y:
calibrate_start_x:
calibrate_end_x:

From:
[bed_mesh]
mesh_min :
mesh_max :
zero_reference_position:

axis_twist_compensation.zip (4.1 KB)

1 Like