devmaker.net
start/ 3d-druck/ klipper-corexy-zwei-y-endschalter-homing
3D Druck

Klipper CoreXY: Zwei Y-Endschalter kämpfen beim Homing

Drei Layer-Shifts in zehn Tagen, jedes Mal in X und Y um denselben Betrag – und ein Klipper-Log ohne jede Warnung. Die Spur führte über ein verspanntes Motorlager zu zwei Y-Endschaltern auf demselben Riemen, die bei jedem Homing gegeneinander arbeiteten. Dieser Artikel zeigt, wie man an der Richtung eines CoreXY-Versatzes den schuldigen Antrieb erkennt, wie Klippers Schrittzähler aus einem Geräusch eine Messung machen und warum die Lösung darin bestand, eine Funktion abzuschalten. Für alle mit CoreXY und vier XY-Motoren.

Harry_im_Homelab31 (Portrait)
Harald
2026-10-17 · ~8 Min. Lesezeit
Optischer Endschalter am HevORT – einer von zweien, die beim Homing gegeneinander arbeiteten
Optischer Endschalter am HevORT – einer von zweien, die beim Homing gegeneinander arbeiteten

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.

Faustregel: 45° = ein Riemen

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.

yaml
[stepper_y]              # hinten links
endstop_pin: ^PG10

[stepper_y1]             # vorn rechts, selber Riemen
endstop_pin: ^PG11

Klipper 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:

bash
// mcu: stepper_x:-185186 stepper_x1:-185186 stepper_y:-70830 stepper_y1:-51360

Die 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.

ZustandHoming 2Homing 3Bild
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.

Befund: y − y1 = Schräglage

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.

yaml
[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.

Prüfstand und Geltungsbereich

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.

// verwandte beiträge

> echo "your thoughts" >> klipper-corexy-zwei-y-endschalter-homing.responses

Schreibe einen Kommentar

Wird für die Bestätigung benötigt