diff --git a/README.md b/README.md index f594c95d..1dcfbefd 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,11 @@ runs on a host machine. The host software does the work to build a schedule of events, while the micro-controller software does the work to execute the provided schedule at the specified times. -Please see the [documentation](docs/Overview.md) for more information -on running and working with Klipper. +See the [features](docs/Features.md) document to find out why you +should use Klipper. To begin using Klipper start by +[installing](docs/Installation.md) it. + +There is also [developer documentation](docs/Overview.md) available. License ======= diff --git a/docs/Features.md b/docs/Features.md new file mode 100644 index 00000000..956caed3 --- /dev/null +++ b/docs/Features.md @@ -0,0 +1,85 @@ +Klipper is an experimental 3d printer firmware. It has several +compelling features: + +* 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 + at the requested time. Each stepper event is scheduled with a + precision of no less than 50 micro-seconds. 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. + +* Best in class performance. Klipper is able to achieve high stepping + rates on both new and old micro-controllers. Even an old 8bit AVR + micro-controller can obtain rates up to 150K steps per second. On + more recent ARM micro-controllers, rates over 350K 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. + +* 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. + +* Portable code. Klipper works on both ARM and AVR + 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 + most code. The kinematics algorithms, the gcode parsing, the heating + and thermistor algorithms, etc. are all written in Python. This + makes it easier to develop new functionality. + +* Advanced features. Klipper implements the "pressure advance" + algorithm for extruders. When properly tuned, pressure advance + reduces extruder ooze. Klipper also implements a novel "stepper + phase endstop" algorithm that can dramatically improve the accuracy + of typical endstop switches. When properly tuned it can improve a + print's first layer bed adhesion. + +To get started with Klipper, read the [installation](Installation.md) +guide. + +Common features supported by Klipper +==================================== + +Klipper supports many standard 3d printer features: + +* 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. + +* Constant speed acceleration support. All printer moves will + gradually accelerate from standstill to cruising speed and then + decelerate back to a standstill. + +* "Lookahead" support. The incoming stream of G-Code movement commands + are queued and analyzed - the acceleration between movements in a + similar direction will be optimized to reduce print stalls and + improve overall print time. + +* Support for both delta printers and cartesian style printers. + +Step Benchmarks +=============== + +Below are the results of stepper performance tests. The numbers shown +represent total number of steps per second on the micro-controller. + +| Micro-controller | 1 stepper active | 3 steppers active | +| ----------------- | ---------------- | ----------------- | +| 20Mhz AVR | 158.7K | 103K | +| 16Mhz AVR | 126.9K | 82K | +| Arduino Due (ARM) | 352.9K | 288K | diff --git a/docs/Overview.md b/docs/Overview.md index 6c7a9458..73342a50 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -1,5 +1,6 @@ See [installation](Installation.md) for information on compiling, -installing, and running Klipper. +installing, and running Klipper. Read [features](Features.md) for a +high-level description of useful capabilities. See [code overview](Code_Overview.md) for developer information on the structure and layout of the Klipper code.