diff --git a/config/example-extras.cfg b/config/example-extras.cfg index 459e71f4..256fa886 100644 --- a/config/example-extras.cfg +++ b/config/example-extras.cfg @@ -377,6 +377,28 @@ # if retries are enabled then retry if largest and smallest probed points # differ more than retry_tolerance +# Printer Skew Correction. It is possible to use software to correct +# printer skew across 3 planes, xy, xz, yz. This is done by printing +# a calibration model along a plane and measuring three lengths. See +# skew_correction.md in the docs directory for more details. +# +#[skew_correction] +#xy_ac_length: +#xy_bd_length: +#xy_ad_length: +# The measured lengths (in mm) on the xy plane skew calibration print. +# If one length is provided all three lengths must be provided. The default +# is no measurement, which results in no skew correction along the xy plane. +#xz_ac_length: +#xz_bd_length: +#xz_ad_length: +# The same as above, on the xz plane. The default is no skew correction +# on the xz plane. +#yz_ac_length: +#yz_bd_length: +#yz_ad_length: +# The same as above on the yz plane. The default is no skew correction +# on the yz plane. # In a multi-extruder printer add an additional extruder section for # each additional extruder. The additional extruder sections should be diff --git a/docs/G-Codes.md b/docs/G-Codes.md index 3fcdd88e..12b43fb4 100644 --- a/docs/G-Codes.md +++ b/docs/G-Codes.md @@ -468,3 +468,17 @@ of retraction required. parameters. - `G11`: Unretracts the extruder using the currently configured parameters. + +## Skew Correction + +The following commands are available when the "skew_correction" config +section is enabled. + - `GET_CURRENT_SKEW`: Reports the current printer skew for each plane in + both radians and degrees. The skew is calculated based on parameters + provided to the [skew_correction] section of printer.cfg. + - `CALC_MEASURED_SKEW [AC=] [BD=] [AD=]`: + Calculates and reports the skew (in radians and degrees) based on a + measured print. This can be useful for determining the printer's current + skew after correction has been applied. It may also be useful before + correction is applied to determine if skew correction is necessary. See + skew_correction.md for details on skew calibration objects and measurements. diff --git a/docs/img/skew_lengths.png b/docs/img/skew_lengths.png new file mode 100644 index 00000000..3c646b0f Binary files /dev/null and b/docs/img/skew_lengths.png differ diff --git a/docs/skew_correction.md b/docs/skew_correction.md new file mode 100644 index 00000000..f6b7822e --- /dev/null +++ b/docs/skew_correction.md @@ -0,0 +1,52 @@ +Software based skew correction can help resolve dimensional inaccuracies +resulting from a printer assembly that is not perfectly square. Note +that if your printer is significantly skewed it is strongy recommended to +first use mechanical means to get your printer as square as possible prior +to applying software based correction. + +# Print a Calibration Object +The first step in correcting skew is to print a +[calibration object](https://www.thingiverse.com/thing:2563185/files) +along the plane you want to correct. There is also a +[calibration object](https://www.thingiverse.com/thing:2972743) +that includes all planes in one model. You want the object oriented +so that corner A is toward the origin of the plane. + +Make sure that the [skew_correction] module is not enabled in printer.cfg +prior to printing the calibration part. + +# Take your measurements +The [skew_correcton] module requires 3 measurements for each plane you want +to correct; the length from Corner A to Corner C, the length from Corner B +to Corner D, and the length from corner A to corner D. When measuring length +AD do not include the flats on the corners that some test objects provide. + +![skew_lengths](img/skew_lengths.png) + +# Update printer.cfg +Enter your lengths for the calibration print corresponding to the correct +plane under the [skew_correction] section in printer.cfg, for example: +``` +[skew_correction] +xy_ac_length: 140.4 +xy_bd_length: 142.8 +xy_ad_length: 99.8 +``` +Restart your printer. If desired, you can reprint the calibration part +with skew correction enabled. The following gcode can be used to calculate +skew of a single plane and output the results: + +``` +CALC_MEASURED_SKEW AC= BD= AD= +``` + +# Caveats + +When using the [skew_correction] module it is suggested to home all axes +before attempting a move. Homing a single axis to move could result in a +correction along the x and/or y axis, potentially leading to a homing error. + +It is also important to keep in mind that it is possible for [skew_correction] +to generate a correction that moves the tool beyond the printer's boundries +on the X and/or Y axes. It is recommended to arrange parts away from the +edges when using [skew_correction].