Files
grotti/docs/Abraeumen.md
T

6.1 KiB
Raw Blame History

Grotti: Abräumen und weiterdrucken (Kobra 3)

Stand 13.10.2026.

Nach dem Druck kann Grotti auf der Kobra 3 Bett und Düse abkühlen und die Teile mit dem Extruderkopf nach vorn vom Bett schieben. Danach startet der nächste Schritt oder die nächste Wiederholung. Die Kobra S1 ist geschlossen — Abräumen dort ist noch offen.

Quittierung vs. Schieben

  • Wand „Platte geräumt“: Nur Quittierung. Tabelle bed_status, API POST /api/v1/drucker/<host>/abraeumen mit confirm. Fährt keine Bahn. needs_clear setzt der Watcher bei Druckende/Abbruch/Fehler (nicht schon beim Start). Solange gesetzt, startet „wenn frei“ den nächsten Job nicht.
  • Ablauf (Dateien): Drucken → Abkühlen → Schieben → Tasten, dann der nächste Druck mit LeviQ. Eine Bestätigung beim Einreihen; Schieben läuft ohne zweite Rückfrage. Nach erfolgreichem Schieben ist die Platte automatisch quittiert.
  • Normale Drucke und „Nochmal“ schieben nicht — nach dem Druck muss man auf der Wand quittieren.

Oberfläche

Unter Dateien erscheint die Karte Ablauf, sobald mindestens eine Kobra 3 gewählt ist. Der Nutzer baut die Schritte selbst:

  • Drucken — Datei, Bettnetz (LeviQ) standardmäßig an
  • Abkühlen — Heizung aus, Lüfter an, Düse in die Bettmitte, warten bis Bett/Düse unter den Grenzen
  • Schieben — Bahn mit einstellbaren Zahlen, danach Lüfter aus
  • Tasten — kein G28 Z. Mit aktivem LeviQ-Netz (kein BED_MESH_CLEAR): Result = Höhe über der lokalen Platte. Bezugspunkt + Tastpunkt (x/y) einstellbar. Maß: letztes Result is z= aus dem Store. Über 1 mm = Restteil.

Darunter wie oft hintereinander. Einreihen legt einen Eintrag in die Warteschlange „Wenn frei“. Schieben testen fährt die Bahn auf einer freien Kobra 3 (Bestätigung „Bett ist leer“). Werte merkt sich der Browser lokal.

Vor dem Bett braucht es eine Kiste. Der Weg nach vorn muss frei sein.

Standardreihenfolge: Drucken → Abkühlen → Schieben → Tasten (dann Wiederholung, LeviQ am Druckstart). Altes 3×3-Prüfen (probe_count / mesh_*) wird übersprungen und in der Schrittleiste nicht mehr gezeigt.

Standardbahn (editierbar)

  • Abkühlen: Heizung aus, Idle verlängern (Stepper an), Park Bettmitte. Z zuerst relativ +40 mm (gegen Z-max gekappt), dann X125/Y125. Hub wird geprüft.
  • Schieben: hoch → Y hinten (y_from Default 250) → Z noch klar? → langsam auf z_push (F400, nie F3000). Z prüfen; bei Abweichung Abbruch. Nur die X-Spuren aus der Config. M107.
  • Tasten: Mesh an. Absolut auf Freiraum, ein PROBE am Tastpunkt, Result is z=. Kein SET Z=100 / Bezug-Null (hat die Koordinate nur verfälscht). Z zu tief nach Leerlauf → Abbruch, Idle soll Stepper an lassen.

Y klein ist vorn. Das Wischpad liegt hinten (~Y 260) und bleibt außerhalb der Bahn. Grotti klemmt Eingaben (X 0–250, Y 0–235, Z-Schieben 0,6–30, Z-Umsetzen bis 80, Tempo 5–80 mm/s).

Technik

  • Kein Makro auf dem Drucker (printer.cfg schreibt Rinkhals neu). Grotti schickt G-code per Moonraker /printer/gcode/script.
  • Modul grotti/eject.py, Steuerung in print_queue.py.
  • Ablauf = eine Queue-Zeile mit steps (JSON), step_index, repeat_total, repeat_done, phase.
  • Nach dem Druck kein G28 (Z-Home würde in die Teile fahren). Slice-Ende Present nur X250 Y220 — kein Z-Hub. Abkühlen: Heizung aus, Lüfter an, relativ Z+40 (≤ Z-max), dann X 125 Y 125. Schieben: anheben, Spur hinten ansetzen, langsam senken, nach vorn, hinten parken, M107.
  • Abräumen braucht gehomed Achsen. Slice-Ende der Kobra 3 enthält M84; disable motors (nach Present) — danach sofort unhomed. Bei Ablauf mit Cool/Sweep entfernt Grotti M84/M18 beim Upload. Zusätzlich: SET_IDLE_TIMEOUT schon während des Drucks und alle 120 s beim Abkühlen; wenn trotzdem unhomed, SET_KINEMATIC_POSITION mit der echten letzten Toolhead-XYZ (Present), nie erfundene Z. Kein automatisches G28 bei belegtem Bett. „Schieben testen“ (Bett leer bestätigt) homt mit G28.

Gestoppter Ablauf: Seitenleiste ▶ setzt beim gespeicherten step_index fort (PATCH /druck-queue/<id> mit status: running, resume: true).

  • Tasten: Mesh aus, Rand-PROBE + Z-Null (Retract 2 mm), Mitte-PROBE, letztes Result is z= gegen max_delta_mm. Nie G28 Z. Nie Toolhead-Z nach dem Retract. Fortsetzen bei gemeldetem Z unter Bett erlaubt (nur relativ hoch).
  • Druckfehler oder Abbruch stoppt den Ablauf — kein Weiterschieben.

Trockenlauf (Crash-Fix prüfen)

Bett leer, ein Drucker reicht. Ziel: Cool-Hub und Anfahren hinten testen, ohne G0 Z{z_push}.
PROBE fährt nur bis Trigger — nicht wie G0 Z2 zwangsweise auf Koordinate. Trotzdem nicht mit Z8 starten (nach dem Crash zu unheimlich).

Lauf A — sicher (zuerst):

  1. G28, Düse wischen.
  2. G90 → G0 Z40 F1800 → Present X250 Y220.
  3. Cool-Park: relativ Z+40 (≤ Z-max), Mitte. Erwartung: Z ≈ 80, Mitte.
  4. sweep_go_back_high (hoch + Y hinten). Erwartung: hinten, Z klar oben.
  5. Statt Senken: PROBE. Erwartung: Result is z= typisch < 1 mm; sofort G0 Z40.
  6. Stop. Keine Y-Bahn, kein z_push.

Lauf B — niedrige „letzte Schicht“ (nur wenn A sauber):
Wie A, aber Schritt 2 mit G0 Z15 (nicht Z8). Cool +40 → Z ≈ 55. Wieder nur PROBE, nie G0 Z2.

Optional ganz am Ende: einmal sweep_lower mit F400 + assert_clear, Bett leer — nur nach A+B ok.

Grotti-Schalter „Trockenlauf / PROBE statt z_push“ noch nicht gebaut — bis dahin manuell oder _tmp_-Skript mit eject.*_script.

Grenzen

  • Nur Familie kobra_3.
  • Teile höher als die Umsetzhöhe trifft die Düse auf dem Weg nach hinten.
  • Festsitzendes Material (z. B. PETG) schiebt die Düse nicht zuverlässig ab.

Backlog (später)

Ideen liegen in Grotti unter Ideen (Status „später“), nicht nur hier:

  • Abdeckungen gegen Verkanten — Führung/Rutsche vorn, damit geschobene Teile nicht an Bettkante, Rahmen oder in der Kiste verkanten und den nächsten Lauf blockieren.
  • Kobra S1 — eigener Abräum-Ablauf (geschlossen, Tür).

Erledigt: Antasten / Bettnetz vergleichen (Schritt Prüfen, 13.10.2026).