Filamentbezogener Start G-Code
Hi,
ich würde gerne für die Vorwärmung Filamentbezogenen Start G-Code benutzen. Dazu habe ich fast den ganzen Start G-Code in den Bereich des filament_start_codes verschoben. Leider funktioniert das nicht so wie ich mir das vorstelle da die Software (Prusaslicer 2.0) die Temperaturwerte immer in den druckerbezogenen Start G-Code einfügt, auch wenn nichts davon in dem Fenster zu sehen ist.
Mache ich da was falsch? Und wenn nicht, wäre es nicht eine Möglichkeit das es eine Option gibt, die den Filamentbezogenen Start G-Code den Standard Start G-Code überschreibt/ersetzt falls vorhanden?
Gruß
Smudo
RE: Filamentbezogener Start G-Code
Hallo Udo,
wenn ich dich richtig verstanden habe:
dies sind meine Starteinträge im Slic3r 2.0.0. Die octoprint und pidtuning Kommandos kannst du vernachlässigen, weil derzeit noch im experimentelen Status.
M81 ; turn on printer with octoprint plugin PSUcontrol
M107
M115 U3.7.2 ; tell printer latest fw version
M83 ; extruder relative mode
M117 cooling down bed if hot
M190 R40 ; wait for bed cooling
M117 calibrating bed...
M303 E-1 S[first_layer_bed_temperature] C5 U1 ; bed pid autotune
; M304 Pxx.xx Ixx.xx Dxx.xx
M500
M117 bed calibrating finished!
M117 set bed temperature
M140 S[first_layer_bed_temperature] ; set bed temp diese Variable bezieht sich auf die von dir eingestellte Filament Bedtemperatur
M190 S[first_layer_bed_temperature] ; wait for bed temp
M117 bed leveling with warm bed
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G21 ; set units to millimeters
G1 Z5 F200
G1 X100 Y100 F6000
M117 calibrating extruder...
M106 E0 S[max_fan_speed] ; fanspeed for autotune optional Lüfterdrehzahl 0-255
M303 E0 S[first_layer_temperature] C5 U1 ; tool pid autotune Filament Düsentemperatur
; M301 E0 Pxx.xx Ixx.xx Dxx.xx
M500
M117 extruder calibrating finished!
G1 X0 Y0 F6000
M117 set and wait for bed and extruder temperature
M104 S[first_layer_temperature] ; set extruder temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
M117 loading filament
; Send the filament type to the MMU2.0 unit.
; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)
M403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}
M403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}
M403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}
M403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}
M403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}
M117 start printing
{if not has_single_extruder_multi_material_priming}
;go outside print area
G1 Y-3.0 F1000.0
G1 Z5 F1000.0
; select extruder
G4 S0 ; wait for selecting correct extruder
T[initial_tool]
; initial load
G1 Z2
G1 X55.0 E16.0 F1073.0
G1 X5.0 E16.0 F1800.0
G1 X55.0 E8.0 F2000.0
G1 Y-2 Z0.3 F1000.0
G92 E0.0
G1 X240.0 E25.0 F2200.0
G1 Y-1.0 F1000.0
G1 X55.0 E25 F1400.0
G1 Z0.20 F1000.0
G1 X5.0 E4.0 F1000.0
G92 E0.0
{endif}
M221 S{if layer_height<0.075}100{else}95{endif}
G90 ; use absolute coordinates
M83 ; use relative distances for extrusion
G92 E0.0
M117 printing
LG
Karl
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Filamentbezogener Start G-Code
Nein, das war nicht, was ich meine. Ich möchte ja nach Filament unterschiedliche Aufwärmphasen. z.B. für ABS zunächst das Druckbett auf 80° erhitzen und erst dann die das Hotend erhitzen. Für PLA reicht es aber wenn ich bereits bei ca. 40° anfange das Hotend zu erhitzen. Ziel ist es das Hotend nicht unnötig lange auf hoher Temperatur zu halten um das herausquellen des Materials zu verhindern. Das habe ich jetzt auch so aber ich würde es gerne Filamentbezogen optimieren. Also ich würde gerne den kompletten Startcode in den Filamentbezogenen Einstellungen vornehmen, aber die Heizbefehle werden immer vor dem Filament Startcode hinzugefügt auch wen man sie im Drucker-Startcodefenster entfernt hat. Sie werden immer wieder von der Software dort eingetragen.
Oder kann ich conditional Heizbefehle ausführen mit so einer Art If-> then. Wenn ja, wie ist die Syntax dazu?
RE: Filamentbezogener Start G-Code
Here are the primary heater commands:
M104 S ; set extruder temp
M140 S ; set bed temp
M109 S ; set & wait for extruder temp
M190 S ; set & wait for bed temp
... you can set the bed temp and wait until it reaches the set temp using M190, then follow by heating the nozzle with M109.
M190 S110
M109 S245
You could stage the heating as follows:
M190 S80 ; heat bed & wait for 80c
M104 S245 ; start heating nozzle to 245
M190 S110 ; proceed heating bed & wait for 110c
M140 S245 ; wait for nozzle to hit 245c
Of course, you'd be using the predefines for nozzle and bed temps.
M190 S[first_layer_bed_temperature]
M109 S[first_layer_temperature]
RE: Filamentbezogener Start G-Code
Thank you Tim,
i know the commands, i just would like to use them filament specific.
For example:
1. in the filament specific startcode area: M190 S50 ; wait for bed temp
2. conditional: {if [filament_type[0]]=="PLA"}M190 S50 ; wait for bed temp
RE: Filamentbezogener Start G-Code
Thank you Tim,
i know the commands, i just would like to use them filament specific.
For example:
1. in the filament specific startcode area: M190 S50 ; wait for bed temp
2. conditional: {if [filament_type[0]]=="PLA"}M190 S50 ; wait for bed temp
{if [filament_type[0]]=="PLA"}M190 S50 ; wait for bed temp
If only we had such variables available. But we don't. The list of place holders (as Slic3r calls them) is small and limited:
https://manual.slic3r.org/advanced/placeholder-parser
I haven't done an exhaustive search for what Prusa has changed... I am sure they are buried somewhere in the Prusa Slicer code on Github.
ps: Wait - perhaps there is hope -- try playing with this:
[filament_preset]
- name of the current filament preset. Only available when using plater GUI.
RE: Filamentbezogener Start G-Code
I tryed [filament_preset] from that list with no luck.
RE: Filamentbezogener Start G-Code
Hallo Udo,
die Möglichkeiten in Slic3r, ein link wurde ja bereits eingestellt, sind relativ bescheiden, was das Handling mit Variablen und logischen Funktionen betrifft.
Eine Möglichkeit gäbe es da aber noch:
Du kannst ein Ausgabescript (Python, Perl, C.....) in Slic3r verlinken, welches dann die Unzulänglichkeiten von Slicer kompensiert.
Wie das genau funktioniert? Das weis ich auch nicht genau, denn bei meinen zahlreichen Versuchen erhalte ich immer "Permission denied", was aber offensichtlich nicht mit Userrechten zu tun hat. Im Netz habe ich bis dato noch nichts wirklich brauchbares gefunden.
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Filamentbezogener Start G-Code
Auch das war mir schon bekannt, trotzdem Danke für die Hilfe.
Ich denke da würde dann der Zweck den Aufwand nicht mehr rechtfertigen, es geht ja nur um ein paar Sekunden/Minuten Heizzeit. Ich denke ich lass es dann doch lieber so wie ich es jetzt habe. Vielleicht komme ich darauf mal zurück, wenn ich Langeweile hab.
RE: Filamentbezogener Start G-Code
The PrusaSlicer's macro language is different from the original slicer.
https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-Prusa-Edition-Macro-Language
RE: Filamentbezogener Start G-Code
Ich habe das bei mir im Drucker Start-Code so herum gelöst:
M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.8.1 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M104 S[first_layer_temperature] ; set extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G1 Z10.0 ; Duese von Druckbett abheben
M109 S[first_layer_temperature] ; wait for extruder temp
G1 Z0.15 ; Duese wieder auf Druckbett absenken
G1 Y-3.0 F1000.0 ; go outside print area
G92 E0.0
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line
G92 E0.0
;wenn zu wenig extrudiert wird die nächste Zeile deaktivieren, damit der Extrusionswert auch wirklich zur Steuerung genutzt werden kann.
M221 S{if layer_height<0.075}100{else}95{endif}
Zu erst das Bett aufheizen und warten bis es warm ist. Dann den Heizbefehl an die Düse und dann gleich die 3x3 Mesh Kalilbrierung. In der Zeit beginnt die Düse sich schon zu erwärmen. Trotzdem muss selbst bei PLA dann noch etwas gewartet werden bis die Düse auf Temperatur ist und der Druck beginnen kann. Damit habe ich bei keinem Filament mehr das Problem, dass unnötig mit aufgeheizter Düse zugewartet werden muss, bis die Mesh-Kalibrierung erledig wurde und in der Zeit unkontrolliert Filament aus der Düse fliest.
Viel Erfolg.
RE: Filamentbezogener Start G-Code
Guten Abend,
ich habe unter Filamenteinstellungen unter Start Gode folgendes eingetragen: M900 K0.05 ; Filament gcode LA 1.5
Habe ich damit Linear Advance dauerhaft auf 0.05 gestellt ? Welche Werte habt ihr für das Silber Gratis Filament Made for Prusa ?
Mit freundlichen Grüßen
Tom
Wer sein Ziel kennt findet den Weg.
RE: Filamentbezogener Start G-Code
@tmrichw
Die Idealwerte musst Du für Deinen Drucker für jedes Filament selber kalibrieren bzw. ermitteln. Prusas eingetragene Werte sind lediglich getestete Richtwerte.
https://marlinfw.org/tools/lin_advance/k-factor.html
Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen.
RE: Filamentbezogener Start G-Code
Guten Morgen,
ich wollte eigentlich wissen ob der Befehl so wie er geschrieben ist vom Steuergerät akzeptiert wird und ausgeführt wird ?
Mit freundlichen Grüßen
Tom
Wer sein Ziel kennt findet den Weg.
RE: Filamentbezogener Start G-Code
P.S. Ich habe schon das Linear Advance Gitter von Prusa gedruckt.
Wer sein Ziel kennt findet den Weg.