Dieser Beitrag fehlt noch, um den Drucker rein hardwaretechnisch auf den gewünschten Stand zu bringen. Ich habe bei der Recherche hierzu Einiges über Klipper gelernt, – speziell in Bezug auf die Macrosprache von Klipper.
Der Smart Filament Sensor dürfte kein Unbekannter sein. Er ist etwas besser als der reine Filament Sensor, weil er nicht nur feststellen kann, dass kein Filament mehr vorhanden ist, sondern auch feststellt, wenn zwar Filament eingelegt ist, es aber nicht gefördert wird. Statt also einfach nur durch das eingelegte Filament einen Schalter zu betätigen, wird beim smarten Sensor ein Rad benutzt, dessen Rotation abgefragt wird. Die Rotation kommt immer dann zustande, wenn sich das Filament am Rad entlangbewegt.
Genug der blanken Theorie. Der Smart Filament Sensor will zunächst mal am Drucker angebracht werden. Leider ist das im Lieferumfang nicht vorgesehen. Also wird als Erstes ein neues Rückenteil gedruckt. Dies wurde dann an der oberen waagerechten Strebe angebracht.
Bei der Gelegenheit wurden dann auch nochmal die in der Strebe verlaufenden Kabel neu verlegt und fixiert. Auf der Octopus-Platine ist sogar ein Steckplatz für den Filament-Sensor vorhanden. Er liegt rechts unten neben den Endstop-Anschlüssen und ist mit „PROBE“ gekennzeichnet.
Eventuell muss die mitgelieferte Verbindungsleitung zwischen Sensor und Platine im platinenseitigen Stecker geändert werden.
Man beachte die Lage des sensorseitigen Steckers im Bild: Die metallenen Federn sind vorn. Dann befindet sich ganz links die Betriebsspannung. Ganz rechts liegt GND und links daneben ist die Signalleitung zu finden. Die einzelnen Kabeladern sind recht gut gekennzeichnet, sodass man sich auf der Platinenseite schnell zurechtfindet.
Auch hier ist wieder auf die Lage des Steckers im Bild zu achten. Von oben nach unten: Betriebsspannung, GND, Signalleitung. Die mitgelieferten Kabel müssen nicht unbedingt genauso aussehen. Die Kontrolle ist sehr wichtig. Ein falscher Anschluss kann den Sensor, – oder noch schlimmer den Octopus, beschädigen.
Der Stecker liegt auf Anschluss J40. Die daneben liegende Brücke ist zu setzen, um den PullUp-Widerstand zu aktivieren. Zudem ist die darüber liegende Brücke „DC“ ebenfalls zu setzen.
Damit sind die Arbeiten an der Elektronik auch schon erledigt. Wesentlich mehr Kopfzerbrechen bereitete mir die Konfiguration. Sehr einfach scheint ja noch der bisher auskommentierte Teil:
# Filamentsensor - Smart Filament Sensor [filament_motion_sensor encoder_sensor] detection_length: 25 # The minimum length of filament pulled through the sensor to trigger # a state change on the switch_pin # Default is 7 mm. extruder: extruder # The name of the extruder section this sensor is associated with. # This parameter must be provided. switch_pin: ~PC5 # Pulldown resistor laut Bigtreetech Anleitung # Anschluss J40 unten rechts neben den Endstopps # die folgenden Parameter sollten im Default nicht belegt werden #pause_on_runout: False runout_gcode: M600 #insert_gcode: #event_delay: 3.0 #pause_delay: 0.5
Hier waren zwar auch ein paar Lernschleifen notwendig, aber das war noch machbar. Besonders zu beachten ist, dass der Anschluss PC5 genutzt wird, so wie es oben im Bild auch zu sehen war. Mit der Tilde davor wird der Widerstand aktiviert. Fragt mich nicht, warum hier der Pulldown genutzt wird und in der Schaltung der Pullup. Aktuell verstehe ich das nicht, aber angeblich ist es so richtig.
Entgegen der Default-Einstellung mit 7mm sind hier 25mm als detection_length eingestellt. Der simple Grund: Nicht nur bei mir, sondern auch bei vielen Anderen reagiert der Sensor spätestens bei der zweiten Auslösung sonst nicht.
Die Aktion wird beim smarten Sensor nicht mit „pause_on_runout“ ausgelöst! Stattdessen übernimmt der Eintrag runout_gcode: M600 diese Aufgabe.
Nicht schlecht gestaunt habe ich dann beim ersten Test, als mir auf der Terminalseite verständlich gemacht wurde, dass Klipper das Kommando M600 nicht kennt. Zumindest in der Default-Konfiguration ist das tatsächlich so. Wozu gibt es das große weite Internet und die Suchmaschine? Die zeigte mir dann auch schnell eine Lösung.
Über die Makrosprache von Klipper muss dieses Kommando erst gebaut werden. Bei der Gelegenheit hat der Autor ganze Arbeit geleistet und ein Rundum-Sorglos-Paket geschnürt, das ich fast identisch übernommen habe. An nur einer Stelle habe ich allerdings nicht die internen Parameter abgefragt, sondern meine Werte fest eingetragen: Die Parkposition. Ich habe diese Position jetzt geringfügig angepasst um nicht ins absolute Minimum zu laufen. Ich weiß, – das geht auch anders und eleganter, aber jetzt ist es halt zunächst mal so. Die Konfiguration ist zu lang, um sie hier darzustellen. Am Ende des Beitrags lässt sich aber die gesamte Konfigurationsdatei herunterladen.
Bei Filamentmangel fährt jetzt die Düse in die Parkposition. Dort kann mit den ganz normalen Möglichkeiten des Steuerfeldes Filament extrudiert oder zurückgezogen werden, was man ja zum Filamentwechsel braucht. Der Vorteil dieser Parkposition liegt darin, dass ich außerhalb des Druckbettes liege und deshalb bequem an die Düse komme und Nichts auf Druckbett „kleckert“.
Das Fortsetzen des Druckes ist dann etwas tricky. Man muss über die Kommandozeile das Kommando „RESUME“ eingeben. Dann fährt der Kopf an die richtige Stelle und das Druckbett erreicht auch wieder die richtige Höhe. Keinesfalls darf zum Weiterdrucken der entsprechende Button aus der OctoPrint-Oberfläche verwendet werden. Der löscht nämlich leider nicht die beiden Statusbits, die durch den Filamentmangel ausgelöst wurden. In der Folge ist der Drucker dann etwas „verwirrt“.
Meine vorerst endgültige printer.cfg lässt sich hier herunterladen. Die Extension .txt muss natürlich entfernt werden. Aber Vorsicht, denn das ist alles für meinen Drucker konfiguriert. Ob das bei Euch funktioniert, weiß ich nicht. Aber hilfreich könnte es sein …