Custom gcode to manage X1C chamber pre-heating and heat soak. By default, only active if chamber temperature is set above 30ºC.
The code pauses the print after bed finishes pre-heating to allow time for the chamber to reach its target temperature. After that temperature is reached, there is an additional 15 min pause to heat soak the printer before starting calibration.
To speed up heating, the auxiliary fan is run at 100% to circulate heat from the print bed.
Pre-heating the chamber and performing a heat soak before calibration allows thermal expansion to occur prior to bed mesh generation.
In OrcaSlicer, you can specify a target chamber temperature for any filament under “Material Settings” → “Filament” → “Print chamber temperature” → “Chamber temperature.” This value is used by the gcode as the target temperature. Leave at 0 to disable heating/soak.
The included .3mf file is an otherwise stock profile (OrcaSlicer 2.3.0-rc) with the machine end gcode modified to contain the code for chamber heating and heat soaking. That same modified machine end gcode is in the .txt file.
Developed for use with X1C and OrcaSlicer but should be able to work for P1S without modification.
;===== chamber heating - start =======================
{if (chamber_temperature[0] < bed_temperature[current_extruder])||(chamber_temperature[0] > 30)}
SET_DISPLAY_TEXT MSG="Start of Chamber-Heating"
G1 X70 F21000 G1 Y245 G1 Y265 F3000 M400; move to poop chute
M106 P2 S255; Switch auxiliary fan on at 100%
M106 P3 S0; Turn off exhaust fan just in case
M1002 gcode_claim_action : 16; LCD Message = "Paused by the user"
M191 S{chamber_temperature[0]}; Wait for target chamber temperature of first filament
SET_DISPLAY_TEXT MSG="End of Chamber-Heating"
{endif}
;===== end - chamber heating =======================;===== heat soak - start ======================
{if chamber_temperature[0] > 30}
SET_DISPLAY_TEXT MSG="Start of Heat-Soak"
M1002 gcode_claim_action : 5; LCD Message = "M400 Pause"
M400 S900; pause for 900sec/15min
SET_DISPLAY_TEXT MSG="End of Heat-Soak"
M1002 gcode_claim_action : 7; "Heating hotend " … to differentiate with next step
{endif}
;===== end - heat soak =======================
Add the above code after bed pre-heating but before calibration.
;===== heatbed preheat ====================
M1002 gcode_claim_action : 2
M140 S[bed_temperature_initial_layer_single] ;set bed temp
M190 S[bed_temperature_initial_layer_single] ;wait for bed temp;##############################################################
; Add here!
;##############################################################
{if scan_first_layer}
;=========register first layer scan=====
M977 S1 P60
{endif}
To help with monitoring the print, the code sets print status to “Paused by the user” during chamber heating and "M400 Pause" during heat soak.
Bambu Studio does not have “Print chamber temperature” settings available for X1C so you have to either set the target temperature another way or just hardcode a temperature within the gcode (e.g. M191 S40).
Do not select “Active temperature control.” The chamber heater needs to implemented in the printer firmware for this to work. The macro it uses sends a signal to activate a chamber heater then waits. at the very beginning of machine startup, i.e. before the heatbed is turned on.
If you are not actively heating the chamber, it can take a while to reach temperatures above 40ºC even with the bed at the maximum value of 120ºC. An actively heated printer would work best for higher temperatures. However, even lower temperatures provide a head start on heating the chamber. If the target temperature is too high, there is a possibility the printer might get stuck at this step, especially without an active heater.
The author marked this model as their own original creation.