
Klipper: Host-Rechner, printer.cfg und rotation_distance verstehen
Thema: 3D-Druck: Einstellungen, Material & Fehler
Klipper gilt oft als Firmware, die einen 3D-Drucker schneller macht. Das stimmt nur zum Teil: Die Firmware erzeugt höhere Schrittraten und plant Bewegungen aufwendiger, doch Rahmen, Riemen, Motoren, Hotend und Kühlung bleiben die Grenze. Für Umbau und Fehlersuche zählt vor allem die Aufgabenteilung zwischen Host und Mikrocontroller.
Aufgabenteilung zwischen Host und Mikrocontroller
Bei herkömmlicher Drucker-Firmware laufen G-Code-Verarbeitung, Bahnplanung und Schrittausgabe auf dem Mikrocontroller des Druckerboards. Klipper verlagert die Rechenarbeit auf einen Host: Er bestimmt, wann jeder Schrittmotor einen Schritt ausführen muss, und überträgt diese Ereignisse komprimiert an den Mikrocontroller, der sie zum angeforderten Zeitpunkt ausführt. Laut Dokumentation wird jedes Schrittereignis auf 25 µs oder genauer geplant.
Der Host-Teil heißt Klippy und ist in Python mit C-Hilfscode geschrieben. Die FAQ empfiehlt Raspberry Pi Zero 2 W, 3, 4 oder 5; andere Einplatinenrechner und x86-Hardware unter Linux sind möglich, Raspberry Pi 1, 2 und Zero 1 zu schwach. Wie sich dieser Aufbau von GRBL oder einer PC-Steuerung unterscheidet, ordnet der Beitrag zur Softwarekette offener Steuerungen ein.
Vom G-Code-Satz zum Schrittimpuls
Die Code-Übersicht der Dokumentation verfolgt einen Bewegungsbefehl durch mehrere Stationen. Nach dem Lesen des G-Code-Satzes legt die Vorausplanung für jede Bewegung ein Trapezprofil aus Beschleunigung, konstanter Geschwindigkeit und Verzögerung fest. Ein iterativer Löser bestimmt daraus über die Kinematik die Zeitpunkte der einzelnen Schritte jedes Motors.
Der Weg eines Bewegungsbefehls Schritt für Schritt
Startet nur auf Wunsch. Pause hält den aktuellen Stand fest. Die Darstellung läuft in Lerngeschwindigkeit; sie simuliert keine Maschinensteuerung. Ohne Bewegung erklären Grafik und Liste denselben Inhalt.
- Ein G-Code-Satz, hier G1 X40 F6000 aus einer Datei oder der Konsole der Weboberfläche, erreicht den Host und wird in Koordinaten und Vorschub umgesetzt.
- Die Vorausplanung legt für jede Bewegung ein Trapezprofil aus Beschleunigung, konstanter Geschwindigkeit und Verzögerung fest; F6000 entspricht 100 mm/s.
- Ein iterativer Löser berechnet aus der Kinematik für jeden Motor die Zeitpunkte der einzelnen Schritte. Beim Beschleunigen rücken sie zusammen.
- Die Schrittzeiten werden zu queue_step-Befehlen komprimiert und über USB oder eine serielle Verbindung gesendet, im Normalbetrieb mindestens 100 ms vor dem ersten Schritt.
- Der Mikrocontroller löst die Impulse per Hardware-Timer zur geplanten Zeit aus. Bei 80 Schritten/mm sind das für X40 genau 3.200 Impulse, also eine Motorumdrehung.
Diese Zeitpunkte werden zu queue_step-Befehlen komprimiert, die Schrittfolgen mit gleichmäßig veränderten Abständen beschreiben, und erreichen den Mikrocontroller im Normalbetrieb mindestens 100 ms vor dem ersten Schritt. Dort löst ein Hardware-Timer die Impulse aus; Kinematik rechnet der Mikrocontroller nicht. Den Zusammenhang von Vorschauweg und Bremsweg erklärt der Beitrag zu Look-Ahead bei CNC.
Konfiguration in der printer.cfg
Alle Einstellungen stehen in der Textdatei printer.cfg. Der Mikrocontroller muss dafür nicht neu geflasht werden; nach jeder Änderung ist RESTART nötig. Einige Pflichtangaben und Voreinstellungen laut Konfigurationsreferenz:
| Abschnitt | Parameter | Bedeutung laut Referenz |
|---|---|---|
| [mcu] | serial oder canbus_uuid | Verbindung zum Mikrocontroller: serial bei serieller Schnittstelle, canbus_uuid bei CAN-Bus. |
| [printer] | kinematics, max_velocity, max_accel | Pflicht: Kinematik, Höchstgeschwindigkeit in mm/s, Beschleunigung in mm/s². |
| [stepper_x] | step_pin, dir_pin, rotation_distance, microsteps | Pflicht; full_steps_per_rotation ist auf 200 voreingestellt, endstop_pin, position_endstop und position_max sind kartesisch ebenfalls Pflicht. |
| [extruder] | min_temp, max_temp, min_extrude_temp | Außerhalb von min_temp bis max_temp schaltet der Mikrocontroller ab; Extrusion standardmäßig erst ab 170 °C. |
Statt Schritten pro Millimeter verwendet Klipper die rotation_distance, den Weg der Achse je voller Motorumdrehung. Aus Schritten pro Millimeter ergibt sie sich als Vollschritte × Mikroschritte / Schritte pro mm, für Riemen als Teilung × Zähnezahl der Motor-Riemenscheibe und für Gewindespindeln als Steigung × Anzahl der Gänge.
Eigenes Rechenbeispiel: rotation_distance und Schrittrate
Wir nehmen eine kartesische X-Achse mit 2-mm-Zahnriemen und einer Motor-Riemenscheibe mit 20 Zähnen an: rotation_distance = 2 mm × 20 = 40 mm. Mit 200 Vollschritten und microsteps: 16 macht der Motor 3.200 Mikroschritte je Umdrehung, also 3.200 / 40 mm = 80 Schritte/mm; G1 X40 entspricht genau einer Motorumdrehung. Eine Z-Achse mit T8-Spindel (2 mm Steigung, 4 Gänge) ergibt 8 mm und damit 400 Schritte/mm.
Bei angenommenen 300 mm/s dreht der X-Motor mit 450 min⁻¹ und braucht 300 × 80 = 24.000 Schritte/s. Die Klipper-FAQ beziffert die praktische Schrittrate von Marlin auf etwa 10.000 Schritte/s, die Benchmark-Tabelle nennt für einen 16-MHz-AVR unter Klipper 157.000 Schritte/s mit einem aktiven Motor. Ob das Drehmoment des Motors dafür reicht, zeigt erst ein Versuch.
Den Extruder kalibriert die Dokumentation durch Messen: Filament etwa 70 mm vor dem Einlass markieren, nach G91 mit G1 E50 F60 langsam 50 mm fördern, Restabstand messen. Liegt die Markierung danach angenommen bei 21,2 mm, wurden 48,8 mm gefördert; aus bisher 22,678 wird 22,678 × 48,8 / 50 ≈ 22,134. Für X, Y und Z ist das laut Dokumentation zu ungenau; dort zählen Riemen, Riemenscheibe oder Spindel.
Funktionen über die Schrittausgabe hinaus
Pressure Advance gleicht den Druck im Extruder aus und ist mit dem Standardwert 0 abgeschaltet; Prinzip und Kalibrierung beschreibt der Beitrag zu Pressure Advance. An Ecken begrenzt square_corner_velocity die Geschwindigkeit, voreingestellt sind 5 mm/s für eine 90°-Ecke. Den Vergleich mit Jerk zieht der Artikel zur Jerk-Einstellung. Input Shaping soll Schwingungen und damit Ringing verringern.
Makros ergänzen eigene G-Code-Befehle, und mehrere Mikrocontroller können an einem Host arbeiten, der ihre Taktabweichungen ausgleicht. Als Bedienoberflächen nennt die Dokumentation Mainsail, Fluidd und OctoPrint.
Typische Fehler und Grenzen
Mit Klipper hängt der Druck an zwei Rechnern und ihrer Verbindung. Für „Lost communication with MCU“ nennt die FAQ vor allem Hardwareursachen: schlechte USB-Kabel, lockere Stecker, beschädigte Leitungen. Beim Raspberry Pi zählen ein gutes Netzteil und Kabel; Unterspannungswarnungen deuten auf ein Versorgungsproblem.
Nach Updates müssen Host und Mikrocontroller zusammenpassen: Fordert Klipper ein neues Flashen, reicht der Neustart des Dienstes nicht. RESTART und FIRMWARE_RESTART laden keine neue Software.
Vor dem Homing verweigert Klipper Achsbewegungen; nach M84 muss erneut referenziert werden. Eine eingeschaltete Heizung muss der Host alle 3 s bestätigen, sonst geht der Mikrocontroller in einen Shutdown, der Heizungen und Motoren abschalten soll. Sensor-, Leitungs- und Heizungsfehler als Ursache einer Abschaltung unterscheidet der Beitrag zum Thermistordefekt. Fehlt dem Motor bei hoher Geschwindigkeit das Drehmoment, verliert er auch unter Klipper Schritte; in X und Y zeigt sich das als Schichtversatz.
Prüfliste für die Inbetriebnahme
Die Dokumentation empfiehlt nach dem Einrichten diese Reihenfolge (verkürzt):
- Temperaturanzeige von Hotend und Bett prüfen; bei unkontrolliertem Anstieg Strom trennen.
- M112 senden, Shutdown kontrollieren, mit FIRMWARE_RESTART zurückkehren.
- Hotend auf 50 °C setzen: Anstieg innerhalb von etwa 30 s; Bett ebenso prüfen.
- Nach M84 die Achsen von Hand bewegen; bleiben sie blockiert, enable_pin prüfen.
- QUERY_ENDSTOPS: unbetätigt „open“, betätigt „TRIGGERED“.
- STEPPER_BUZZ STEPPER=stepper_x für jeden Motor: Richtung, 1 mm Weg und Rückkehr beobachten.
- Erst dann G28; bei Fehlern Strom trennen und Einzeltests wiederholen.
- PID_CALIBRATE für Hotend und PWM-fähiges Bett, Ergebnis mit SAVE_CONFIG speichern.
Quellen und fachliche Einordnung
Primärquellen, geprüft am 08.11.2026. Eigene Lehrbeispiele und schematische Grafiken. Parameter- und Befehlsnamen gelten für den zum Prüfdatum dokumentierten Stand von Klipper.
- Klipper-Dokumentation: Features, Aufgabenteilung und Schrittraten
- Klipper-Dokumentation: Code Overview, Weg eines Bewegungsbefehls
- Klipper-Dokumentation: Configuration reference
- Klipper-Dokumentation: Rotation distance
- Klipper-Dokumentation: Configuration checks
- Klipper-Dokumentation: Frequently Asked Questions
Weiterlesen
3D-DruckInput Shaping: Ringing, Resonanzfrequenz und Shaper-AuswahlInput Shaping ist ein Verfahren der Drucker-Firmware, das Ringing (Ghosting) an Kanten verringert. Die Firmware zerlegt Bewegungsbefehle in …
3D-DruckZ-Offset im 3D-Druck: Düsenabstand, erste Schicht und FeinkorrekturDer Z-Offset ist der Korrekturwert zwischen dem Höhenbezug eines 3D-Druckers, etwa dem Schaltpunkt einer Sonde, und der tatsächlichen Lage der …
3D-DruckBridging im 3D-Druck: Spannweite, Kühlung und BrückeneinstellungenBridging bezeichnet im FDM-Druck das freie Überspannen einer Lücke: Der Strang wird auf zwei Auflagern verankert und muss dazwischen in der Luft …