aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-01-30 15:36:51 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-01-31 15:47:06 -0500
commitc36fe76d692754d0244059a729e147c688c96062 (patch)
tree33ca18532e1af1dd91bb8cd931625666fd08232e /klippy
parente3dde19932317b77129d4805bde3cf7fe48fd904 (diff)
downloadkutter-c36fe76d692754d0244059a729e147c688c96062.tar.gz
kutter-c36fe76d692754d0244059a729e147c688c96062.tar.xz
kutter-c36fe76d692754d0244059a729e147c688c96062.zip
probe: Add support for configuring lift_speed
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/extras/probe.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/klippy/extras/probe.py b/klippy/extras/probe.py
index f5c69ec7..e494eda1 100644
--- a/klippy/extras/probe.py
+++ b/klippy/extras/probe.py
@@ -17,7 +17,8 @@ class PrinterProbe:
self.printer = config.get_printer()
self.name = config.get_name()
self.mcu_probe = mcu_probe
- self.speed = config.getfloat('speed', 5.0)
+ self.speed = config.getfloat('speed', 5.0, above=0.)
+ self.lift_speed = config.getfloat('lift_speed', self.speed, above=0.)
self.x_offset = config.getfloat('x_offset', 0.)
self.y_offset = config.getfloat('y_offset', 0.)
self.z_offset = config.getfloat('z_offset')
@@ -58,6 +59,11 @@ class PrinterProbe:
if pin_params['invert'] or pin_params['pullup']:
raise pins.error("Can not pullup/invert probe virtual endstop")
return self.mcu_probe
+ def get_lift_speed(self, params=None):
+ if params is not None:
+ return self.gcode.get_float("LIFT_SPEED", params,
+ self.lift_speed, above=0.)
+ return self.lift_speed
def get_offsets(self):
return self.x_offset, self.y_offset, self.z_offset
def _probe(self, speed):
@@ -103,6 +109,7 @@ class PrinterProbe:
def run_probe(self, params={}):
speed = self.gcode.get_float(
"PROBE_SPEED", params, self.speed, above=0.)
+ lift_speed = self.get_lift_speed(params)
sample_count = self.gcode.get_int(
"SAMPLES", params, self.sample_count, minval=1)
sample_retract_dist = self.gcode.get_float(
@@ -132,7 +139,7 @@ class PrinterProbe:
# Retract
if len(positions) < sample_count:
liftpos = [None, None, pos[2] + sample_retract_dist]
- self._move(liftpos, speed)
+ self._move(liftpos, lift_speed)
# Calculate and return result
if samples_result == 'median':
return self._calc_median(positions)
@@ -150,17 +157,20 @@ class PrinterProbe:
"probe: %s" % (["open", "TRIGGERED"][not not res],))
cmd_PROBE_ACCURACY_help = "Probe Z-height accuracy at current XY position"
def cmd_PROBE_ACCURACY(self, params):
- speed = self.gcode.get_float(
- "PROBE_SPEED", params, self.speed, above=0.)
+ speed = self.gcode.get_float("PROBE_SPEED", params,
+ self.speed, above=0.)
+ lift_speed = self.get_lift_speed(params)
sample_count = self.gcode.get_int("SAMPLES", params, 10, minval=1)
sample_retract_dist = self.gcode.get_float(
"SAMPLE_RETRACT_DIST", params, self.sample_retract_dist, above=0.)
toolhead = self.printer.lookup_object('toolhead')
pos = toolhead.get_position()
self.gcode.respond_info("PROBE_ACCURACY at X:%.3f Y:%.3f Z:%.3f"
- " (samples=%d retract=%.3f speed=%.1f\n"
+ " (samples=%d retract=%.3f"
+ " speed=%.1f lift_speed=%.1f)\n"
% (pos[0], pos[1], pos[2],
- sample_count, sample_retract_dist, speed))
+ sample_count, sample_retract_dist,
+ speed, lift_speed))
# Probe bed sample_count times
positions = []
while len(positions) < sample_count:
@@ -169,7 +179,7 @@ class PrinterProbe:
positions.append(pos)
# Retract
liftpos = [None, None, pos[2] + sample_retract_dist]
- self._move(liftpos, speed)
+ self._move(liftpos, lift_speed)
# Calculate maximum, minimum and average values
max_value = max([p[2] for p in positions])
min_value = min([p[2] for p in positions])
@@ -200,11 +210,12 @@ class PrinterProbe:
def cmd_PROBE_CALIBRATE(self, params):
manual_probe.verify_no_manual_probe(self.printer)
# Perform initial probe
+ lift_speed = self.get_lift_speed(params)
curpos = self.run_probe(params)
# Move away from the bed
self.probe_calibrate_z = curpos[2]
curpos[2] += 5.
- self._move(curpos, self.speed)
+ self._move(curpos, lift_speed)
# Move the nozzle over the probe point
curpos[0] += self.x_offset
curpos[1] += self.y_offset
@@ -336,7 +347,7 @@ class ProbePointsHelper:
self._manual_probe_start()
return
# Perform automatic probing
- self.lift_speed = min(self.speed, probe.speed)
+ self.lift_speed = probe.get_lift_speed(params)
self.probe_offsets = probe.get_offsets()
if self.horizontal_move_z < self.probe_offsets[2]:
raise self.gcode.error("horizontal_move_z can't be less than"