Funktionen¶
Klipper hat viele überzeugende Funktionen:
- Hochpräzise Schrittmotorbewegung. Klipper nutzt für die Berechnung der Druckerbewegungen einen Anwendungsprozessor (zum Beispiel einen kostengünstigen Raspberry Pi). Der Anwendungsprozessor bestimmt, wann jeder Schrittmotor einen Schritt ausführen soll, komprimiert diese Ereignisse, überträgt sie an den Mikrocontroller, und der Mikrocontroller führt anschließend jedes Ereignis zum angeforderten Zeitpunkt aus. Jedes Schrittereignis wird mit einer Genauigkeit von 25 Mikrosekunden oder besser eingeplant. Die Software verwendet keine kinematischen Schätzverfahren (wie den Bresenham-Algorithmus) - stattdessen berechnet sie exakte Schrittzeiten auf Basis der Physik der Beschleunigung und der Physik der Maschinenkinematik. Eine präzisere Schrittmotorbewegung ermöglicht einen leiseren und stabileren Druckerbetrieb.
- Erstklassige Leistung. Klipper erreicht sowohl auf neuen als auch auf älteren Mikrocontrollern hohe Schrittraten. Selbst alte 8-Bit-Mikrocontroller können Raten von über 175K Schritten pro Sekunde erreichen. Auf neueren Mikrocontrollern sind mehrere Millionen Schritte pro Sekunde möglich. Höhere Schrittraten ermöglichen höhere Druckgeschwindigkeiten. Das Timing der Schrittereignisse bleibt auch bei hohen Geschwindigkeiten präzise, was die Gesamtstabilität verbessert.
- Klipper unterstützt Drucker mit mehreren Mikrocontrollern. Beispielsweise könnte ein Mikrocontroller einen Extruder steuern und ein anderer die Heizelemente, während ein Dritter die restlichen Funktionen des Druckers steuert. Die Klipper Host-Anwendung synchronisiert den Takt der Mikrocontroller, um Taktschwankungen zwischen Mikrocontrollern auszugleichen. Um mehrere Mikrocontroller zu verwenden müssen lediglich einige Zeilen in der Konfigurationsdatei eingefügt werden.
- Konfiguration über eine einfache Konfigurationsdatei. Es besteht keine Notwendigkeit, den Mikrocontroller neu zu flashen, um eine Einstellung zu ändern. Die gesamte Konfiguration von Klipper wird in einer Standard-Konfigurationsdatei gespeichert, die einfach bearbeitet werden kann. Das macht die Einrichtung und Wartung der Hardware einfacher.
- Klipper unterstützt "Smooth Pressure Advance" - einen Mechanismus, der die Auswirkungen von Druck innerhalb eines Extruders berücksichtigt. Dadurch wird das "Oozing " des Extruders reduziert und die Qualität der Druckecken verbessert. Die Implementierung von Klipper führt nicht zu sofortigen Änderungen der Extrudergeschwindigkeit, was die Gesamtstabilität und Robustheit verbessert.
- Klipper unterstützt "Input Shaping", um die Auswirkungen von Vibrationen auf die Druckqualität zu reduzieren. Dies kann "Ringing" (auch bekannt als "Ghosting", "Echoing" oder "Rippling") in Drucken reduzieren oder eliminieren. Es kann auch eine höhere Druckgeschwindigkeit bei gleichbleibender Druckqualität ermöglichen.
- Klipper verwendet einen "iterative solver", um präzise Schrittzeiten aus einfachen kinematischen Gleichungen zu berechnen. Das macht die Portierung von Klipper auf neue Robotertypen einfacher und die Zeitmessung bleibt auch bei komplexer Kinematik präzise (es ist keine "Liniensegmentierung" erforderlich).
- Klipper ist hardwareunabhängig. Man sollte unabhängig von der Low-Level-Elektronik dasselbe präzise Timing erhalten. Der Klipper-Mikrocontroller-Code ist so ausgelegt, dass er dem von der Klipper-Host-Software vorgegebenen Zeitplan getreu folgt (oder den Benutzer deutlich darauf hinweist, wenn ihm das nicht möglich ist). Das erleichtert die Nutzung vorhandener Hardware, die Aufrüstung auf neue Hardware und das Vertrauen in die Hardware.
- Portable code. Klipper works on ARM, AVR, PRU, and other 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.
- Einfacherer Code. Klipper verwendet Python für den Großteil des Codes. Die Kinematik-Algorithmen, das Parsen des G-Codes, die Heiz- und Thermistor-Algorithmen usw. sind alle in Python geschrieben. Das macht es einfacher, neue Funktionen zu entwickeln.
- Benutzerdefinierte programmierbare Makros. Neue G-Code-Befehle können in der Druckerkonfigurationsdatei definiert werden (es sind keine Codeänderungen erforderlich). Diese Befehle sind programmierbar, so dass sie je nach Zustand des Druckers unterschiedliche Aktionen auslösen können.
- Eingebauter API-Server. Zusätzlich zur Standard-G-Code-Schnittstelle unterstützt Klipper eine umfangreiche JSON-basierte Anwendungsschnittstelle. Dies ermöglicht es Programmierern, externe Anwendungen mit detaillierter Kontrolle über den Drucker zu erstellen.
Zusätzliche Funktionen¶
Klipper unterstützt viele Standard-3D-Druckerfunktionen:
- Mehrere Web-Schnittstellen verfügbar. Funktioniert mit Mainsail, Fluidd, OctoPrint und anderen. Dadurch kann der Drucker über einen normalen Webbrowser gesteuert werden. Derselbe Raspberry Pi, auf dem Klipper läuft, kann auch die Weboberfläche ausführen.
- Standard-G-Code-Unterstützung. Gängige G-Code-Befehle, die von typischen "Slicern" (SuperSlicer, Cura, PrusaSlicer, etc.) erzeugt werden, werden unterstützt.
- Unterstützung für mehrere Extruder. Extruder mit geteilten Heizelementen und Extruder auf unabhängigen Schlitten (IDEX) werden ebenfalls unterstützt.
- Unterstützung für cartesian, delta, corexy, corexz, hybrid-corexy, hybrid-corexz, deltesian, rotary delta, polar, und cable winch style Drucker.
- Automatic bed leveling support. Klipper can be configured for basic bed tilt detection or full mesh bed leveling. The bed mesh can be customized to the print size (adaptive bed mesh). 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 BL-Touch probes and servo activated probes. Probes may be calibrated for axis twist compensation. If using an "eddy current probe" then one can utilize fast bed mesh scanning,
- Unterstützung für die automatische Delta-Kalibrierung. Das Kalibrierwerkzeug kann sowohl eine grundlegende Höhenkalibrierung als auch eine erweiterte Kalibrierung der X- und Y-Dimension durchführen. Die Kalibrierung kann mit einer Z-Höhensonde oder durch manuelles Abtasten erfolgen.
- Unterstützung für "exclude object" zur Laufzeit. Nach entsprechender Konfiguration kann dieses Modul den Abbruch nur eines einzelnen Objekts innerhalb eines Mehrteiledrucks ermöglichen.
- Support for common temperature sensors (eg, common thermistors, AD595, AD597, AD849x, PT100, PT1000, MAX6675, MAX31855, MAX31856, MAX31865, BME280, HTU21D, DS18B20, AHT1X, AHT2X, AHT3X, SHT3x, 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.
- Einfache Schutzfunktion für Heizelemente, standardmäßig aktiviert.
- Support for standard fans, nozzle fans, and temperature controlled fans. No need to keep fans running when the printer is idle. Fan speed can be monitored on fans that have a tachometer. One can assign a "math formula" to a fan for automatic fan speed updating.
- Support for run-time configuration of TMC2130, TMC2208/TMC2224, 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.
- Unterstützung für gängige LCD-Displays, die direkt an den Drucker angeschlossen werden. Ein Standardmenü ist ebenfalls verfügbar. Der Inhalt der Anzeige und des Menüs kann über die Konfigurationsdatei vollständig angepasst werden.
- Unterstützung für konstante Beschleunigung und "Look-ahead". Alle Druckerbewegungen beschleunigen schrittweise aus dem Stillstand auf Reisegeschwindigkeit und bremsen anschließend wieder bis zum Stillstand ab. Der eingehende Strom von G-Code-Bewegungsbefehlen wird in eine Warteschlange eingereiht und analysiert - die Beschleunigung zwischen Bewegungen in ähnlicher Richtung wird optimiert, um Druckstockungen zu reduzieren und die Gesamtdruckzeit zu verbessern.
- Klipper implementiert einen "Stepper-Phase-Endstop"-Algorithmus, der die Genauigkeit typischer Endstop-Schalter verbessern kann. Wenn er richtig eingestellt ist, kann er die Haftung der ersten Schicht des Druckbetts verbessern.
- Unterstützung für Filamentanwesenheitssensoren, Filamentbewegungssensoren und Filamentbreitensensoren.
- Support for measuring and recording acceleration using adxl345, mpu9250, mpu6050, lis2dw12, lis3dh, and icm20948 accelerometers.
- Unterstützung für die Begrenzung der Höchstgeschwindigkeit von kurzen "Zickzack"-Bewegungen, um Druckervibrationen und Geräusche zu reduzieren. Weitere Informationen finden Sie im Dokument kinematics.
- Für viele gängige Drucker sind Beispielkonfigurationsdateien verfügbar. Eine Liste finden Sie im config-Verzeichnis.
Um mit Klipper zu beginnen, lesen Sie die installation Anleitung.
Schritt Benchmarks¶
Nachfolgend sind die Ergebnisse der Stepper-Leistungstests aufgeführt. Die angegebenen Zahlen stellen die Gesamtzahl der Schritte pro Sekunde auf dem Mikrocontroller dar.
| Mikrocontroller | 1 Schrittmotor aktiv | 3 Schrittmotoren aktiv |
|---|---|---|
| 16Mhz AVR | 157K | 99K |
| 20Mhz AVR | 196K | 123K |
| SAMD21 | 686K | 471K |
| STM32F042 | 814K | 578K |
| Beaglebone PRU | 866K | 708K |
| STM32G0B1 | 1103K | 790K |
| STM32F103 | 1180K | 818K |
| SAM3X8E | 1273K | 981K |
| SAM4S8C | 1690K | 1385K |
| LPC1768 | 1923K | 1351K |
| LPC1769 | 2353K | 1622K |
| SAM4E8E | 2500K | 1674K |
| SAMD51 | 3077K | 1885K |
| AR100 | 3529K | 2507K |
| STM32G431 | 3617K | 2452K |
| STM32F407 | 3652K | 2459K |
| STM32F446 | 3913K | 2634K |
| RP2040 | 4000K | 2571K |
| RP2350 | 4167K | 2663K |
| SAME70 | 6667K | 4737K |
| STM32H723 | 7429K | 8619K |
Wenn Sie sich nicht sicher sind, welcher Mikrocontroller auf einem bestimmten Board installiert ist, suchen Sie die entsprechende config-Datei und suchen Sie den Namen des Mikrocontrollers in den Kommentaren am Anfang der Datei.
Weitere Einzelheiten zu den Benchmarks finden Sie im Dokument Benchmarks.