Bed temp goes to zero at layer 2
I have been using this Makergear M3-ID since summer 2022. started with the canned M3-iD profiles, but I've created versions of those that fix a few things (inital purge along the bed edge next to the extruder vs crossing the bed to the back of the bed). The profiles have been running well. But in the last month or so this printer has gotten much slower (I'll post another topic) and the bed temperature Mcode isn't working right.
The original profiles had
M140 S[first_layer_bed_temperature] ; Set bed temperature
M190 S[first_layer_bed_temperature] ; Wait for bed to reach temperature
and again, that worked this summer. NOTE the brackets
Now I've figured out that this is the correct form for the M190 (that's all I was using)
M190 S{first_layer_bed_temperature[1]} ; Wait for bed to reach temperature
NOTE the brackets difference
That slices as : M190 S70 ; Wait for bed to reach temperature
So it works
But on the layer change to layer 2, the sliced gcode is
M140 S0 ; set bed temperature
I have the bed temps set to 70 and 70 for 1st and subsequent layers.
I tried adding M140 to the start up gcode,
M140 S{first_layer_bed_temperature[1]} ; Set bed temperature
M190 S{first_layer_bed_temperature[1]} ; Wait for bed to reach temperature
thinking it might need to be initialized. The temps were correct at the start of the Gcode
M140 S70 ; Set bed temperature M190 S70 ; Wait for bed to reach temperature
But the layer 2 change code still set M140 S0
;LAYER_CHANGE ;Z:0.4 ;HEIGHT:0.2 ;BEFORE_LAYER_CHANGE ;0.4 G1 Z.4 F7800 ;AFTER_LAYER_CHANGE G92 E0 ;0.4 M140 S0 ; set bed temperature
I tried a work around, and added the M140 s{bed_temperature[1]) to the after layer change gcode, but M140 S0 line shows up anyway and after the layer change code
;AFTER_LAYER_CHANGE
G92 E0
M140 S65 ; Set bed temperature
;0.4
M140 S0 ; set bed temperature
Why doesn't this work right? Prusaslicer, what did you do?
RE: Bed temp goes to zero at layer 2
Have you tried changing the 1 inside your brackets to 0. Extruder 1 is index zero and extruder 2 is index 1.
Anyway for proper help please save a project file from PS that has the problem (File>Save Project As), then take the resulting 3mf file and ZIP it up. It must be zipped or the forum wont accept it. With a project we can load in all the settings you are using as its a snapshot. SO something like a simple cube will be enough as long as it exhibits the same problem.
RE: Bed temp goes to zero at layer 2
The Prusaslicer macro language is described in https://help.prusa3d.com/article/macros_1775
As neophyte suggested, vector variables start with index 0, so 0 is the first extruder
But the legacy syntax using square brackets still works fine as well
Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...
RE: Bed temp goes to zero at layer 2
I'm not having problems with the Extruders. They [0], and [1] work fine.
ITS THE BED TEMPERATURE that is the problem.
Seems to run great as M140 S{first_layer_bed_temperature[1]} Sets the temperature correctly.
And its stopped resetting the bed temp to zero at each layer. And I'm not sure why....
RE:
From the Prusa page I linked to:
bed_temperature (note that this is a vector, even though only one value makes sense:bed_temperature[0])
first_layer_bed_temperature (same as above!)
So I don't really know why [1] even seems to work for you in the first place.
Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...
RE: Bed temp goes to zero at layer 2
I think I figured it out. Not PrusaSlicers fault, just IDEX troubles....
Since this is a dual head printer, it has 2 filaments in the Prusa Plater screen. To print with only one nozzle, I've been setting one of those to a filament called OFF. 0 Deg filament temp and 0 deg. bed temp. So when I'm printing with the Left extruder and the first_layer_bed_temperature[0] is in the profile, it sets the bed to that temp and maintains it. But if its the other nozzle, then it does it wrong. And vis-verse.
So I either set up print profiles for the Left extruder [0] and another for the solo right extruder [1], which I was thinking of doing anyway, or I write some {if} statements into the start up G-code to get the right temperature set up.