2021-07-22 01:40:40 +03:00
|
|
|
# Features
|
|
|
|
|
2017-04-27 22:14:11 +03:00
|
|
|
Klipper has several compelling features:
|
2016-12-21 06:22:54 +03:00
|
|
|
|
|
|
|
* High precision stepper movement. Klipper utilizes an application
|
|
|
|
processor (such as a low-cost Raspberry Pi) when calculating printer
|
|
|
|
movements. The application processor determines when to step each
|
|
|
|
stepper motor, it compresses those events, transmits them to the
|
|
|
|
micro-controller, and then the micro-controller executes each event
|
2017-05-01 18:36:07 +03:00
|
|
|
at the requested time. Each stepper event is scheduled with a
|
2016-12-26 21:15:37 +03:00
|
|
|
precision of 25 micro-seconds or better. The software does not use
|
|
|
|
kinematic estimations (such as the Bresenham algorithm) - instead it
|
|
|
|
calculates precise step times based on the physics of acceleration
|
|
|
|
and the physics of the machine kinematics. More precise stepper
|
2022-11-19 18:12:37 +03:00
|
|
|
movement provides quieter and more stable printer operation.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
|
|
|
* Best in class performance. Klipper is able to achieve high stepping
|
2023-02-20 19:06:25 +03:00
|
|
|
rates on both new and old micro-controllers. Even old 8-bit
|
2020-10-13 21:24:05 +03:00
|
|
|
micro-controllers can obtain rates over 175K steps per second. On
|
2021-11-05 05:08:32 +03:00
|
|
|
more recent micro-controllers, several million steps per second are
|
2017-09-27 20:59:47 +03:00
|
|
|
possible. Higher stepper rates enable higher print velocities. The
|
|
|
|
stepper event timing remains precise even at high speeds which
|
|
|
|
improves overall stability.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Klipper supports printers with multiple micro-controllers. For
|
|
|
|
example, one micro-controller could be used to control an extruder,
|
|
|
|
while another controls the printer's heaters, while a third controls
|
|
|
|
the rest of the printer. The Klipper host software implements clock
|
|
|
|
synchronization to account for clock drift between
|
|
|
|
micro-controllers. No special code is needed to enable multiple
|
|
|
|
micro-controllers - it just requires a few extra lines in the config
|
|
|
|
file.
|
|
|
|
|
2016-12-21 06:22:54 +03:00
|
|
|
* Configuration via simple config file. There's no need to reflash the
|
|
|
|
micro-controller to change a setting. All of Klipper's configuration
|
|
|
|
is stored in a standard config file which can be easily edited. This
|
|
|
|
makes it easier to setup and maintain the hardware.
|
|
|
|
|
2020-10-13 21:24:05 +03:00
|
|
|
* Klipper supports "Smooth Pressure Advance" - a mechanism to account
|
|
|
|
for the effects of pressure within an extruder. This reduces
|
|
|
|
extruder "ooze" and improves the quality of print corners. Klipper's
|
|
|
|
implementation does not introduce instantaneous extruder speed
|
|
|
|
changes, which improves overall stability and robustness.
|
|
|
|
|
|
|
|
* Klipper supports "Input Shaping" to reduce the impact of vibrations
|
|
|
|
on print quality. This can reduce or eliminate "ringing" (also known
|
|
|
|
as "ghosting", "echoing", or "rippling") in prints. It may also
|
|
|
|
allow one to obtain faster printing speeds while still maintaining
|
|
|
|
high print quality.
|
|
|
|
|
|
|
|
* Klipper uses an "iterative solver" to calculate precise step times
|
|
|
|
from simple kinematic equations. This makes porting Klipper to new
|
|
|
|
types of robots easier and it keeps timing precise even with complex
|
|
|
|
kinematics (no "line segmentation" is needed).
|
|
|
|
|
2022-11-19 18:12:37 +03:00
|
|
|
* Klipper is hardware agnostic. One should get the same precise timing
|
|
|
|
independent of the low-level electronics hardware. The Klipper
|
|
|
|
micro-controller code is designed to faithfully follow the schedule
|
|
|
|
provided by the Klipper host software (or prominently alert the user
|
|
|
|
if it is unable to). This makes it easier to use available hardware,
|
|
|
|
to upgrade to new hardware, and to have confidence in the hardware.
|
|
|
|
|
2023-11-11 02:23:35 +03:00
|
|
|
* Portable code. Klipper works on ARM, AVR, PRU, and other
|
2016-12-21 06:22:54 +03:00
|
|
|
micro-controllers. Existing "reprap" style printers can run Klipper
|
|
|
|
without hardware modification - just add a Raspberry Pi. Klipper's
|
|
|
|
internal code layout makes it easier to support other
|
|
|
|
micro-controller architectures as well.
|
|
|
|
|
|
|
|
* Simpler code. Klipper uses a very high level language (Python) for
|
2017-04-27 22:14:11 +03:00
|
|
|
most code. The kinematics algorithms, the G-code parsing, the
|
2018-09-04 03:33:00 +03:00
|
|
|
heating and thermistor algorithms, etc. are all written in Python.
|
|
|
|
This makes it easier to develop new functionality.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2020-10-13 21:24:05 +03:00
|
|
|
* Custom programmable macros. New G-Code commands can be defined in
|
|
|
|
the printer config file (no code changes are necessary). Those
|
|
|
|
commands are programmable - allowing them to produce different
|
|
|
|
actions depending on the state of the printer.
|
|
|
|
|
|
|
|
* Builtin API server. In addition to the standard G-Code interface,
|
|
|
|
Klipper supports a rich JSON based application interface. This
|
|
|
|
enables programmers to build external applications with detailed
|
|
|
|
control of the printer.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2021-07-22 01:40:40 +03:00
|
|
|
## Additional features
|
2016-12-21 06:22:54 +03:00
|
|
|
|
|
|
|
Klipper supports many standard 3d printer features:
|
|
|
|
|
2022-11-29 04:59:31 +03:00
|
|
|
* Several web interfaces available. Works with Mainsail, Fluidd,
|
|
|
|
OctoPrint and others. This allows the printer to be controlled using
|
2016-12-21 06:22:54 +03:00
|
|
|
a regular web-browser. The same Raspberry Pi that runs Klipper can
|
2022-11-29 04:59:31 +03:00
|
|
|
also run the web interface.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
|
|
|
* Standard G-Code support. Common g-code commands that are produced by
|
2021-09-30 03:38:53 +03:00
|
|
|
typical "slicers" (SuperSlicer, Cura, PrusaSlicer, etc.) are
|
|
|
|
supported.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Support for multiple extruders. Extruders with shared heaters and
|
|
|
|
extruders on independent carriages (IDEX) are also supported.
|
|
|
|
|
2021-09-30 03:38:53 +03:00
|
|
|
* Support for cartesian, delta, corexy, corexz, hybrid-corexy,
|
2022-11-29 04:59:31 +03:00
|
|
|
hybrid-corexz, deltesian, rotary delta, polar, and cable winch style
|
|
|
|
printers.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
|
|
|
* Automatic bed leveling support. Klipper can be configured for basic
|
|
|
|
bed tilt detection or full mesh bed leveling. If the bed uses
|
|
|
|
multiple Z steppers then Klipper can also level by independently
|
|
|
|
manipulating the Z steppers. Most Z height probes are supported,
|
2023-11-11 02:23:35 +03:00
|
|
|
including BL-Touch probes and servo activated probes. Probes may be
|
|
|
|
calibrated for axis twist compensation.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
2018-08-29 05:57:29 +03:00
|
|
|
* Automatic delta calibration support. The calibration tool can
|
|
|
|
perform basic height calibration as well as an enhanced X and Y
|
|
|
|
dimension calibration. The calibration can be done with a Z height
|
|
|
|
probe or via manual probing.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
2022-11-29 04:59:31 +03:00
|
|
|
* Run-time "exclude object" support. When configured, this module may
|
|
|
|
facilitate canceling of just one object in a multi-part print.
|
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Support for common temperature sensors (eg, common thermistors,
|
2020-10-13 21:24:05 +03:00
|
|
|
AD595, AD597, AD849x, PT100, PT1000, MAX6675, MAX31855, MAX31856,
|
2023-11-11 02:23:35 +03:00
|
|
|
MAX31865, BME280, HTU21D, DS18B20, AHT10, and LM75). Custom
|
|
|
|
thermistors and custom analog temperature sensors can also be
|
|
|
|
configured. One can monitor the internal micro-controller
|
|
|
|
temperature sensor and the internal temperature sensor of a
|
|
|
|
Raspberry Pi.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
|
|
|
* Basic thermal heater protection enabled by default.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Support for standard fans, nozzle fans, and temperature controlled
|
2021-09-30 03:38:53 +03:00
|
|
|
fans. No need to keep fans running when the printer is idle. Fan
|
|
|
|
speed can be monitored on fans that have a tachometer.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
2019-06-23 19:28:39 +03:00
|
|
|
* Support for run-time configuration of TMC2130, TMC2208/TMC2224,
|
2023-11-11 02:23:35 +03:00
|
|
|
TMC2209, TMC2240, TMC2660, and TMC5160 stepper motor drivers. There
|
|
|
|
is also support for current control of traditional stepper drivers
|
|
|
|
via AD5206, DAC084S085, MCP4451, MCP4728, MCP4018, and PWM pins.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
|
|
|
* Support for common LCD displays attached directly to the printer. A
|
2020-10-13 21:24:05 +03:00
|
|
|
default menu is also available. The contents of the display and menu
|
|
|
|
can be fully customized via the config file.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
|
|
|
* Constant acceleration and "look-ahead" support. All printer moves
|
|
|
|
will gradually accelerate from standstill to cruising speed and then
|
|
|
|
decelerate back to a standstill. The incoming stream of G-Code
|
|
|
|
movement commands are queued and analyzed - the acceleration between
|
2017-04-27 22:14:11 +03:00
|
|
|
movements in a similar direction will be optimized to reduce print
|
|
|
|
stalls and improve overall print time.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Klipper implements a "stepper phase endstop" algorithm that can
|
|
|
|
improve the accuracy of typical endstop switches. When properly
|
|
|
|
tuned it can improve a print's first layer bed adhesion.
|
|
|
|
|
2021-09-30 03:38:53 +03:00
|
|
|
* Support for filament presence sensors, filament motion sensors, and
|
|
|
|
filament width sensors.
|
|
|
|
|
2023-11-11 02:23:35 +03:00
|
|
|
* Support for measuring and recording acceleration using adxl345,
|
|
|
|
mpu9250, mpu6050, and lis2dw12 accelerometers.
|
2020-10-13 21:24:05 +03:00
|
|
|
|
2018-09-04 03:33:00 +03:00
|
|
|
* Support for limiting the top speed of short "zigzag" moves to reduce
|
|
|
|
printer vibration and noise. See the [kinematics](Kinematics.md)
|
|
|
|
document for more information.
|
|
|
|
|
|
|
|
* Sample configuration files are available for many common printers.
|
2020-12-03 23:06:58 +03:00
|
|
|
Check the [config directory](../config/) for a list.
|
2018-09-04 03:33:00 +03:00
|
|
|
|
|
|
|
To get started with Klipper, read the [installation](Installation.md)
|
|
|
|
guide.
|
2016-12-21 06:22:54 +03:00
|
|
|
|
2021-07-22 01:40:40 +03:00
|
|
|
## Step Benchmarks
|
2016-12-21 06:22:54 +03:00
|
|
|
|
|
|
|
Below are the results of stepper performance tests. The numbers shown
|
|
|
|
represent total number of steps per second on the micro-controller.
|
|
|
|
|
2021-11-05 05:08:32 +03:00
|
|
|
| Micro-controller | 1 stepper active | 3 steppers active |
|
2019-09-01 03:48:02 +03:00
|
|
|
| ------------------------------- | ----------------- | ----------------- |
|
2021-11-05 05:08:32 +03:00
|
|
|
| 16Mhz AVR | 157K | 99K |
|
|
|
|
| 20Mhz AVR | 196K | 123K |
|
2022-04-22 02:34:51 +03:00
|
|
|
| SAMD21 | 686K | 471K |
|
2021-11-05 05:08:32 +03:00
|
|
|
| STM32F042 | 814K | 578K |
|
|
|
|
| Beaglebone PRU | 866K | 708K |
|
2021-12-27 18:47:52 +03:00
|
|
|
| STM32G0B1 | 1103K | 790K |
|
2022-04-22 02:34:51 +03:00
|
|
|
| STM32F103 | 1180K | 818K |
|
|
|
|
| SAM3X8E | 1273K | 981K |
|
|
|
|
| SAM4S8C | 1690K | 1385K |
|
|
|
|
| LPC1768 | 1923K | 1351K |
|
|
|
|
| LPC1769 | 2353K | 1622K |
|
|
|
|
| RP2040 | 2400K | 1636K |
|
|
|
|
| SAM4E8E | 2500K | 1674K |
|
|
|
|
| SAMD51 | 3077K | 1885K |
|
2023-02-21 04:15:01 +03:00
|
|
|
| AR100 | 3529K | 2507K |
|
2022-04-22 02:34:51 +03:00
|
|
|
| STM32F407 | 3652K | 2459K |
|
|
|
|
| STM32F446 | 3913K | 2634K |
|
2022-10-20 23:10:36 +03:00
|
|
|
| STM32H743 | 9091K | 6061K |
|
2022-04-22 02:34:51 +03:00
|
|
|
|
|
|
|
If unsure of the micro-controller on a particular board, find the
|
|
|
|
appropriate [config file](../config/), and look for the
|
|
|
|
micro-controller name in the comments at the top of that file.
|
2021-11-05 05:08:32 +03:00
|
|
|
|
|
|
|
Further details on the benchmarks are available in the
|
|
|
|
[Benchmarks document](Benchmarks.md).
|