- 3
- 1
- 1
About This File
I wanted to reach ABS/ASA temperatures faster, and be able to maintain 55-60°C for those larger warp-prone prints, so I designed this chamber heater mount.
If you're going to attempt this, make sure to use a temperature fuse to protect your printer (and your house) from burning down in the event of failure/over-heating.
I used 2x 3mmx5mm long heatserts inserted from the front, and 3mmx12mm screws to attach the heater.
4x 3mm t-nuts and 4x 3mmx10mm screws are required for mounting the bracket.
I used this 120VAC 250W heater (with 12VDC fan): https://www.amazon.ca/dp/B07NYX5DKD?psc=1&ref=ppx_yo2ov_dt_b_product_details
I used this SSR: https://www.amazon.ca/dp/B06WLNHPWK?psc=1&ref=ppx_yo2ov_dt_b_product_details
I loosely followed the chamber heater post from @ahough, and this would've been way harder (nigh impossible) without their post and the comments section. Notable mention goes out to @Dousi as well, since I copied and modified their config example to use as my own.
I hope the configs below help someone else along their way.
********
******** Here is my chamber heater section within my printer.cfg file:
********
#####################################################################
# CHAMBER HEATER
#####################################################################
[thermistor chamber_thermistor] #define "chamber_thermistor" characteristics
temperature1: 25
resistance1: 100000
beta: 3950
[thermistor heater_thermistor] #define "heater_thermistor" characteristics
temperature1: 0.0
resistance1: 32116.0
temperature2: 40.0
resistance2: 5309.0
temperature3: 80.0
resistance3: 1228.0
[temperature_sensor heater_temp] #this is the temp sensor for the 10K probe inserted in the heater core
sensor_type: heater_thermistor #use temp sensor characteristics as defined in "heater_thermistor"
sensor_pin: PA2 #Manta 8P temp sensor input pin. This temp probe is glued to the heater core with UV resin
min_temp: -100 #set minimum temp before error/shutdown
max_temp: 140 #SAFETY max heater core temperature, printer will shutdown above this temp
[heater_generic chamber_heater] #setup chamber heater
heater_pin: PE3 #Manta 8P heater output pin to SSR. This temp probe is mounted near the top of my chamber
sensor_type: chamber_thermistor #use temp sensor characteristics as defined in "chamber_thermistor"
sensor_pin: PA1 #Manta *P temp sensor input pin
control: watermark #use watermark control method (on/off)
max_delta: 0.1 #set the delta temp to energize/deenergize chamber heater
max_power: 1.0 #set maximum power of heater 1.0 = 100%
min_temp: -100 #set minimum temp before error/shutdown
max_temp: 70 #SAFETY max chamber temperature, printer will shutdown above this temp
pwm_cycle_time: 0.01666 #Set this to avoid room lights flickering on higher power heaters. This value works well for 60Hz power. 0.1 is 10Hz
[verify_heater chamber_heater] #setup chamber heater verification parameters
max_error: 120
check_gain_time: 240
hysteresis: 5
heating_gain: 1
[heater_fan heater_fan] #setup fan attached to back of chamber heater
pin: PE4 #Manta 8P fan output pin. Jumper selected for 12V
max_power: 1.0 #set maximum power of fan 1.0 = 100%
heater: chamber_heater #when "chamber_heater" is ON fan will be ON
heater_temp: 30 #fan will turn off below this level
#####################################################################
# MACROS
#####################################################################
[gcode_macro M191]
gcode:
{% set S = params.S | default(0) | float %}
SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={S}
M118 Chamber heating to {S}C
M118 Waiting for chamber heating...
TEMPERATURE_WAIT SENSOR="heater_generic chamber_heater" MINIMUM={S}
M118 Chamber heating {S}C is done.
********
******** I also run Ellis' bedfans, and modified bedfans.cfg, "Command overrides" section to the below:
********
############ Command overrides ############
# Override, set fan speeds to low and start monitoring loop.
[gcode_macro SET_HEATER_TEMPERATURE]
rename_existing: _SET_HEATER_TEMPERATURE
gcode:
# Parameters
{% set HEATER = params.HEATER|default("None") %}
{% set TARGET = params.TARGET|default(0)|int %}
# Vars
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
{% if HEATER|lower == "extruder" %}
M104 S{TARGET}
{% elif HEATER|lower == "heater_bed" %}
M99140 S{TARGET}
{% elif HEATER|lower == "chamber_heater" %}
_SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={TARGET}
{% else %}
{action_respond_info("Heater %s not supported" % HEATER)}
{% endif %}
# Set fans to low if heater_bed temp is requested above threshold temp, and kick off monitoring loop.
{% if HEATER|lower == "heater_bed" %}
{% if TARGET >= THRESHOLD %}
BEDFANSSLOW
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=1
{% else %}
BEDFANSOFF
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=0 # Cancel bed fan loop if it's running
{% endif %}
{% endif %}
********
******** II then modified my PRINT_START macro to include the chamber heater stuff as seen below:
********
[gcode_macro PRINT_START]
# Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT
gcode:
EXCLUDE_OBJECT_DEFINE
BED_MESH_PROFILE load=default
# Load variables
{% set bed_temp = params.BED|default(60)|int %}
{% set extruder_temp = params.EXTRUDER|default(230)|int %}
{% set CHAMBER_TEMP = params.CHAMBER|default(20)|float %}
M104 S150 #start nozzle heating, keep below oozing temp
M117 Extruder Heating...
M140 S{bed_temp} #set bed temp to "bed_temp" and move on
M117 Bed Heating....
M190 S{bed_temp} #allow bed to get up to temperature
M117 Heating Chamber...
M191 S{CHAMBER_TEMP}
G90 #Use absolute coordinates
M117 Homing...
G28
M117 Adjusting Z Tilt...
Z_TILT_ADJUST
G28
M117 Calibrating Bed Mesh...
BED_MESH_CALIBRATE
M117 Waiting for Extruder to Reach Printing Temperature...
M109 S{extruder_temp}
G92 E0 #Reset exruder
M117 Purging Filament...
ADAPTIVE_PURGE
M117
********
******** I use CURA and this is my Start Gcode as defined within Cura:
********
;Nozzle diameter = {machine_nozzle_size}
;Filament type = {material_type}
;Filament name = {material_name}
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate
M117
PRINT_START EXTRUDER={material_print_temperature_layer_0} BED={material_bed_temperature_layer_0} CHAMBER={build_volume_temperature}