What does this chamber temperature setting do at a MK3s+?
Dear all,
I just found the chamber temperature settings in the filament settings. Can anybody explain me what this will do?
I assume it will add some GCode like M141/M191? But what will that effect on the MK3s+? So will it switch any outputs on the controller board? Or will it just heat the bed until the temperature is reached?
Best regards
Oliver
RE: What does this chamber temperature setting do at a MK3s+?
It will do nothing. The MK3/s/+ doesn't have a chamber heater or more importantly a chamber thermometer and so doesn't support this setting. Same as it will do nothing on a Mk4, or a Mini, or even a XL. Might do something on a Core but as they aren't yet out no one here knows for sure.
RE: What does this chamber temperature setting do at a MK3s+?
So it is a dead parameter for now?
Shouldn't it be greyed out when the selected printer does not support it?
Would be maybe a good idea if it will be possible to define custome GCode for this. Then every user can define its own behaviour for this setting.
RE: What does this chamber temperature setting do at a MK3s+?
No its not dead. It depends entirely on if a printer supports it. Just because Prusa Printers don't currently make use of it doesnt mean there aren't other that could. PS is for use by most printers, not just Prusa ones. And No it shouldn't be greyed out as there no setting in the printer definition to control if a printer supports it or not. Same as there's no setting to turn off heated bed settings, remember when a heated bed was unusual on a printer ? I do. Same thing.
Don't want it then leave the values at zero. And yes all it does is add M141/M191 to the start of the gcode (at least with Marlin) if you set a value in those fields. Its up to your printer board and firmware to handle the gcode, same as every other line of gcode produced.
If you wanted to do anything special with it well there is the built in gcode substitution method you could use or the post processing method already. Anything fancier and you would customise your printer to handle it. For example you could configure klipper to do all sorts of things when it sees a M141 if you wanted to. That's one of the advantages of something like Klipper.
RE: What does this chamber temperature setting do at a MK3s+?
Thanks a lot for the explanation, I think I got it!
And no, I cannot remember the times withour bed heating... I am quite new to 3D printing... 😉
May be one last question. I do not have started using custom GCode and thus have no idea how it works exactly. So are these temperature values (all PS settings?) accessible via a variable?
RE: What does this chamber temperature setting do at a MK3s+?
Depends on what your definition of a variable is 🙂 Gcode is incredibly dumb, in that its is literally just a series of instructions. There is zero logic in a generated output gcode file. Its just move here, extrude that, Set that temperature, wait for xx seconds etc. There are no for while loops etc (as far as I know, I wouldn't call myself an expert).
The logic is done at slice time. Even there things are/can be pretty limited. Every? (probably should be most) configuration values in Prusa Slicer can be accessed, if you hover over them with your mouse it should show you what the parameter name is called in the tooltip.
So Chamber Temperature for example is "chamber_temperature". Those parameters are commonly referred to as placeholders. You can use them in the various start/end/custom/between end code fields, although there are some limitations for specific ones not being available in some areas. If you try and use one in a non allowed section the slicer will kick a warning when you try and slice the file.
The placeholders can be used within simple logic that gets used at slice time. So for example instead of setting your bed temperature to say 60 degrees with "M140 S60" you would use "M140 S[first_layer_bed_temperature] ; set bed final temp" which would fill in the value from your selected filament profile. Change your filament profile and the value changes accordingly so you don't need different start gcode for different filaments.
You can also do simple math operations so "M104 S{first_layer_temperature[0]-50} ; set extruder no ooze temp to filament -50" for example which would set the extruder temp to its target temperature -50 for pre warmup.
You can also go much more complicated like Prusa have been doing with more recent printer profiles such as
M104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling
which sets things based on filament type and also uses keywords from the notes section of the profile to evaluate the expression.
All this though is still done at slice time and the actual gcode will only contain the generated values. So my earlier example of "M104 S{first_layer_temperature[0]-50}" would still give you "M104 S160" in the output gcode file if the filament temperature was configured at 210 degrees.
In reality as printer firmware is generally fixed in its operation (unless you want to modify it yourself, build and compile it to work as you would like) then you are limited in what you can do.
Klipper (which is a type of printer firmware) is one of the few that is more configurable at the printer end as you can write code and change the configuration of the printer as a user more easily. I say more easily as unless you have some familiarity with code it can be very hard going. The custom start and end gcode blocks in the slicer tend to be simpler as instead of having multiple lines in there you might just have something like "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} BED_TEMP={first_layer_bed_temperature[0]}" as you leave all the rest to the Klipper configuration. At the end of the day you are just moving it around from one place to another. There are a few advantages to that though.