`################## Chamber Heater ##################
[heater_generic heater_chamber]
heater_pin: PB11 # HE3
sensor_type: EPCOS 100K B57560G104F # Stock
sensor_pin: PF5 # T1
control: watermark
max_delta: 2.0
max_power: 1.0
min_temp: 0
max_temp: 110
pwm_cycle_time: 0.3
[verify_heater heater_chamber]
max_error: 900
check_gain_time: 900
hysteresis: 5
heating_gain: 2
################ Chamber Heater Fan ###############
[controller_fan chamber_heater_fan]
pin: PD13
max_power: 1.0
heater: heater_chamber
cycle_time: 0.02
kick_start_time: 0.5
idle_timeout: 20
hardware_pwm: False
#heater_temp: 30.0 # fan will turn off below this level
fan_speed: 1.0 # The fan speed (expressed as a value from 0.0 to 1.0) that the fan will be set to when its associated heater is enabled. The default is 1.0
[gcode_macro M141]
gcode:
#;take the paramater S of M141 and store it as heater_chamber. If S is not provided, set as 35c.
{% set heater_chamber = params.S|default(35)|float %}
# ;set heater my_heater_chamber equal to M141 S parameter by setting equal to heater_chamber.
SET_HEATER_TEMPERATURE HEATER=heater_chamber TARGET={heater_chamber}
`
The problem I am having is the fan switches on as soon as the steppers are activated and then have no way of switching the fan off.
If I activate the hearter chamber it switched on with the fan and when switched off the fan is delayed with 20 sec and it powers off. This any temp is on and 0deg temp is off.
So as soon as I home the printer I have no control over the fan anymore.
I would also like it if the fan could shut down when heater reaches target temp and back on again when temp drops and heater switches on again.
Can you put the code snippet as code with </> in the editors menu bar.
Without that, characters and spaces get lost and we can’t see if your code is correct.
controller_fan should work, this is from the KlipperConfig Ref.
A "controller fan" is a fan that will be enabled whenever its associated heater or its associated stepper driver is active.
#heater:
#stepper:
# Name of the config section defining the heater/stepper that this fan
# is associated with. If a comma separated list of heater/stepper names
# is provided here, then the fan will be enabled when any of the given
# heaters/steppers are enabled. The default heater is "extruder", the
# default stepper is all of them.
I have associated the fan with the heater_chamber but yet it is activated with the stepper.
I have the same issue. When I investigated the klipper code this is what I worked out:
I have a heater_generic chamber_heater setup and with a controller_fan chamberHeater_fan.
Desired behaviour: The fan should only come on when the heater is on or in its cooldown period, as specified in the controller fan config under `heater: chamber_heater’
## Chamber heater fan - comes on whenever the chamber heater is active
[controller_fan ChamberHeater_fan]
pin: PD15
max_power: 1.0
off_below: 1
shutdown_speed: 0
kick_start_time: 0.5
idle_timeout: 60 # amount of time the fan runs after the heater is turned off
#idle_speed: 0.5
heater: chamber_heater
Observed behaviour: it is on whenever once any stepper is active as well as when the heater is on.
The module controller_fan.py has the following code:
if self.stepper_names is None:
self.stepper_names = all_steppers
return
Thus, if no steppers are specified, all are selected, explaining the behaviour. It is not possible to specify null as they are of course non-existent steppers and fail the code check.
Suggested solution: It would be preferable if the code triggered an error if no heater or stepper at all is specified, but otherwise did not default to all steppers if only a heater was listed.