Minimal 3DP Klipper Calibration and Optimization Website - A Work in Progress
Launched - 2024-04-12
This section is my attempt to to create a Klipper Calibration website. It is based on my Klipper Calibration Spreadsheet
This is the multi-page printable view of this section. Click here to print.
Minimal 3DP Klipper Calibration and Optimization Website - A Work in Progress
Launched - 2024-04-12
This section is my attempt to to create a Klipper Calibration website. It is based on my Klipper Calibration Spreadsheet
On an extruder, the rotation_distance is the amount of distance the filament travels for one full rotation of the stepper motor. The best way to get an accurate value for this setting is to use a “measure and trim” procedure.
First start with an initial guess for the rotation distance. This may be obtained from steps_per_mm or by inspecting the hardware.
Then use the following procedure to “measure and trim”:
G91
G1 E50 F60
The value calculated should be pasted into your printer.cfg file under “Extruder”.
[extruder]
step_pin: PD15
dir_pin: PD14
enable_pin: !PC7
microsteps: 16
rotation_distance: <PASTE HERE>
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB3
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA2
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 250
max_extrude_cross_section: 4
** Video Coming Soon **
The flow rate calibration is done in order to fine tune the amount of plastic extruded by the printer. Also known as Extrusion Multiplier, by calibrating the flow rate you can fix issues caused by under-extrusion or over-extrusion. Besides this, flow rate calibration can also improve retraction values a bit and help with bulging corners and layer seam. If the extruder steps are properly calibrated, the flow rate value should be really close to a single digit value (1.00).
Flow Rate Calibration – Improve Print Accuracy
Slicer Settings | |
---|---|
Layer Height | 0.2 |
Paerimeters | 2 |
Line Width | 0.5 |
Print Thin Walls | Off |
Top Layer | 0 |
Bottom Layer | 1 |
Infill | 0% |
Cube STL File: Flow Cube
Calculating Currents - To calculate the maximum Klipper current settings for a given stepper, follow this process: Look up the specifications for the stepper motor and locate the peak current limits of the motor. Multiply the peak current by 0.707 to determine the maximum current in RMS. This is the maximum run current.
Calculating Driver Current Settings
The maximum Klipper RUN current settings can be calculated via the following steps:
** maximum capacity of the 2209 driver is 1.2 Amps. **
Edit the run current for each motor (x, y, z).
[tmc2209 stepper_x]
uart_pin: PE0
run_current: <RUN CURRENT>
diag_pin:
Pressure advance does two useful things - it reduces ooze during non-extrude moves and it reduces blobbing during cornering. This guide uses the second feature (reducing blobbing during cornering) as a mechanism for tuning.
Paramenter | Value |
---|---|
Nozzle Diameter | 0.4 |
Layer Height | 0.3 |
Infill | 0 |
Test Model: Square Tower
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
Direct Drive:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
Bowden Tube:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020
“Klipper Input Shaping improves print quality by exorcising the ghosts caused by vibrations and resonances. Read on to learn all about it!”
Klipper: Input Shaping – Simply Explained
Basic tuning requires measuring the ringing frequencies of the printer by printing a test model.
According to the Klipper docs, slice the ringing test model, which can be found in docs/prints/ringing_tower.stl, in the slicer:
Parameter | Value | Notes |
---|---|---|
Layer Height | 0.2 | or .25 |
Paerimeters | 1 | 0r 2 0r Vase Mode |
Line Width | 0.5 | |
Print Speed | 100 | 0r 80 |
Top Layer | 0 | |
Bottom Layer | 5 | |
Infill | 0% |
SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000
SET_PRESSURE_ADVANCE ADVANCE=0
SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5
Add Below to Printer.cfg with above X and Y Frequencies
[input_shaper]
shaper_freq_x: <X Frequency> # frequency for the X mark of the test model
shaper_freq_y: <Y Frequency> # frequency for the Y mark of the test model
Then Run the following Steps in the Klipper Console:
RESTART
SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000
SET_PRESSURE_ADVANCE ADVANCE=0
SET_INPUT_SHAPER SHAPER_TYPE=MZV
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5
If you see no rings add the following to the [input_shaper] section
[input_shaper]
shaper_freq_x: <X Frequency> # frequency for the X mark of the test model
shaper_freq_y: <Y Frequency> # frequency for the Y mark of the test model
shaper_type: mzv
** Video Coming Soon **
** Video Coming Soon **
This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
The rotational axes with a lead screw can be easily calculated with the following formula:
rotation_distance = <screw_pitch> * <number_of_separate_threads>
Pitch | # of Threads | ||
---|---|---|---|
Variables | 2 | 4 | T8x8 |
2 | 2 | T8x4 | |
2 | 1 | T8x2 |
TL;DR
Extruder
PID_CALIBRATE HEATER=extruder TARGET=205
Bed
PID_CALIBRATE HEATER=heater_bed TARGET=65
PID tuning is essential for maintaining consistent temperatures in your 3D printer’s hot end and heat bed, leading to better print quality. Here’s a breakdown of PID tuning in Klipper:
PID stands for Proportional-Integral-Derivative. It’s a method that helps the printer controller adjust heating power based on the difference between the desired temperature (setpoint) and the actual temperature reading from the sensor. By fine-tuning these adjustments, the printer maintains a stable temperature with minimal fluctuations.
Klipper offers a straightforward approach to PID tuning using extended G-codes. Here’s a step-by-step process:
Access your Klipper interface: Open your Klipper instance through the web interface (Fluidd, Mainsail, etc.).
Initiate PID calibration: In the console, enter the following command, replacing “extruder” with the actual name of your extruder if it’s different:
PID_CALIBRATE HEATER=extruder TARGET=205
For me, 205 typically works the best for PLA.
SAVE_CONFIG
Access your Klipper interface: Open your Klipper instance through the web interface (Fluidd, Mainsail, etc.).
Initiate PID calibration: In the console, enter the following command:
PID_CALIBRATE HEATER=heater_bed TARGET=65
I usually go with the bed at 65 for PLA.
SAVE_CONFIG
The PID calibration cycle: Klipper will now run the extruder or bed through heat up, cool down, and heat up again cycles. This collects data to calculate optimal PID values.
Obtaining results: After the cycle, Klipper might display the calculated PID values in the console. You can also find them in the “klippy.log” file.
By following these steps, you can effectively PID tune your Klipper setup and achieve better temperature control for your 3D prints.
Testing a BLTouch with Klipper involves several steps to ensure that the probe is functioning correctly. Here’s a simplified process:
Initial Setup: Make sure the BLTouch is correctly mounted and the pin is about 2 mm above the nozzle when retracted (1).
Self-Test: Power on the printer; the BLTouch should perform a self-test, moving the pin up and down. After this, the pin should retract, and the red LED should light up (1).
Control Pin Test:
Send BLTOUCH_DEBUG COMMAND=pin_down
in the printer terminal to move the pin down.
BLTOUCH_DEBUG COMMAND=pin_down
Verify that the red LED turns off.
Send BLTOUCH_DEBUG COMMAND=pin_up
to retract the pin and ensure the red LED turns on (1).
BLTOUCH_DEBUG COMMAND=pin_up
Sensor Pin Test:
With the pin down, send BLTOUCH_DEBUG COMMAND=touch_mode
, then QUERY_PROBE
and check for “probe: open”.
BLTOUCH_DEBUG COMMAND=touch_mode
&
QUERY_PROBE
Gently push the pin up with your finger, send QUERY_PROBE
again, and look for “probe: TRIGGERED”.
QUERY_PROBE
- If the responses are incorrect, check your wiring and configuration (1).
Probing Test: Move the print head away from the bed and repeat the control and sensor pin tests to confirm the probe’s response when not near the bed surface (1).
Remember to handle the BLTouch probe gently and avoid touching the pin with your fingers, as it’s sensitive to grease and pressure. If you encounter any issues during these tests, it’s usually a sign to double-check your wiring and configuration settings¹. Always refer to the official Klipper documentation for detailed instructions and troubleshooting tips. Happy printing!
References: (1) BL-Touch - Klipper documentation. (2) Klipper & BLTouch: How to Make Them Work Together | All3DP. (3) Testing the BLTouch - MatterHackers Knowledge Base (4) klipper/docs/BLTouch.md at master · Klipper3d/klipper · GitHub