-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbedfans.cfg
129 lines (105 loc) · 3.88 KB
/
bedfans.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
############### Config options ##################
[gcode_macro _BEDFANVARS]
variable_threshold: 100 # If bed temp target is above this threshold, fans will be enabled. If temp is set to below this threshold, fans will be disabled.
variable_fast: 0.45 # Fan speed once bed temp is reached
variable_slow: 0.18 # Fan speed while bed is heating
gcode:
########## Bed Fans #########
[fan_generic BedFans]
pin: PD12
#cycle_time: 0.05
kick_start_time: 0.5
########## Aliases #########
[gcode_macro BEDFANSSLOW]
gcode:
# Vars
{% set SLOW = printer["gcode_macro _BEDFANVARS"].slow|float %}
SET_FAN_SPEED FAN=BedFans SPEED={SLOW}
[gcode_macro BEDFANSFAST]
gcode:
# Vars
{% set FAST = printer["gcode_macro _BEDFANVARS"].fast|float %}
SET_FAN_SPEED FAN=BedFans SPEED={FAST}
[gcode_macro BEDFANSOFF]
gcode:
SET_FAN_SPEED FAN=BedFans SPEED=0
############ 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}
{% 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
SET_FAN_SPEED FAN=nevermore SPEED=1
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 %}
# Override M190 (Wait for Bed Temperature)
# As a bonus, use TEMPERATURE_WAIT so we don't have to wait for PID to level off.
[gcode_macro M190]
rename_existing: M99190
gcode:
# Parameters
{% set S = params.S|int %}
# Vars
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
{% if S >= THRESHOLD %}
BEDFANSSLOW
SET_FAN_SPEED FAN=nevermore SPEED=1 # >= Threshold temp: Low speed fans while heating
{% else %}
#BEDFANSOFF # < Threshold temp: Turn bed fans off
{% endif %}
M140 {% for p in params
%}{'%s%s' % (p, params[p])}{%
endfor %} # Set bed temp
{% if S != 0 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={S|int} MAXIMUM={S|int + 5} # Wait for bed temp within 5 degrees
{% endif %}
# Post-heating fan speeds
{% if S >= THRESHOLD %}
BEDFANSFAST # >= Threshold temp: Higher speed fans after heating finished
{% endif %}
# Replace M140 (Set Bed Temperature) to just be an alias of SET_HEATER_TEMPERATURE (which has associated bed fan logic if enabled)
[gcode_macro M140]
rename_existing: M99140
gcode:
# Parameters
{% set S = params.S|float %}
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={S}
# Replace TURN_OFF_HEATERS
[gcode_macro TURN_OFF_HEATERS]
rename_existing: _TURN_OFF_HEATERS
gcode:
BEDFANSOFF
SET_FAN_SPEED FAN=nevermore SPEED=0
_TURN_OFF_HEATERS
################ Monitoring loop #####################
# Turns bed fans to "fast" speed once target bed temp is reached.
[delayed_gcode bedfanloop]
gcode:
# Vars
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
{% if printer.heater_bed.target >= THRESHOLD %} # Continue only if target temp greater than threshold.
{% if printer.heater_bed.temperature|int >= (printer.heater_bed.target|int - 1) %}
BEDFANSFAST # If within 1 degree of target temp: Higher speed fans
{% else %}
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=5 # If temp not reached yet: loop again
{% endif %}
{% endif %}