Extruder-Wechsel leicht gemacht

Wenn man den DICE mit dem magnetischen Hotend-Schnellwechsel-System ausrüstet, dann steht man vor dem "Problem", dass man zwei verschiedene Extruder-Motoren unter einen Hut bringen muss. Denn je nachdem, welchen Druckkopf man gerade benutzen möchte, muss ja auch entweder der Bowden- oder der Direkt-Extruder angesteuert werden. 

Doch dank einiger Features von Smoothieware und z.B. Octoprint ist das sehr einfach. Kurz gesagt müssen einfach nur die anzusteuernden Pins für den Extruder und der Wert für steps/mm auf den jeweiligen Sockel des Motortreibers geändert werden. Wie ich dazu vorgegangen bin, erkläre ich hier in diesem Post.

In den Bildern erkennt man, dass ich den ersten noch unbenutzten Sockel mit einem Treiber für den direkt-Extruder ausstatte. Die benötigten Pins für diesen Sockel sind:

# Sockel 1 Pins:
step_pin 2.0
dir_pin 0.5
en_pin 0.4

außerdem brauchte ich natürlich auch noch die Pins für den Sockel des Bowden-Extruders:

# Sockel 5 Pins:
step_pin 2.8
dir_pin 2.13
en_pin 4.29

Und weil ich eh grad Pins in der Config rausgesucht habe, habe ich mir auch noch die steps/mm für den jeweiligen Extruder zurecht gelegt:

steps_per_mm 145 # compact bowden extruder Steps/mm
steps_per_mm 418.5 # Titan Steps/mm

Um diese Informationen anschließend sinnvoll verwenden zu können, benutze ich den Smoothieware-eigenen Befehl "config-set". Damit kann ich direkt in der config.txt Parameter dauerhaft ändern. Wenn man anschließend das Board resetet, wird diese Änderung geladen und ist sofort aktiv. Beispiel:

config-set sd acceleration 10000 # set acceleration to 10.000mm/s²

Diese Informationen habe ich dann sinnvoll kombiniert, sodass ich (angepasst an die vorgegebene config.txt aus der Dropbox) folgende Codeschnippsel erhalte:

# commands to switch Extruders:

# direct hotend:
config-set sd extruder.hotend_1.steps_per_mm 418.5 # Titan Steps/mm
config-set sd extruder.hotend_1.step_pin 2.0 # driver socket 1
config-set sd extruder.hotend_1.dir_pin 0.5 # driver socket 1
config-set sd extruder.hotend_1.en_pin 0.4 # driver socket 1

# bowden hotend:
config-set sd extruder.hotend_1.steps_per_mm 145 # bowden extruder Steps/mm
config-set sd extruder.hotend_1.step_pin 2.8 # driver socket 5
config-set sd extruder.hotend_1.dir_pin 2.13! # driver socket 5
config-set sd extruder.hotend_1.en_pin 4.29 # driver socket 5

Wenn ich nun also die entsprechenden 4 Zeilen per 'config-set' Befehl an das AZSMZ-Mini sende, stelle ich die config.txt auf den jeweiligen Extruder-Motor um. Das habe ich in Octoprint folgendermaßen umgesetzt:

Im Octoprint-GUI habe ich mir zuerst das Plugin "Custom Control Editor" installiert. Dort kann ich dann weitere Buttons erstellen und diese mit eigenen Befehlen und Aktionen verknüpfen. Wer dieses Plugin nicht kennt, muss etwas wissen: Nach der Installation sieht man in den Einstellungen nur ein flaches grünes Rechteck und sonst nichts. Um einen Button erstellen zu können, müsst ihr erst einen "Container" erstellen und erst in einem Container könnt ihr einen Button erzeugen. Die Container dienen zum sortieren und Anordnen der Buttons, falls ihr mehrere haben solltet. Einen Container erzeugt man, in dem man einen rechten Maus-Klick auf den flachen grünen Kasten macht und "create container" anklickt. Dann kommt folgender Dialog:

Ich erstelle also mit einem weiteren Rechts-Klick einen Button mit dem Namen "Wechsel zu direkt-Extruder" in dem soeben erzeugten Container und hinterlege als auszuführendes Kommando die Befehle, die ich oben bereits geschrieben habe:

Das gleiche wiederhole ich anschließend auch mit dem Code für "Wechsel zu Bowden-Extruder". Ich hinterlege die Buttons außerdem noch mit der Eigenschaft, dass eine Bestätigung benötigt wird. Das bedeutet, dass bei einem Klick auf den Button erst ein Pop-up erscheint, auf dem ich die Aktion noch ein weiteres mal bestätigen muss. So vermeide ich Schaden bei einem versehentlichem Fehl-Klick. Anschließend habe ich im Steuerungs-Tab zwei neue Buttons:

Ein Klick auf den Button "Wechsel zu direkt-Extruder" löst nun die gegebenen Befehle aus. Zu beachten ist, dass das AZSMZ-Board auch resetet wird. Diesen Vorgang kann ich also nur im Leerlauf benutzen.

Nach 5 Sekunden bootet das Board neu und ich muss Octoprint erneut verbinden. Der Extruderwechsel ist somit ab jetzt mit 2 Mausklicks vollzogen.