-
Notifications
You must be signed in to change notification settings - Fork 2
/
beacon_nozzle_expansion_compensation_old.cfg
205 lines (157 loc) · 7.28 KB
/
beacon_nozzle_expansion_compensation_old.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
[gcode_macro BEACON]
variable_beacon_contact_calibration_temp: 150 # nozzle temperature for auto calibration
variable_beacon_contact_expansion_compensation: True # enables the nozzle thermal expansion compensation
variable_beacon_contact_expansion_multiplier: 1.0 # multiplier for the nozzle thermal expansion compensation
# Do not modify below
gcode:
[delayed_gcode _BEACON_INIT]
initial_duration: 0.1
gcode:
# reset nozzle thermal expansion offset
_BEACON_SET_NOZZLE_TEMP_OFFSET RESET=True
[gcode_macro BEACON_CALIBRATE_NOZZLE_TEMP_OFFSET]
variable_reference_z: 0.0
gcode:
{% set z_speed = (printer.configfile.settings['stepper_z'].homing_speed)|float * 60 %}
{% set z_hop = (printer.configfile.settings['beacon'].home_z_hop)|float %}
{% set safe_home_x = (printer.configfile.settings.stepper_x.position_max) /2 %}
{% set safe_home_y = (printer.configfile.settings.stepper_y.position_max) /2 %}
{% if printer.toolhead.homed_axes != "xyz" %}
G28
{% endif %}
#QGL if setup
{% if printer.quad_gantry_level is defined and not printer.quad_gantry_level.applied %}
SET_DISPLAY_TEXT MSG="QGL"
{% if printer.configfile.settings["gcode_macro FAST_QGL"] is defined %}
{% if printer.configfile.settings['beacon'].default_probe_method != contact %}
FAST_QGL
{% endif %}
{% else %}
quad_gantry_level
{% endif %}
G28 Z
{% endif %}
#Z_TILT if setup
{% if printer.z_tilt is defined and not printer.z_tilt.applied %}
SET_DISPLAY_TEXT MSG="Z-Tilt adjust"
{% if printer.configfile.settings["gcode_macro FAST_Z_TILT"] is defined %}
{% if printer.configfile.settings['beacon'].default_probe_method != contact %}
FAST_Z_TILT
{% endif %}
{% else %}
Z_TILT_ADJUST
{% endif %}
G28 Z
{% endif %}
# settle the mechanics down
{% for i in range(10) %}
beacon_poke speed=3 top=5 bottom=-0.6
{% endfor %}
# get and set start temperature offset
_BEACON_PROBE_NOZZLE_TEMP_OFFSET TEMP=150
_BEACON_STORE_NOZZLE_TEMP_OFFSET TEMP=150
# get and set end temperature offset
_BEACON_PROBE_NOZZLE_TEMP_OFFSET TEMP=250
_BEACON_STORE_NOZZLE_TEMP_OFFSET TEMP=250
# get and set start temperature offset
_BEACON_PROBE_NOZZLE_TEMP_OFFSET TEMP=150
_BEACON_STORE_NOZZLE_TEMP_OFFSET TEMP=150
# get and set end temperature offset
_BEACON_PROBE_NOZZLE_TEMP_OFFSET TEMP=250
_BEACON_STORE_NOZZLE_TEMP_OFFSET TEMP=250
# move back to home position
G0 Z{z_hop} F{z_speed}
G0 X{safe_home_x} Y{safe_home_y}
# turn heater off
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=0
# echo results
_BEACON_NOZZLE_TEMP_OFFSET
[gcode_macro _BEACON_PROBE_NOZZLE_TEMP_OFFSET]
gcode:
# parameters
{% set temp = params.TEMP|int %}
# config
{% set z_speed = (printer.configfile.settings['stepper_z'].homing_speed)|float * 60 %}
# ratos variables file
{% set svv = printer.save_variables.variables %}
# wait for noozle to reach the probing temperature
RESPOND MSG="Waiting for nozzle to reach {temp}°C..."
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={temp}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={temp} MAXIMUM={temp + 2}
# wait for temperature to settle down
RESPOND MSG="Waiting 60s for thermal expansion..."
G4 P60000
# probe
RESPOND MSG="Probing with nozzle temperature {temp}°C..."
PROBE PROBE_METHOD=contact SAMPLES=5 SAMPLES_TOLERANCE=0.005 SAMPLES_TOLERANCE_RETRIES=10 SAMPLES_RESULT=median
G4 P2000 #wait 2 sec so beacon_query returns non inf value
BEACON_QUERY
# raise z
G0 Z5 F{z_speed}
[gcode_macro _BEACON_SET_NOZZLE_TEMP_OFFSET]
gcode:
{% set reset = true if params.RESET|default(false)|lower == 'true' else false %}
# config
{% set z_speed = (printer.configfile.settings['stepper_z'].homing_speed)|float * 60 %}
# beacon config
{% set beacon_contact_calibration_temp = params.probing_temp|default(150)|int %}
{% set beacon_contact_expansion_multiplier = printer["gcode_macro BEACON"].beacon_contact_expansion_multiplier|default(1.0)|float %}
{% set beacon_contact_expansion_compensation = true if printer["gcode_macro BEACON"].beacon_contact_expansion_compensation|default(false)|lower == 'true' else false %}
# ratos variables file
{% set svv = printer.save_variables.variables %}
{% if reset %}
# reset applied offset
SAVE_VARIABLE VARIABLE=nozzle_expansion_applied_offset VALUE=0
{% else %}
{% if beacon_contact_expansion_compensation %}
# get coefficient value
{% set nozzle_expansion_coefficient = svv.nozzle_expansion_coefficient|default(0)|float %}
# get applied offset
{% set applied_offset = svv.nozzle_expansion_applied_offset|default(0)|float %}
# get extruder target temperature
{% set temp = printer['extruder'].target|float %}
# calculate new offset
{% set temp_offset = temp - beacon_contact_calibration_temp %}
{% set expansion_coefficient = nozzle_expansion_coefficient %}
{% set expansion_offset = beacon_contact_expansion_multiplier * (temp_offset * (expansion_coefficient / 100)) %}
# set new offset
{% set new_offset = ((-applied_offset) + expansion_offset) %}
SET_GCODE_OFFSET Z_ADJUST={new_offset} MOVE=1 SPEED={z_speed}
SAVE_VARIABLE VARIABLE=nozzle_expansion_applied_offset VALUE={expansion_offset}
# echo
RESPOND MSG={'"Nozzle expansion offset of %.6fmm applied"' % (expansion_offset)}
{% endif %}
{% endif %}
[gcode_macro _BEACON_REMOVE_NOZZLE_TEMP_OFFSET]
gcode:
# config
{% set z_speed = (printer.configfile.settings['stepper_z'].homing_speed)|float * 60 %}
# beacon config
{% set beacon_contact_expansion_compensation = true if printer["gcode_macro BEACON"].beacon_contact_expansion_compensation|default(false)|lower == 'true' else false %}
{% if beacon_contact_expansion_compensation %}
# ratos variables file
{% set svv = printer.save_variables.variables %}
# get applied offset
{% set applied_offset = svv.nozzle_expansion_applied_offset|default(0)|float %}
# remove applied offset
SET_GCODE_OFFSET Z_ADJUST={(-applied_offset)} MOVE=0 SPEED={z_speed}
{% endif %}
[gcode_macro _BEACON_STORE_NOZZLE_TEMP_OFFSET]
gcode:
# parameters
{% set temp = params.TEMP|int %}
#variable file
{% set svv = printer.save_variables.variables %}
# get last probe result
{% set last_z = printer.beacon.last_z_result|default(0)|float %}
# set temperature offset
{% if temp == 150 %}
SET_GCODE_VARIABLE MACRO=BEACON_CALIBRATE_NOZZLE_TEMP_OFFSET VARIABLE=reference_z VALUE={last_z}
{% else %}
{% set reference_z = printer["gcode_macro BEACON_CALIBRATE_NOZZLE_TEMP_OFFSET"].reference_z|default(0)|float %}
SAVE_VARIABLE VARIABLE=nozzle_expansion_coefficient VALUE={(last_z - reference_z)}
{% endif %}
[gcode_macro _BEACON_NOZZLE_TEMP_OFFSET]
gcode:
{% set svv = printer.save_variables.variables %}
RESPOND MSG={'"expansion coefficient %.6f"' % svv.nozzle_expansion_coefficient}