| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | @dropdown | |||||||||||||||||||||||||
2 | Skew Factor Calculator | |||||||||||||||||||||||||
3 | ||||||||||||||||||||||||||
4 | Y | |||||||||||||||||||||||||
5 | ^ B-------C | |||||||||||||||||||||||||
6 | | / / | Notes: | ||||||||||||||||||||||||
7 | | / / | Let your test print cool down to room temperature before measuring it. | ||||||||||||||||||||||||
8 | | A-------D | You can increase the accuracy of your measurements by uniformly scaling up the test print, eg 150% (but don't rotate it). | ||||||||||||||||||||||||
9 | +-------------->X | f | ||||||||||||||||||||||||
10 | XY skew factor | |||||||||||||||||||||||||
11 | A ------- D Measurments ? | |||||||||||||||||||||||||
12 | Measure AC, BD and AD from your test print | YES | ||||||||||||||||||||||||
13 | Enter your values in the GREEN boxes | |||||||||||||||||||||||||
14 | ||||||||||||||||||||||||||
15 | AC | 79.99 | mm | |||||||||||||||||||||||
16 | BD | 79.89 | mm | |||||||||||||||||||||||
17 | AD | 56.20 | mm | |||||||||||||||||||||||
18 | ||||||||||||||||||||||||||
19 | Don't overwrite the formulas in the boxes below ! | |||||||||||||||||||||||||
20 | Your skew angle and the correction are in the YELLOW boxes | |||||||||||||||||||||||||
21 | ||||||||||||||||||||||||||
22 | Do NOT overwrite ➔ | AB | 56.8504 | mm | ||||||||||||||||||||||
23 | skew angle | 0.00125102 | radians | |||||||||||||||||||||||
24 | 0.071678 | degrees | ||||||||||||||||||||||||
25 | ||||||||||||||||||||||||||
26 | correction | -0.001251 | radians | |||||||||||||||||||||||
27 | ||||||||||||||||||||||||||
28 | ||||||||||||||||||||||||||
29 | Apply your correction with this gcode: | |||||||||||||||||||||||||
30 | ||||||||||||||||||||||||||
31 | M1005 I-0.001251 | |||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||
33 | ||||||||||||||||||||||||||
34 | M1005 I-0.001251 | |||||||||||||||||||||||||
35 | ||||||||||||||||||||||||||
36 | ||||||||||||||||||||||||||
37 | M1005 I0.004514 | |||||||||||||||||||||||||
38 | ||||||||||||||||||||||||||
39 | ||||||||||||||||||||||||||
40 | ||||||||||||||||||||||||||
41 | ||||||||||||||||||||||||||
42 | ||||||||||||||||||||||||||
43 | ||||||||||||||||||||||||||
44 | ||||||||||||||||||||||||||
45 | ||||||||||||||||||||||||||
46 | Hey folks, | |||||||||||||||||||||||||
47 | ||||||||||||||||||||||||||
48 | I came up with a formula that provides a more accurate result than the one used in the "XY Skew Calculator221". | |||||||||||||||||||||||||
49 | ||||||||||||||||||||||||||
50 | AB | 56.6400 | Here's the formula: | |||||||||||||||||||||||
51 | correction | 0.00125566731 | ➔ | -ASC((AC² - BD²) / (4 × AD × AB)) | ||||||||||||||||||||||
52 | old | The result of this formula should be inserted after the M1005 I command. | ||||||||||||||||||||||||
53 | new | 0.00125566731 | ||||||||||||||||||||||||
54 | The key difference is that Calculator221 uses an average value for AB, while my method requires measuring AB directly — which increases accuracy. So in total, you need to measure four values: both diagonals (AC and BD) and both sides (AD and AB). | |||||||||||||||||||||||||
55 | ||||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||
57 | ||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||
59 | And here’s the exact formula you can plug into the sheet: | |||||||||||||||||||||||||
60 | -ASC((D15^2 - D16^2) / (4 * D17 * {YOUR AB})) | |||||||||||||||||||||||||
61 | ||||||||||||||||||||||||||
62 | If anyone knows how to contact the original author of Calculator221, I’d appreciate a tip — I haven’t been able to find any info. | |||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||
64 | Cheers! | |||||||||||||||||||||||||
65 | https://github.com/glstas | |||||||||||||||||||||||||
66 | ||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||
68 | ||||||||||||||||||||||||||
69 | Here’s a method that gets round the problem of the skew compensation value not being retained when the printer is powered off: | |||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||
72 | From repeated measurements of test prints I have calculated that the skew in the XY geometry of my Bambu X1C is -0.003594 radians (-0.20592 degrees). The method of calculating this skew factor is detailed in my post headed M1005 [In] (see above). | |||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||
74 | To correct this I apply the -ve of the skew factor (in radians) as a correction factor with gcode M1005 using the [In] parameter: | |||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||
76 | M1005 I0.003594 | |||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | I’ve added this gcode (as a permanent addition) at the end of the Machine start G-code so the correction is applied for every print, including when the printer has been powered off and restarted. | |||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | To the limits of my printer’s accuracy and the accuracy of my measurements this brings my XY skew down to about -0.005 degrees, 2.4% of the original skew. Over the width of the print bed that would equate to an error of only 0.02mm. | |||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | The M1005 [In] format of the command doesn’t iteratively apply a new compensation value to the previous one, like the M1005 [Xn] [Yn] format does. So every print will just have the same correction factor applied. | |||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | I don’t include M500 after the M1005 [In] command in the Machine start G-code because: | |||||||||||||||||||||||||
87 | a) It doesn’t work to retain the setting ‘after restart’. | |||||||||||||||||||||||||
88 | b) It might be repeatedly updating non-volatile memory on one of the X1C controller boards which might reduce its lifespan so it seems safer to exclude it until we understand how M500 has been implemented in the Bambu Lab firmware. | |||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 | ||||||||||||||||||||||||||