aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-09-26 19:29:58 -0400
committerKevinOConnor <kevin@koconnor.net>2018-10-01 11:12:30 -0400
commitc5d4e14298525e0a184f42f812041b32dfea6951 (patch)
treeec9dc78e55e4cf862df408ffddb35e37ab19c33e
parenta9a0bb87fa472c470d5cbd4ffc78e1acb29a04c1 (diff)
downloadkutter-c5d4e14298525e0a184f42f812041b32dfea6951.tar.gz
kutter-c5d4e14298525e0a184f42f812041b32dfea6951.tar.xz
kutter-c5d4e14298525e0a184f42f812041b32dfea6951.zip
probe: Infer position_endstop when using probe:z_virtual_offset
Don't require (or permit) the user to specify a stepper_z position_endstop when using the probe:z_virtual_offset mechanism. In that case the position_endstop should always equal the probe's z_offset - so no need to have the user specify it. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--config/example-extras.cfg4
-rw-r--r--config/sample-bltouch.cfg6
-rw-r--r--klippy/extras/bed_mesh.py17
-rw-r--r--klippy/extras/probe.py27
-rw-r--r--klippy/stepper.py4
5 files changed, 15 insertions, 43 deletions
diff --git a/config/example-extras.cfg b/config/example-extras.cfg
index ab8d8e3f..61a3d276 100644
--- a/config/example-extras.cfg
+++ b/config/example-extras.cfg
@@ -13,7 +13,9 @@
# QUERY_PROBE extended g-code commands become available. The probe
# section also creates a virtual "probe:z_virtual_endstop" pin. One
# may set the stepper_z endstop_pin to this virtual pin on cartesian
-# style printers that use the probe in place of a z endstop.
+# style printers that use the probe in place of a z endstop. If using
+# "probe:z_virtual_endstop" then do not define a position_endstop in
+# the stepper_z config section.
#[probe]
#pin: ar15
# Probe detection pin. This parameter must be provided.
diff --git a/config/sample-bltouch.cfg b/config/sample-bltouch.cfg
index 676418d8..fe67e564 100644
--- a/config/sample-bltouch.cfg
+++ b/config/sample-bltouch.cfg
@@ -30,8 +30,6 @@ deactivate_gcode:
# Example bed_tilt config section
[bed_tilt]
-#x_adjust:
-#y_adjust:
points:
100,100
10,10
@@ -45,8 +43,8 @@ points:
# If the BLTouch is used to home the Z axis, then define a
# homing_override section, use probe:z_virtual_endstop as the
-# endstop_pin in the stepper_z section, and set the position_endstop
-# in the stepper_z section to match the probe's z_offset.
+# endstop_pin in the stepper_z section, and do not set
+# position_endstop in the stepper_z section.
#[homing_override]
#set_position_z: 5
#axes: z
diff --git a/klippy/extras/bed_mesh.py b/klippy/extras/bed_mesh.py
index 5a7a622d..c312cc9d 100644
--- a/klippy/extras/bed_mesh.py
+++ b/klippy/extras/bed_mesh.py
@@ -138,11 +138,6 @@ class BedMeshCalibrate:
self._init_probe_params(config, points)
self.probe_helper = probe.ProbePointsHelper(
config, self.probe_finalize, points)
- self.z_endstop_pos = None
- if config.has_section('stepper_z'):
- zconfig = config.getsection('stepper_z')
- self.z_endstop_pos = zconfig.getfloat(
- 'position_endstop', None)
self.gcode = self.printer.lookup_object('gcode')
self.gcode.register_command(
'BED_MESH_CALIBRATE', self.cmd_BED_MESH_CALIBRATE,
@@ -227,18 +222,6 @@ class BedMeshCalibrate:
self.probe_params['x_offset'] = offsets[0]
self.probe_params['y_offset'] = offsets[1]
z_offset = offsets[2]
- if self.probe_helper.get_last_xy_home_positon() is not None \
- and self.z_endstop_pos is not None:
- # Using probe as a virtual endstop, warn user if the
- # stepper_z position_endstop is different
- if self.z_endstop_pos != z_offset:
- z_msg = "bed_mesh: WARN - probe z_offset is not" \
- " equal to Z position_endstop\n"
- z_msg += "[probe] z_offset: %.4f\n" % z_offset
- z_msg += "[stepper_z] position_endstop: %.4f" \
- % self.z_endstop_pos
- logging.info(z_msg)
- self.gcode.respond_info(z_msg)
x_cnt = self.probe_params['x_count']
y_cnt = self.probe_params['y_count']
# create a 2-D array representing the probed z-positions.
diff --git a/klippy/extras/probe.py b/klippy/extras/probe.py
index 5b503610..5034ecf0 100644
--- a/klippy/extras/probe.py
+++ b/klippy/extras/probe.py
@@ -38,7 +38,6 @@ class PrinterProbe:
self.mcu_probe = ProbeEndstopWrapper(config, self.mcu_probe)
# Create z_virtual_endstop pin
ppins.register_chip('probe', self)
- self.z_virtual_endstop = None
# Register PROBE/QUERY_PROBE commands
self.gcode = self.printer.lookup_object('gcode')
self.gcode.register_command(
@@ -54,15 +53,9 @@ class PrinterProbe:
raise pins.error("Probe virtual endstop only useful as endstop pin")
if pin_params['invert'] or pin_params['pullup']:
raise pins.error("Can not pullup/invert probe virtual endstop")
- self.z_virtual_endstop = ProbeVirtualEndstop(
- self.printer, self.mcu_probe)
- return self.z_virtual_endstop
+ return ProbeVirtualEndstop(self, self.mcu_probe)
def get_offsets(self):
return self.x_offset, self.y_offset, self.z_offset
- def last_home_position(self):
- if self.z_virtual_endstop is None:
- return None
- return self.z_virtual_endstop.position
cmd_PROBE_help = "Probe Z-height at current XY position"
def cmd_PROBE(self, params):
toolhead = self.printer.lookup_object('toolhead')
@@ -112,25 +105,24 @@ class ProbeEndstopWrapper:
self.gcode.run_script_from_command(self.deactivate_gcode)
self.mcu_endstop.home_finalize()
-# Wrapper that records the last XY position of a virtual endstop probe
+# Wrapper for probe:z_virtual_endstop handling
class ProbeVirtualEndstop:
- def __init__(self, printer, mcu_endstop):
- self.printer = printer
+ def __init__(self, probe, mcu_endstop):
+ self.probe = probe
self.mcu_endstop = mcu_endstop
- self.position = None
# Wrappers
self.get_mcu = self.mcu_endstop.get_mcu
self.add_stepper = self.mcu_endstop.add_stepper
self.get_steppers = self.mcu_endstop.get_steppers
self.home_start = self.mcu_endstop.home_start
self.home_wait = self.mcu_endstop.home_wait
+ self.home_finalize = self.mcu_endstop.home_finalize
self.query_endstop = self.mcu_endstop.query_endstop
self.query_endstop_wait = self.mcu_endstop.query_endstop_wait
self.home_prepare = self.mcu_endstop.home_prepare
self.TimeoutError = self.mcu_endstop.TimeoutError
- def home_finalize(self):
- self.position = self.printer.lookup_object('toolhead').get_position()
- self.mcu_endstop.home_finalize()
+ def get_position_endstop(self):
+ return self.probe.get_offsets()[2]
# Helper code that can probe a series of points and report the
# position at each point.
@@ -164,11 +156,6 @@ class ProbePointsHelper:
self.gcode = self.toolhead = None
def get_lift_speed(self):
return self.lift_speed
- def get_last_xy_home_positon(self):
- probe = self.printer.lookup_object('probe', None)
- if probe is None:
- return None
- return probe.last_home_position()
def _lift_z(self, z_pos, add=False, speed=None):
# Lift toolhead
curpos = self.toolhead.get_position()
diff --git a/klippy/stepper.py b/klippy/stepper.py
index e12f99f6..c7fda2bd 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -121,7 +121,9 @@ class PrinterRail:
mcu_endstop = ppins.setup_pin('endstop', config.get('endstop_pin'))
self.endstops = [(mcu_endstop, self.name)]
stepper.add_to_endstop(mcu_endstop)
- if default_position_endstop is None:
+ if hasattr(mcu_endstop, "get_position_endstop"):
+ self.position_endstop = mcu_endstop.get_position_endstop()
+ elif default_position_endstop is None:
self.position_endstop = config.getfloat('position_endstop')
else:
self.position_endstop = config.getfloat(