Ein Teil aus PETG, gut eine Stunde Druckzeit, und ab 15,7 mm Höhe liegt alles verschoben – in X und Y um denselben Betrag, nach X+ und Y−. Das Klipper-Log ist sauber: keine Warnung, kein Treiberfehler. Es war der dritte Versatz dieser Art in zehn Tagen.
Beim CoreXY sagt die Richtung, wer schuld ist. Die beiden Riemenantriebe arbeiten auf den Diagonalen: Antrieb A bewegt den Kopf entlang x + y, Antrieb B entlang x − y. Ein Versatz, der in X und Y gleich groß und entgegengesetzt ist, liegt genau auf der B-Diagonale. Verloren hat also Antrieb B – und der besteht bei meinem HevORT aus zwei Motoren auf einem Riemen: stepper_y hinten links und stepper_y1 vorn rechts.
Ein CoreXY-Versatz, der in X und Y gleich groß ist, stammt von genau einem der beiden Antriebe. Welcher, verrät das Vorzeichen: gleiche Vorzeichen → A, entgegengesetzte → B.
In der betroffenen Schicht gab es reine B-Fahrten mit 424 mm/s Riemengeschwindigkeit. Den mechanischen Befund lieferte der Drucker selbst: An Y1 wackelte der Motor, und der obere Lagerdeckel über dem Riemenrad war zu fest angezogen. Das Lager lief verspannt – und diese Reibung steigt mit der Drehzahl. Auch der Motor hinten links saß locker. Beide wurden zerlegt und neu montiert; von Hand lief der Kopf danach spürbar runder.
Das Rattern beim Homing
Beim ersten Homing nach dem Umbau kam ein Geräusch, das so nicht sein darf: ein hartes Rattern, bis die Y-Achse endlich ihre Referenz hatte. Beendet hat es der Not-Aus.
Die Erklärung stand seit dem ursprünglichen Aufbau in der Konfiguration: Beide B-Motoren haben einen eigenen Endschalter.
[stepper_y] # hinten links
endstop_pin: ^PG10
[stepper_y1] # vorn rechts, selber Riemen
endstop_pin: ^PG11Klipper behandelt das so: Beide Motoren fahren gemeinsam auf die Schalter zu, und jeder hält an, sobald sein Schalter auslöst. Schalten beide im selben Augenblick, ist das harmlos. Schaltet einer früher, muss der andere allein weiterziehen – gegen einen stehenden Motor, der über denselben Riemen mit ihm verbunden ist. Das ist das Rattern.
Die Schalter selbst waren in Ordnung. Ein kleines Skript fragte sie alle 50 ms ab, während der Balken von Hand angeschoben wurde – links, mittig und rechts. Beide lösten zuverlässig aus, meist gleichzeitig oder wenige Millimeter auseinander. Nur eines fiel auf: stepper_y kam in jedem einzelnen Durchgang zuerst, auch wenn nur rechts geschoben wurde.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.
Schritte zählen statt hinhören
Ein Geräusch lässt sich nicht vergleichen, eine Zahl schon. Klipper führt für jeden Motor einen Schrittzähler, und GET_POSITION gibt ihn aus:
// mcu: stepper_x:-185186 stepper_x1:-185186 stepper_y:-70830 stepper_y1:-51360Die Zeile stammt aus einem Lauf mit beiden Schaltern. Dass stepper_y und stepper_y1 fast 20 000 Schritte auseinanderliegen, ist kein Einzelereignis: Die Zähler laufen seit dem Einschalten auf, und jedes Homing mit zwei Schaltern hat ein paar Millimeter dazugelegt. Aussagekräftig ist deshalb nicht der Absolutwert, sondern die Änderung von einem Homing zum nächsten.
Bei 160 Schritten pro Millimeter ist das ein Messgerät. Das Prüfskript homet dreimal hintereinander, fährt zwischendurch weg und liest jedes Mal die Zähler. Auf einem Riemen müssten stepper_y und stepper_y1 immer gleich viel laufen. Tun sie es nicht, hat einer gegen den anderen gekämpft.
| Zustand | Homing 2 | Homing 3 | Bild |
|---|---|---|---|
| nach dem Motorumbau | 15,1 mm | 17,9 mm | y1 wandert jedes Mal um 13 mm |
| Riemen nachgespannt | 4,33 mm | 4,37 mm | y1 steht, y gibt nach |
| weiter nachgespannt | 8,41 mm | 5,14 mm | y1 wandert wieder |
| noch einmal gespannt | 2,89 mm | 8,61 mm | kein Muster mehr |
| Y1-Schalter abgeschaltet | 0,00 mm | 0,00 mm | Wiederholung 0,04 mm |
Das Nachspannen hat den großen Fehler beseitigt, von 15 auf 4 mm. Danach wurde es nicht mehr besser, sondern zufällig. Wer so eine Tabelle sieht, dreht weiter an den Spannern – es hat ja schon einmal geholfen. Die Zufälligkeit ist aber das eigentliche Signal: Wie weit ein stehender Motor unter Zug nachgibt, hängt davon ab, wo er gerade in seinem Vollschritt steht. Das lässt sich nicht wegspannen.
Was y − y1 eigentlich ist
Ein CoreXY mit vier Motoren hat einen Freiheitsgrad, den die Kinematik nicht beschreibt. Laufen die beiden Motoren desselben Riemens unterschiedlich weit, bewegt sich nicht der Kopf – der Balken dreht sich. Das eine Ende wandert nach vorn, das andere nach hinten.
Die Differenz der beiden B-Zähler ist kein Schrittverlust im üblichen Sinn, sondern die Winkelstellung des X-Balkens. Zwei Endschalter, die nicht exakt dort sitzen, wo der Balken gerade steht, verdrehen ihn bei jedem Homing gewaltsam – und die Motoren verlieren dabei Schritte.
Damit ist auch klar, wofür die zwei Schalter gedacht waren: Sie sollen den Balken bei jedem Homing gerade ziehen, wie bei Maschinen mit zwei Y-Spindeln üblich. Das funktioniert aber nur, wenn beide Schalter mechanisch exakt auf den geraden Balken eingestellt sind. Hier lagen sie Millimeter daneben – also zog das Homing den Balken nicht gerade, sondern schief, und zwar jedes Mal ein wenig anders.
Im Nachhinein passt eine alte Beobachtung dazu: Der Balken wirkte schon einmal nicht rechtwinklig zu den Y-Schienen, und damals half es, einen Riemen anders zu spannen. Das war kein Zufall. Die Riemenspannung bestimmt, wo sich der Balken einpendelt, sobald die Motoren stromlos sind.
Ein Schalter weniger
Die Konsequenz ist unbequem, weil sie eine Funktion wegnimmt: Y wird nur noch über einen Schalter referenziert. stepper_y1 läuft mit, schaltet aber nicht mehr selbst ab. Beide Motoren halten also immer im selben Augenblick an, und das Gegeneinanderziehen ist ausgeschlossen.
[stepper_y1]
#endstop_pin: ^PG11 # 24.09.2026 abgeschaltet: zweiter Y-Schalter
# # kaempfte beim Homen gegen stepper_y (3-9 mm)Der Schalter bleibt angeschlossen; man kann ihn später wieder aktivieren, wenn er mechanisch genau auf den geraden Balken eingestellt ist. Das Prüfskript danach: dreimal Homing, y und y1 jedes Mal auf demselben Schritt, die gesamte Position auf sechs Schritte genau reproduzierbar – 0,04 mm.
Das Rattern war damit weg. Offen blieb, wie schief der Balken nun eigentlich steht – denn niemand zieht ihn mehr gerade. Das ist Thema des Folgeartikels.
Was ich falsch gemacht habe
Ich habe erst die Geschwindigkeit verdächtigt
Nach dem Versatz vom 19. September habe ich die Höchstgeschwindigkeit von 400 auf 300 mm/s gesenkt und das als Ursache abgehakt. Versatz Nummer drei kam bei 300. Die Richtung des Versatzes – rein auf der B-Diagonale – hätte schon beim ersten Mal auf einen einzelnen Antrieb gezeigt, nicht auf eine allgemeine Drehzahlgrenze.
Ich habe am falschen Rad gedreht
Drei Runden Riemenspannen, jede mit einer neuen Schrittzählung. Nach der ersten Runde war das Ergebnis nicht mehr kleiner, sondern nur noch anders. Das war der Moment, das Prinzip anzuzweifeln statt der Einstellung. Stattdessen wurde weitergespannt.
Ich habe gehomt, ohne mit dem Rattern zu rechnen
Das erste Homing nach dem Motorumbau lief mit beiden Schaltern, wie immer. Dass zwei Schalter auf einem Riemen gegeneinander arbeiten können, stand da schon in der Konfiguration. Beendet hat es der Not-Aus.
Die Wende kam durch eine Messung, die die bisherige Erklärung widerlegen konnte: Die Schrittzähler zeigten keinen stetigen Schrittverlust, sondern ein Zufallsmuster.
Drucker: HevORT CoreXY mit vier XY-Motoren, Klipper v0.13.0-743, BTT Eddy, Phaetus Rapido 2, 0,4-mm-Düse, PETG. Slicer: OrcaSlicer 2.4.2.
Alle Zahlen stammen aus Messungen an dieser Maschine – aus den Schrittzählern über die Moonraker-API und dem Endschalter-Protokoll. Sie gelten für diesen Drucker, nicht allgemein.
Wie es weitergeht
Offen ist die Warmprüfung von Antrieb B: Schrittzählung auf reinen B-Fahrten bei heißem Bett soll zeigen, ob der neu montierte Motor unter Last keine Schritte mehr verliert – erst danach laufen wieder lange Drucke. Und der zweite Endschalter könnte zurückkommen, mechanisch so eingestellt, dass er bei geradem Balken gleichzeitig mit dem ersten schaltet. Dann würde er den Balken tatsächlich richten, statt gegen ihn zu arbeiten.
Wie schief der Balken ohne zweiten Schalter steht und wie Klipper das ausgleicht: Klipper skew_correction: XY-Schräge messen und ausgleichen.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.