-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2.0] Skew Correction #8624
[2.0] Skew Correction #8624
Conversation
b1efaa3
to
87a0d2d
Compare
286664e
to
7dd0bb5
Compare
7dd0bb5
to
0154e34
Compare
Is there a discussion somewhere about the best ways to determine the skew values? |
@CCS86 The exact way to determine the skew values is documented in the configuration file. You just print a square, take some measurements, and input them as your side lengths. /**
* Bed Skew Compensation
*
* This feature corrects for misalignment in the XYZ axes.
*
* Take the following steps to get the bed skew in the XY plane:
* 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
* 2. For XY_DIAG_AC measure the diagonal A to C
* 3. For XY_DIAG_BD measure the diagonal B to D
* 4. For XY_SIDE_AD measure the edge A to D
*
* Marlin automatically computes skew factors from these measurements.
* Skew factors may also be computed and set manually:
*
* - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
* - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
*
* If desired, follow the same procedure for XZ and YZ.
* Use these diagrams for reference:
*
* Y Z Z
* ^ B-------C ^ B-------C ^ B-------C
* | / / | / / | / /
* | / / | / / | / /
* | A-------D | A-------D | A-------D
* +-------------->X +-------------->X +-------------->Y
* XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
*/ |
Doh! How did I miss that? hahaha Thank you @thinkyhead |
In case anyone is interested, I modeled my own calibration square. I saw some areas to improve over the one linked:
I print it in Cura 3.1 with no bottom or top layers, 35% density triangular infill, 8 perimeter laps, a brim, and 25 mm/s outer wall speed: Model: |
Nice work! Is it essentially more sturdy, easier to measure from corner to corner, and so on? We should include it in the Marlin package with any other test/calibration G-code we think would help get settings dialed in (and to stress-test things like feedrate, acceleration, direction-changes, braking, etc.). |
Feel free to include it. I also made a model for testing motion settings / planner throughput, that has been helpful. I print it as a spiral vase at different speeds/acceleration/jerk combinations: |
Wow, that is great, and a work of art besides. As it happens we're in a total testing/debugging mode right now with Marlin, including adding more stress-tests like these for both developers to check code and end-users to check settings. I just started a The script uses So, anyway, please contribute more ideas and tests! We'll be happy to use them and make them part of the test suite. |
Very cool. I think my thread here could be of some help in the testing/tuning: |
Would it be appropriate to add a few line drawing GCodes to help test the linear advance stuff? It might be helpful for the people that use that if there was a standardized test. Maybe something that can draw a small sub-section of this pattern: |
There is such a test posted somewhere on the internets. Or, a script that generates the test G-code. We could include that. |
Based on #8623, #8204 by @Paciente8159
Concise Diff
Machine skew in the XY, XZ and YZ planes can be adjusted with command M852 I J K command.
Values are stored in EEPROM.
This is a re-commit of #8159 with the changes suggested by @Allted and additional mangling by @thinkyhead.
This addresses issue #3839 and #5116.