3D-Druck: Einstellungen, Material & Fehler

Klipper: Host-Rechner, printer.cfg und rotation_distance verstehen

Thema: 3D-Druck: Einstellungen, Material & Fehler

Klipper ist eine quelloffene 3D-Drucker-Firmware, die die Arbeit aufteilt: Ein Host-Rechner, etwa ein Raspberry Pi, verarbeitet den G-Code und berechnet die Schrittzeiten, der Mikrocontroller auf dem Druckerboard führt sie zeitgenau aus. Alle Einstellungen stehen in einer Konfigurationsdatei, sodass für eine Änderung kein neues Flashen nötig ist.

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.

Klipper: Host rechnet, Mikrocontroller taktetKlipper: Host rechnet, Mikrocontroller taktetHost, z. B. Raspberry Pi (Klippy)Der Mikrocontroller rechnet keine Kinematik, er führt geplante Schritte aus.WeboberflächeG-Code-DateiG-CodeG1 X40 F6000Satz lesenLookaheadTrapezprofilSchrittzeitenaus KinematikKomprimierenqueue_stepFolgen bündelnUSB/seriell, ≥ 100 ms VorlaufMikrocontrollerX40: 3.200 ImpulseTreiberStep/DirMotorSchlittenRiemen 2 mm × 20 Zähne= 40 mm je Motorumdrehung
Eigene schematische Grafik. Vereinfachter Weg eines Bewegungsbefehls nach der Code-Übersicht der Klipper-Dokumentation; Riemenachse und Zahlen stammen aus dem eigenen Rechenbeispiel.

Der Weg eines Bewegungsbefehls Schritt für Schritt

Klipper: Host rechnet, Mikrocontroller taktetKlipper: Host rechnet, Mikrocontroller taktetHost, z. B. Raspberry Pi (Klippy)Der Mikrocontroller rechnet keine Kinematik, er führt geplante Schritte aus.WeboberflächeG-Code-DateiG-CodeG1 X40 F6000Satz lesenLookaheadTrapezprofilSchrittzeitenaus KinematikKomprimierenqueue_stepFolgen bündelnUSB/seriell, ≥ 100 ms VorlaufMikrocontrollerX40: 3.200 ImpulseTreiberStep/DirMotorSchlittenRiemen 2 mm × 20 Zähne= 40 mm je Motorumdrehung

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.

  1. 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.
  2. Die Vorausplanung legt für jede Bewegung ein Trapezprofil aus Beschleunigung, konstanter Geschwindigkeit und Verzögerung fest; F6000 entspricht 100 mm/s.
  3. Ein iterativer Löser berechnet aus der Kinematik für jeden Motor die Zeitpunkte der einzelnen Schritte. Beim Beschleunigen rücken sie zusammen.
  4. 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.
  5. 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:

AbschnittParameterBedeutung laut Referenz
[mcu]serial oder canbus_uuidVerbindung zum Mikrocontroller: serial bei serieller Schnittstelle, canbus_uuid bei CAN-Bus.
[printer]kinematics, max_velocity, max_accelPflicht: Kinematik, Höchstgeschwindigkeit in mm/s, Beschleunigung in mm/s².
[stepper_x]step_pin, dir_pin, rotation_distance, microstepsPflicht; 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_tempAuß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.

Patrick Mehner

Patrick Mehner aus Mittweida hat seine Optimum BF 20 selbst auf CNC umgerüstet und erklärt auf cnc-modellbau.org CNC-Technik für den Modellbau – von G-Code über CAD bis zur Messtechnik.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website setzt nur technisch notwendige Cookies. Die Reichweitenmessung mit Matomo läuft ohne Cookies auf unserem eigenen Server.