2017-04-27 21:14:11 +02:00
|
|
|
Klipper has several compelling features:
|
2016-12-21 04:22:54 +01: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 17:36:07 +02:00
|
|
|
at the requested time. Each stepper event is scheduled with a
|
2016-12-26 19:15:37 +01: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
|
|
|
|
movement translates to quieter and more stable printer operation.
|
2016-12-21 04:22:54 +01:00
|
|
|
|
|
|
|
* Best in class performance. Klipper is able to achieve high stepping
|
|
|
|
rates on both new and old micro-controllers. Even an old 8bit AVR
|
2017-04-11 19:53:33 +02:00
|
|
|
micro-controller can obtain rates over 175K steps per second. On
|
2017-09-27 19:59:47 +02:00
|
|
|
more recent micro-controllers, rates over 500K steps per second are
|
|
|
|
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 04:22:54 +01:00
|
|
|
|
2018-09-04 02:33:00 +02: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 04:22:54 +01: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.
|
|
|
|
|
2018-07-08 17:01:54 +02:00
|
|
|
* Portable code. Klipper works on ARM, AVR, and PRU based
|
2016-12-21 04:22:54 +01: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 21:14:11 +02:00
|
|
|
most code. The kinematics algorithms, the G-code parsing, the
|
2018-09-04 02:33:00 +02:00
|
|
|
heating and thermistor algorithms, etc. are all written in Python.
|
|
|
|
This makes it easier to develop new functionality.
|
2016-12-21 04:22:54 +01:00
|
|
|
|
2018-09-04 02:33:00 +02:00
|
|
|
* 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).
|
2016-12-21 04:22:54 +01:00
|
|
|
|
2018-09-04 02:33:00 +02:00
|
|
|
Additional features
|
|
|
|
===================
|
2016-12-21 04:22:54 +01:00
|
|
|
|
|
|
|
Klipper supports many standard 3d printer features:
|
|
|
|
|
2018-09-04 02:33:00 +02:00
|
|
|
* Klipper implements the "pressure advance" algorithm for extruders.
|
|
|
|
When properly tuned, pressure advance reduces extruder ooze.
|
|
|
|
|
2016-12-21 04:22:54 +01:00
|
|
|
* Works with Octoprint. This allows the printer to be controlled using
|
|
|
|
a regular web-browser. The same Raspberry Pi that runs Klipper can
|
|
|
|
also run Octoprint.
|
|
|
|
|
|
|
|
* Standard G-Code support. Common g-code commands that are produced by
|
|
|
|
typical "slicers" are supported. One may continue to use Slic3r,
|
|
|
|
Cura, etc. with Klipper.
|
|
|
|
|
2018-09-04 02:33:00 +02:00
|
|
|
* Support for multiple extruders. Extruders with shared heaters and
|
|
|
|
extruders on independent carriages (IDEX) are also supported.
|
|
|
|
|
|
|
|
* Support for cartesian, delta, and corexy style printers.
|
|
|
|
|
|
|
|
* 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,
|
|
|
|
including servo activated probes.
|
|
|
|
|
2018-08-29 04:57:29 +02: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 02:33:00 +02:00
|
|
|
|
|
|
|
* Support for common temperature sensors (eg, common thermistors,
|
2020-08-10 03:06:43 +02:00
|
|
|
AD595, AD597, AD849x, PT100, MAX6675, MAX31855, MAX31856, MAX31865).
|
|
|
|
Custom thermistors and custom analog temperature sensors can also be
|
2018-09-04 02:33:00 +02:00
|
|
|
configured.
|
|
|
|
|
|
|
|
* Basic thermal heater protection enabled by default.
|
2016-12-21 04:22:54 +01:00
|
|
|
|
2018-09-04 02:33:00 +02:00
|
|
|
* Support for standard fans, nozzle fans, and temperature controlled
|
|
|
|
fans. No need to keep fans running when the printer is idle.
|
|
|
|
|
2019-06-23 18:28:39 +02:00
|
|
|
* Support for run-time configuration of TMC2130, TMC2208/TMC2224,
|
|
|
|
TMC2209, TMC2660, and TMC5160 stepper motor drivers. There is also
|
|
|
|
support for current control of traditional stepper drivers via
|
|
|
|
AD5206, MCP4451, MCP4728, MCP4018, and PWM pins.
|
2018-09-04 02:33:00 +02:00
|
|
|
|
|
|
|
* Support for common LCD displays attached directly to the printer. A
|
|
|
|
default menu is also available.
|
|
|
|
|
|
|
|
* 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 21:14:11 +02:00
|
|
|
movements in a similar direction will be optimized to reduce print
|
|
|
|
stalls and improve overall print time.
|
2016-12-21 04:22:54 +01:00
|
|
|
|
2018-09-04 02:33:00 +02: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.
|
|
|
|
|
|
|
|
* 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.
|
2019-04-15 03:12:21 +02:00
|
|
|
Check the
|
|
|
|
[config directory](https://github.com/KevinOConnor/klipper/tree/master/config/)
|
|
|
|
for a list.
|
2018-09-04 02:33:00 +02:00
|
|
|
|
|
|
|
To get started with Klipper, read the [installation](Installation.md)
|
|
|
|
guide.
|
2016-12-21 04:22:54 +01:00
|
|
|
|
|
|
|
Step Benchmarks
|
|
|
|
===============
|
|
|
|
|
|
|
|
Below are the results of stepper performance tests. The numbers shown
|
|
|
|
represent total number of steps per second on the micro-controller.
|
|
|
|
|
2019-09-01 02:48:02 +02:00
|
|
|
| Micro-controller | Fastest step rate | 3 steppers active |
|
|
|
|
| ------------------------------- | ----------------- | ----------------- |
|
2019-09-06 19:24:20 +02:00
|
|
|
| 16Mhz AVR | 154K | 102K |
|
|
|
|
| 20Mhz AVR | 192K | 127K |
|
2019-09-01 02:48:02 +02:00
|
|
|
| Arduino Zero (SAMD21) | 234K | 217K |
|
2019-09-08 15:25:31 +02:00
|
|
|
| "Blue Pill" (STM32F103) | 387K | 360K |
|
2019-09-01 02:48:02 +02:00
|
|
|
| Arduino Due (SAM3X8E) | 438K | 438K |
|
2019-09-08 15:13:51 +02:00
|
|
|
| Duet2 Maestro (SAM4S8C) | 564K | 564K |
|
2019-09-01 02:48:02 +02:00
|
|
|
| Smoothieboard (LPC1768) | 574K | 574K |
|
|
|
|
| Smoothieboard (LPC1769) | 661K | 661K |
|
|
|
|
| Beaglebone PRU | 680K | 680K |
|
|
|
|
| Duet2 Wifi/Eth (SAM4E8E) | 686K | 686K |
|
2019-11-18 18:49:05 +01:00
|
|
|
| Adafruit Metro M4 (SAMD51) | 761K | 692K |
|
2019-09-01 02:48:02 +02:00
|
|
|
| BigTreeTech SKR Pro (STM32F407) | 922K | 711K |
|
2017-08-11 17:40:54 +02:00
|
|
|
|
|
|
|
On AVR platforms, the highest achievable step rate is with just one
|
2019-02-07 19:24:03 +01:00
|
|
|
stepper stepping. On the SAMD21 and STM32F103 the highest step rate is
|
|
|
|
with two simultaneous steppers stepping. On the SAM3X8E, SAM4S8C,
|
2019-02-01 16:49:32 +01:00
|
|
|
SAM4E8E, LPC176x, and PRU the highest step rate is with three
|
2019-09-01 02:48:02 +02:00
|
|
|
simultaneous steppers. On the SAMD51 and STM32F4 the highest step rate
|
|
|
|
is with four simultaneous steppers. (Further details on the benchmarks
|
|
|
|
are available in the [Benchmarks document](Benchmarks.md).)
|