diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2016-09-30 19:04:24 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2016-09-30 21:36:51 -0400 |
commit | 9faa0fbd25b948fc5fd7144a68ad03803d61784e (patch) | |
tree | a3e87c8a861420eb547eea4c185c8c084c322e8b /klippy | |
parent | 3167e8ddbe338a58311fd94f044e8499ca9c9787 (diff) | |
download | kutter-9faa0fbd25b948fc5fd7144a68ad03803d61784e.tar.gz kutter-9faa0fbd25b948fc5fd7144a68ad03803d61784e.tar.xz kutter-9faa0fbd25b948fc5fd7144a68ad03803d61784e.zip |
extruder: Support a minimum extrude temperature
Allow the config file to specify the minimum temperature for the
extruder and check for that temperature prior to moving the extruder
motor.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/extruder.py | 4 | ||||
-rw-r--r-- | klippy/heater.py | 8 |
2 files changed, 11 insertions, 1 deletions
diff --git a/klippy/extruder.py b/klippy/extruder.py index 9cc9376c..94686fdd 100644 --- a/klippy/extruder.py +++ b/klippy/extruder.py @@ -4,7 +4,7 @@ # # This file may be distributed under the terms of the GNU GPLv3 license. import logging -import stepper, heater +import stepper, heater, homing class PrinterExtruder: def __init__(self, printer, config): @@ -20,6 +20,8 @@ class PrinterExtruder: def motor_off(self, move_time): self.stepper.motor_enable(move_time, 0) def check_move(self, move): + if not self.heater.can_extrude: + raise homing.EndstopError(move.pos, "Extrude below minimum temp") if (not move.do_calc_junction and not move.axes_d[0] and not move.axes_d[1] and not move.axes_d[2]): diff --git a/klippy/heater.py b/klippy/heater.py index c66b251e..3797b917 100644 --- a/klippy/heater.py +++ b/klippy/heater.py @@ -28,6 +28,8 @@ class PrinterHeater: self.mcu_pwm = self.mcu_adc = None self.thermistor_c = Thermistors.get(config.get('thermistor_type')) self.pullup_r = config.getfloat('pullup_resistor', 4700.) + self.min_extrude_temp = config.getfloat('min_extrude_temp', 170.) + self.can_extrude = False self.lock = threading.Lock() self.last_temp = 0. self.last_temp_time = 0. @@ -49,6 +51,8 @@ class PrinterHeater: control_algo = self.config.get('control', 'watermark') algos = {'watermark': ControlBangBang, 'pid': ControlPID} self.control = algos[control_algo](self, self.config) + if self.printer.mcu.output_file_mode: + self.can_extrude = True def run(self): self.mcu_adc.query_analog_in(REPORT_TIME) def set_pwm(self, read_time, value): @@ -87,12 +91,16 @@ class PrinterHeater: with self.lock: self.last_temp = temp self.last_temp_time = read_time + self.can_extrude = (self.last_temp >= self.min_extrude_temp + and self.target_temp >= self.min_extrude_temp) self.control.adc_callback(read_time, temp) #logging.debug("temp: %.3f %f = %f" % (read_time, read_value, temp)) # External commands def set_temp(self, print_time, degrees): with self.lock: self.target_temp = degrees + if self.target_temp < self.min_extrude_temp: + self.can_extrude = False def get_temp(self): with self.lock: return self.last_temp, self.target_temp |