docs: Add Bed_Level.md and Probe_Calibrate.md documents
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
b0b9fc6f4a
commit
57e6acbc5c
|
@ -0,0 +1,211 @@
|
||||||
|
Bed leveling (sometimes also referred to as "bed tramming") is
|
||||||
|
critical to getting high quality prints. If a bed is not properly
|
||||||
|
"leveled" it can lead to poor bed adhesion, "warping", and subtle
|
||||||
|
problems throughout the print. This document serves as a guide to
|
||||||
|
performing bed leveling in Klipper.
|
||||||
|
|
||||||
|
It's important to understand the goal of bed leveling. If the printer
|
||||||
|
is commanded to a position `X0 Y0 Z10` during a print, then the goal
|
||||||
|
is for the printer's nozzle to be exactly 10mm from the printer's
|
||||||
|
bed. Further, should the printer then be commanded to a position of
|
||||||
|
`X50 Z10` the goal is for the nozzle to maintain an exact distance of
|
||||||
|
10mm from the bed during that entire horizontal move.
|
||||||
|
|
||||||
|
In order to get good quality prints the printer should be calibrated
|
||||||
|
so that Z distances are accurate to within about 25 microns (.025mm).
|
||||||
|
This is a small distance - significantly smaller than the width of a
|
||||||
|
typical human hair. This scale can not be measured "by eye". Subtle
|
||||||
|
effects (such as heat expansion) impact measurements at this scale.
|
||||||
|
The secret to getting high accuracy is to use a repeatable process and
|
||||||
|
to use a leveling method that leverages the high accuracy of the
|
||||||
|
printer's own motion system.
|
||||||
|
|
||||||
|
# Choose the appropriate calibration mechanism
|
||||||
|
|
||||||
|
Different types of printers use different methods for performing bed
|
||||||
|
leveling. All of them ultimately depend on the "paper test" (described
|
||||||
|
below). However, the actual process for a particular type of printer
|
||||||
|
is described in other documents.
|
||||||
|
|
||||||
|
Prior to running any of these calibration tools, be sure to run the
|
||||||
|
checks described in the [config check document](Config_checks.md). It
|
||||||
|
is necessary to verify basic printer motion before performing bed
|
||||||
|
leveling.
|
||||||
|
|
||||||
|
For printers with an "automatic Z probe" be sure to calibrate the
|
||||||
|
probe following the directions in the
|
||||||
|
[Probe Calibrate](Probe_Calibrate.md) document. For delta printers,
|
||||||
|
see the [Delta Calibrate](Delta_Calibrate.md) document.
|
||||||
|
|
||||||
|
During calibration it may be necessary to set the printer's Z
|
||||||
|
`position_min` to a negative number (eg, `position_min = -2`). The
|
||||||
|
printer enforces boundary checks even during calibration
|
||||||
|
routines. Setting a negative number allows the printer to move below
|
||||||
|
the nominal position of the bed, which may help when trying to
|
||||||
|
determine the actual bed position.
|
||||||
|
|
||||||
|
# The "paper test"
|
||||||
|
|
||||||
|
The primary bed calibration mechanism is the "paper test". It involves
|
||||||
|
placing a regular piece of "copy machine paper" between the printer's
|
||||||
|
bed and nozzle, and then commanding the nozzle to different Z heights
|
||||||
|
until one feels a small amount of friction when pushing the paper back
|
||||||
|
and forth.
|
||||||
|
|
||||||
|
It is important to understand the "paper test" even if one has an
|
||||||
|
"automatic Z probe". The probe itself often needs to be calibrated to
|
||||||
|
get good results. That probe calibration is done using this "paper
|
||||||
|
test".
|
||||||
|
|
||||||
|
In order to perform the paper test, cut a small rectangular piece of
|
||||||
|
paper using a pair of scissors (eg, 5x3 cm). The paper generally has a
|
||||||
|
width of around 100 microns (0.100mm). (The exact width of the paper
|
||||||
|
isn't crucial.)
|
||||||
|
|
||||||
|
The first step of the paper test is to inspect the printer's nozzle
|
||||||
|
and bed. Make sure there is no plastic (or other debris) on the nozzle
|
||||||
|
or bed.
|
||||||
|
|
||||||
|
**Inspect the nozzle and bed to ensure no plastic is present!**
|
||||||
|
|
||||||
|
If one always prints on a particular tape or printing surface then one
|
||||||
|
may perform the paper test with that tape/surface in place. However,
|
||||||
|
note that tape itself has a width and different tapes (or any other
|
||||||
|
printing surface) will impact Z measurements. Be sure to rerun the
|
||||||
|
paper test to measure each type of surface that is in use.
|
||||||
|
|
||||||
|
If there is plastic on the nozzle then heat up the extruder and use a
|
||||||
|
metal tweezers to remove that plastic. Wait for the extruder to fully
|
||||||
|
cool to room temperature before continuing with the paper test. While
|
||||||
|
the nozzle is cooling, use the metal tweezers to remove any plastic
|
||||||
|
that may ooze out.
|
||||||
|
|
||||||
|
**Always perform the paper test when both nozzle and bed are at room
|
||||||
|
temperature!**
|
||||||
|
|
||||||
|
When the nozzle is heated, its position (relative to the bed) changes
|
||||||
|
due to thermal expansion. This thermal expansion is typically around a
|
||||||
|
100 microns, which is about the same width as a typical piece of
|
||||||
|
printer paper. The exact amount of thermal expansion isn't crucial,
|
||||||
|
just as the exact width of the paper isn't crucial. Start with the
|
||||||
|
assumption that the two are equal (see below for a method of
|
||||||
|
determining the difference between the two widths).
|
||||||
|
|
||||||
|
It may seem odd to calibrate the distance at room temperature when the
|
||||||
|
goal is to have a consistent distance when heated. However, if one
|
||||||
|
calibrates when the nozzle is heated, it tends to impart small amounts
|
||||||
|
of molten plastic on to the paper, which changes the amount of
|
||||||
|
friction felt. That makes it harder to get a good calibration.
|
||||||
|
Calibrating while the bed/nozzle is hot also greatly increases the
|
||||||
|
risk of burning oneself. The amount of thermal expansion is stable, so
|
||||||
|
it is easily accounted for later in the calibration process.
|
||||||
|
|
||||||
|
**Use an automated tool to determine precise Z heights!**
|
||||||
|
|
||||||
|
Klipper has several helper scripts available (eg, MANUAL_PROBE,
|
||||||
|
Z_ENDSTOP_CALIBRATE, PROBE_CALIBRATE, DELTA_CALIBRATE). Choose one of
|
||||||
|
them and follow the directions in the documents described above.
|
||||||
|
|
||||||
|
Run the appropriate command in the OctoPrint terminal window. The
|
||||||
|
script will prompt for user interaction in the OctoPrint terminal
|
||||||
|
output. It will look something like:
|
||||||
|
```
|
||||||
|
Recv: // Starting manual Z probe. Use TESTZ to adjust position.
|
||||||
|
Recv: // Finish with ACCEPT or ABORT command.
|
||||||
|
Recv: // Z position: ?????? --> 5.000 <-- ??????
|
||||||
|
```
|
||||||
|
|
||||||
|
The current height of the nozzle (as the printer currently understands
|
||||||
|
it) is shown between the "--> <--". The number to the right is the
|
||||||
|
height of the last probe attempt just greater than the current height,
|
||||||
|
and to the left is the last probe attempt less than the current height
|
||||||
|
(or ?????? if no attempt has been made).
|
||||||
|
|
||||||
|
Place the paper between the nozzle and bed. It can be useful to fold a
|
||||||
|
corner of the paper so that it is easier to grab. (Try not to push
|
||||||
|
down on the bed when moving the paper back and forth.)
|
||||||
|
|
||||||
|
![paper-test](img/paper-test.jpg)
|
||||||
|
|
||||||
|
Use the TESTZ command to request the nozzle to move closer to the
|
||||||
|
paper. For example:
|
||||||
|
```
|
||||||
|
TESTZ Z=-.1
|
||||||
|
```
|
||||||
|
|
||||||
|
The TESTZ command will move the nozzle a relative distance from the
|
||||||
|
nozzle's current position. (So, `Z=-.1` requests the nozzle to move
|
||||||
|
closer to the bed by .1mm.) After the nozzle stops moving, push the
|
||||||
|
paper back and forth to check if the nozzle is in contact with the
|
||||||
|
paper and to feel the amount of friction. Continue issuing TESTZ
|
||||||
|
commands until one feels a small amount of friction when testing with
|
||||||
|
the paper.
|
||||||
|
|
||||||
|
If too much friction is found then one can use a positive Z value to
|
||||||
|
move the nozzle up. It is also possible to use `TESTZ Z=+` or `TESTZ
|
||||||
|
Z=-` to "bisect" the last position - that is to move to a position
|
||||||
|
half way between two positions. For example, if one received the
|
||||||
|
following prompt from a TESTZ command:
|
||||||
|
```
|
||||||
|
Recv: // Z position: 0.130 --> 0.230 <-- 0.280
|
||||||
|
```
|
||||||
|
Then a `TESTZ Z=-` would move the nozzle to a Z position of 0.180
|
||||||
|
(half way between 0.130 and 0.230). One can use this feature to help
|
||||||
|
rapidly narrow down to a consistent friction. It is also possible to
|
||||||
|
use `Z=++` and `Z=--` to return directly to a past measurement - for
|
||||||
|
example, after the above prompt a `TESTZ Z=--` command would move the
|
||||||
|
nozzle to a Z position of 0.130.
|
||||||
|
|
||||||
|
After finding a small amount of friction run the ACCEPT command:
|
||||||
|
```
|
||||||
|
ACCEPT
|
||||||
|
```
|
||||||
|
This will accept the given Z height and proceed with the given
|
||||||
|
calibration tool.
|
||||||
|
|
||||||
|
The exact amount of friction felt isn't crucial, just as the amount of
|
||||||
|
thermal expansion and exact width of the paper isn't crucial. Just try
|
||||||
|
to obtain the same amount of friction each time one runs the test.
|
||||||
|
|
||||||
|
If something goes wrong during the test, one can use the `ABORT`
|
||||||
|
command to exit the calibration tool.
|
||||||
|
|
||||||
|
# Determining Thermal Expansion
|
||||||
|
|
||||||
|
After successfully performing bed leveling, one may go on to calculate
|
||||||
|
a more precise value for the combined impact of "thermal expansion",
|
||||||
|
"width of the paper", and "amount of friction felt during the paper
|
||||||
|
test".
|
||||||
|
|
||||||
|
This type of calculation is generally not needed as most users find
|
||||||
|
the simple "paper test" provides good results.
|
||||||
|
|
||||||
|
The easiest way to make this calculation is to print a test object
|
||||||
|
that has straight walls on all sides. The large hollow square found in
|
||||||
|
[docs/prints/square.stl](prints/square.stl) can be used for this.
|
||||||
|
When slicing the object, make sure the slicer uses the same layer
|
||||||
|
height and extrusion widths for the first level that it does for all
|
||||||
|
subsequent layers. Use a coarse layer height (the layer height should
|
||||||
|
be around 75% of the nozzle diameter) and do not use a brim or raft.
|
||||||
|
|
||||||
|
Print the test object, wait for it to cool, and remove it from the
|
||||||
|
bed. Inspect the lowest layer of the object. (It may also be useful to
|
||||||
|
run a finger or nail along the bottom edge.) If one finds the bottom
|
||||||
|
layer bulges out slightly along all sides of the object then it
|
||||||
|
indicates the nozzle was slightly closer to the bed then it should
|
||||||
|
be. One can issue a `SET_GCODE_OFFSET Z=+.010` command to increase the
|
||||||
|
height. In subsequent prints one can inspect for this behavior and
|
||||||
|
make further adjustment as needed. Adjustments of this type are
|
||||||
|
typically in 10s of microns (.010mm).
|
||||||
|
|
||||||
|
If the bottom layer consistently appears narrower than subsequent
|
||||||
|
layers then one can use the SET_GCODE_OFFSET command to make a
|
||||||
|
negative Z adjustment. If one is unsure, then one can decrease the Z
|
||||||
|
adjustment until the bottom layer of prints exhibit a small bulge, and
|
||||||
|
then back-off until it disappears.
|
||||||
|
|
||||||
|
The easiest way to apply the desired Z adjustment is to create a
|
||||||
|
START_PRINT g-code macro, arrange for the slicer to call that macro
|
||||||
|
during the start of each print, and add a SET_GCODE_OFFSET command to
|
||||||
|
that macro. See the [slicers](Slicers.md) document for further
|
||||||
|
details.
|
|
@ -152,16 +152,13 @@ command is: `PID_CALIBRATE HEATER=heater_bed TARGET=60`
|
||||||
### Next steps
|
### Next steps
|
||||||
|
|
||||||
This guide is intended to help with basic verification of pin settings
|
This guide is intended to help with basic verification of pin settings
|
||||||
in the Klipper configuration file. It may be necessary to perform
|
in the Klipper configuration file. Be sure to read the
|
||||||
detailed printer calibration - a number of guides are available online
|
[bed leveling](Bed_Level.md) guide. Also see the [Slicers](Slicers.md)
|
||||||
to help with this (for example, do a web search for "3d printer
|
document for information on configuring a slicer with Klipper.
|
||||||
calibration").
|
|
||||||
|
|
||||||
See the [Slicers](Slicers.md) document for information on configuring
|
|
||||||
a slicer with Klipper. If one is using traditional endstop switches
|
|
||||||
with Trinamic stepper motor drivers then see the
|
|
||||||
[Endstop Phase](Endstop_Phase.md) document. If using a delta printer,
|
|
||||||
see the [Delta Calibrate](Delta_Calibrate.md) document.
|
|
||||||
|
|
||||||
After one has verified that basic printing works, it is a good idea to
|
After one has verified that basic printing works, it is a good idea to
|
||||||
consider calibrating [pressure advance](Pressure_Advance.md).
|
consider calibrating [pressure advance](Pressure_Advance.md).
|
||||||
|
|
||||||
|
It may be necessary to perform other types of detailed printer
|
||||||
|
calibration - a number of guides are available online to help with
|
||||||
|
this (for example, do a web search for "3d printer calibration").
|
||||||
|
|
|
@ -9,6 +9,11 @@ them manually. In contrast, the software calibration code can provide
|
||||||
excellent results with just a few minutes of time. No special probing
|
excellent results with just a few minutes of time. No special probing
|
||||||
hardware is necessary to get good results.
|
hardware is necessary to get good results.
|
||||||
|
|
||||||
|
Ultimately, the delta calibration is dependent on the precision of the
|
||||||
|
tower endstop switches. If one is using Trinamic stepper motor drivers
|
||||||
|
then consider enabling [endstop phase](Endstop_Phase.md) detection to
|
||||||
|
improve the accuracy of those switches.
|
||||||
|
|
||||||
Basic delta calibration
|
Basic delta calibration
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
@ -35,13 +40,14 @@ calibration completes, one can remove this setting from the config.)
|
||||||
There are two ways to perform the probing - manual probing and
|
There are two ways to perform the probing - manual probing and
|
||||||
automatic probing. Automatic probing utilizes a hardware device
|
automatic probing. Automatic probing utilizes a hardware device
|
||||||
capable of triggering when the toolhead is at a set distance from the
|
capable of triggering when the toolhead is at a set distance from the
|
||||||
bed. Manual probing involves using the "paper test" to determine the
|
bed. Manual probing involves using the
|
||||||
height at each probe point. It is recommended to use manual probing
|
["paper test"](Bed_Level.md#the-paper-test) to determine the height at
|
||||||
for delta calibration. A number of common printer kits come with
|
each probe point. It is recommended to use manual probing for delta
|
||||||
probes that are not sufficiently accurate (specifically, small
|
calibration. A number of common printer kits come with probes that are
|
||||||
differences in arm length can cause effector tilt which can skew an
|
not sufficiently accurate (specifically, small differences in arm
|
||||||
automatic probe). Manual probing only takes a few minutes and it
|
length can cause effector tilt which can skew an automatic
|
||||||
eliminates error introduced by the probe.
|
probe). Manual probing only takes a few minutes and it eliminates
|
||||||
|
error introduced by the probe.
|
||||||
|
|
||||||
To perform the basic probe, make sure the config has a
|
To perform the basic probe, make sure the config has a
|
||||||
[delta_calibrate] section defined and run:
|
[delta_calibrate] section defined and run:
|
||||||
|
|
|
@ -14,6 +14,9 @@ as a reference for the config file. See the [Slicers](Slicers.md)
|
||||||
document for information on configuring a slicer with Klipper. See the
|
document for information on configuring a slicer with Klipper. See the
|
||||||
[Endstop Phase](Endstop_Phase.md) document for information on
|
[Endstop Phase](Endstop_Phase.md) document for information on
|
||||||
Klipper's "stepper phase adjusted endstop" system. See the
|
Klipper's "stepper phase adjusted endstop" system. See the
|
||||||
|
[Bed Level](Bed_Level.md) document for information on bed leveling
|
||||||
|
with Klipper. See the [Probe Calibrate](Probe_Calibrate.md) document
|
||||||
|
for information on calibrating automatic Z probes. See the
|
||||||
[Delta Calibrate](Delta_Calibrate.md) document for information on
|
[Delta Calibrate](Delta_Calibrate.md) document for information on
|
||||||
calibrating delta printers. The
|
calibrating delta printers. The
|
||||||
[Pressure Advance](Pressure_Advance.md) document contains information
|
[Pressure Advance](Pressure_Advance.md) document contains information
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
This document describes the method for calibrating the x, y, and z
|
||||||
|
offsets of an "automatic z probe" in Klipper. This is useful for users
|
||||||
|
that have a `[probe]` or `[bltouch]` section in their config file.
|
||||||
|
|
||||||
|
# Calibrating probe X and Y offsets
|
||||||
|
|
||||||
|
To calibrate the X and Y offset, navigate to the OctoPrint "Control"
|
||||||
|
tab, home the printer, and then use the OctoPrint jogging buttons to
|
||||||
|
move the head to a position near the center of the bed.
|
||||||
|
|
||||||
|
Place a piece of blue painters tape (or similar) on the bed underneath
|
||||||
|
the probe. Navigate to the OctoPrint "Terminal" tab and issue a PROBE
|
||||||
|
command:
|
||||||
|
```
|
||||||
|
PROBE
|
||||||
|
```
|
||||||
|
Place a mark on the tape directly under where the probe is (or use a
|
||||||
|
similar method to note the location on the bed).
|
||||||
|
|
||||||
|
Issue a `GET_POSITION` command and record the toolhead XY location
|
||||||
|
reported by that command. For example if one sees:
|
||||||
|
```
|
||||||
|
Recv: // toolhead: X:46.500000 Y:27.000000 Z:15.000000 E:0.000000
|
||||||
|
```
|
||||||
|
then one would record a probe X position of 46.5 and probe Y position
|
||||||
|
of 27.
|
||||||
|
|
||||||
|
After recording the probe position, issue a series of G1 commands
|
||||||
|
until the nozzle is directly above the mark on the bed. For example,
|
||||||
|
one might issue:
|
||||||
|
```
|
||||||
|
G1 F300 X57 Y30 Z15
|
||||||
|
```
|
||||||
|
to move the nozzle to an X position of 57 and Y of 30. Once one finds
|
||||||
|
the position directly above the mark, use the `GET_POSITION` command
|
||||||
|
to report that position. This is the nozzle position.
|
||||||
|
|
||||||
|
The x_offset is then the `nozzle_x_position - probe_x_position` and
|
||||||
|
y_offset is similarly the `nozzle_y_position - probe_y_position`.
|
||||||
|
Update the printer.cfg file with the given values, remove the
|
||||||
|
tape/marks from the bed, and then issue a `RESTART` command so that
|
||||||
|
the new values take effect.
|
||||||
|
|
||||||
|
# Calibrating probe Z offset
|
||||||
|
|
||||||
|
Providing an accurate probe Z offset is critical to obtaining high
|
||||||
|
quality prints.
|
||||||
|
|
||||||
|
Start by homing the printer and then move the head to a position near
|
||||||
|
the center of the bed. Navigate to the OctoPrint terminal tab and run
|
||||||
|
the `PROBE_CALIBRATE` command to start Klipper's probe calibration
|
||||||
|
tool.
|
||||||
|
|
||||||
|
This tool will perform an automatic probe, then lift the head, move
|
||||||
|
the nozzle over the location of the probe point, and start the manual
|
||||||
|
probe tool. Once the manual probe tool starts, perform the
|
||||||
|
["paper test"](Bed_Level.md#the-paper-test) to determine the actual
|
||||||
|
nozzle height at the given point.
|
||||||
|
|
||||||
|
If the nozzle does not move to a position above the probe point, then
|
||||||
|
`ABORT` the manual probe tool and perform the XY probe offset
|
||||||
|
calibration described above.
|
||||||
|
|
||||||
|
After completing the "paper test", use the `ACCEPT` command to
|
||||||
|
accept the current Z height and then use the `SAVE_CONFIG` command to
|
||||||
|
save the given probe z_offset to the config file.
|
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Loading…
Reference in New Issue