docs: Add Bed_Level.md and Probe_Calibrate.md documents

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2019-02-06 18:49:11 -05:00
parent b0b9fc6f4a
commit 57e6acbc5c
6 changed files with 301 additions and 18 deletions

211
docs/Bed_Level.md Normal file
View File

@ -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.

View File

@ -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").

View File

@ -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:
@ -56,7 +62,7 @@ SAVE_CONFIG
``` ```
The basic calibration should provide delta parameters that are The basic calibration should provide delta parameters that are
accurate enough for basic printing. If this is a new printer, this is accurate enough for basic printing. If this is a new printer, this is
a good time to print some basic objects and verify general a good time to print some basic objects and verify general
functionality. functionality.

View File

@ -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

66
docs/Probe_Calibrate.md Normal file
View File

@ -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.

BIN
docs/img/paper-test.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB