Bei meinen letzen Experimenten mit dem 3D-Drucker wollte ich ja Magnete in einen Druck einsetzen, aber im ersten Anlauf hat der Drucker den Wunsch nach einer Druckpause komplett ignoriert. Also wurde es Zeit, mal dieses Problem zu analysieren.
Im Prusa-Slicer kann ja eine Pause auf einer bestimmten Schichthöhe einfügen indem man dort am vertikalen Slider einen Rechtsklick auf das „+“ Symbol neben dem Slider macht. In der Standardkonfiguration wird hier der Gcode „M601“ engefügt. Dieser Befehl wird aber von der Firmware meines Sovol SV01 schlicht ignoriert.
Also bemühen wir mal eine Suchmaschine, die erzählt mir dann, dass man auch „M0“ nutzen kann, um eine Druckunterbrechung zu machen. Also probieren wir das mal aus.
Hierzu muss man die Konfigurationsdatei des Druckers bearbeiten, in meinem Fall lag die unter „~/.config/PusaSlicer/printers/SV01.ini“. Da gibt es dann eine Definition für das Pausenkommando:
1 |
pause_print_gcode = M601 |
Ersezten wir also mal das „M601“ durch ein „M0“ und sehen was passiert. Der nächste Druck mit Inhalt waren diese Filmaent-Samples mit NFC-Chip. Der Drucker druckt dann bis zur Schichthöhe und beim Erreichen des M0-Kommandos bleibt der Druckprozess stehen. Und zwar da, wo die Düse gerade steht. Ich hatte Glück und konnte mit der Pinzette dann den NFC-Tag einsetzen, aber der Weisheit letzter Schluss ist das dann doch nicht, vor allem wenn man nicht sofort den Gegenstand einsetzt und weiter druckt. Denn dann könnte Filament aus der Düse tropfen und auf dem Druck landen und dort fest werden. Beim Fortsetzen des Druckes rauscht die Düse dann in diesen Filamenttropfen rein, es scheppert und wir haben den gefürchteten Layer-Shift.
Also brauchen wir eine Lösung, bei der die Düse in eine Parkposition fährt, damit Filament-Tropfen da keinen Schaden anrichten. Zum Glück ist man bei der Angabe von Kommandos nicht auf einen einzigen Maschinenbefehl beschränkt sondern kann hier eine Serie von Befehlen angeben, die dann in die Druckdatei an der Stelle eingefügt werden.
Also habe ich jetzt folgenden „Pause“-Befehl:
1 |
pause_print_gcode = G91 ;rel\nG1 E-1 F2700 ;retract a bit\nG90 ;abs\nG1 X0 Y240 ;park printhead\nM0\nG91\nG1 E1 F2700\nG90 |
Das heißt, überall wo ich eine Druckpause einfüge werden folgende Zeilen (dank des „\n“) in die Druckdatei eingefügt:
1 |
G91 ;rel<br>G1 E-1 F2700 ;retract a bit<br>G90 ;abs<br>G1 X0 Y240 ;park printhead<br>M0<br>G91<br>G1 E1 F2700<br>G90 |
Das macht dann folgendes:
- G91 stellt auf relative Positionierung um
- G1 E-1 F2700 zieht das Filament um 1 mm zurück
- G90 stellt wieder auf Absolute Koordinaten um
- G1 X0 Y240 fährt die Düse über die Position 0/240mm, schiebt also den Druck raus und ich komme an die Stelle wo ich was einsetzen muss
- M0 inittiiert dann die eigentliche Druckpause, der Drucker steht nun bis ich den Druck manuell fortsetze
- G91 schaltet wieder auf relative Positionierung
- G1 E1 F2700 schiebt das Filament wieder 1mm vor, wir sind also theoretisch am Extruder da wo wir vor der Pause waren
- G90 schaltet wieder auf absolute Koordinaten und der Druck läuft danach wie gewohnt weiter.
Das funktioniert hier recht gut. Der einzige „Nachteil“ ist, dass man beim Rechtsklick im Prusa-Slicer dann die ganze Kommandosequenz sieht, statt nur eine Zeile, aber das ist zu verschmerzen.
Pingback: Druckwerkstatt | König von Haunstetten