aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-12-20 14:11:38 -0500
committerKevin O'Connor <kevin@koconnor.net>2017-12-20 14:41:20 -0500
commit1d21bf66c605d114055e50d715e2dcbe2ddfd86a (patch)
tree6ef44bf18778d30ffeedec86f6e36cd01d737588
parent1b0750597312625c23e3389226e418dda1373df2 (diff)
downloadkutter-1d21bf66c605d114055e50d715e2dcbe2ddfd86a.tar.gz
kutter-1d21bf66c605d114055e50d715e2dcbe2ddfd86a.tar.xz
kutter-1d21bf66c605d114055e50d715e2dcbe2ddfd86a.zip
homing: Handle speed rounding when homing speed greater than max_velocity
Commit 002dc0df added rounding to the homing speed, but it did not work if the configured homing speed was less than the printer's maximum velocity. Move the speed rounding from stepper.py to homing.py and make sure the rounded speed is less than the maximum speed. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--klippy/cartesian.py4
-rw-r--r--klippy/corexy.py4
-rw-r--r--klippy/delta.py2
-rw-r--r--klippy/homing.py12
-rw-r--r--klippy/stepper.py7
5 files changed, 18 insertions, 11 deletions
diff --git a/klippy/cartesian.py b/klippy/cartesian.py
index c22b24c5..5e73297e 100644
--- a/klippy/cartesian.py
+++ b/klippy/cartesian.py
@@ -48,7 +48,9 @@ class CartKinematics:
rpos = s.position_endstop + s.homing_retract_dist
r2pos = rpos + s.homing_retract_dist
# Initial homing
- homing_speed = s.get_homing_speed()
+ homing_speed = s.homing_speed
+ if axis == 2:
+ homing_speed = min(homing_speed, self.max_z_velocity)
homepos = [None, None, None, None]
homepos[axis] = s.position_endstop
coord = [None, None, None, None]
diff --git a/klippy/corexy.py b/klippy/corexy.py
index 3eac2e26..8ace928e 100644
--- a/klippy/corexy.py
+++ b/klippy/corexy.py
@@ -56,7 +56,9 @@ class CoreXYKinematics:
rpos = s.position_endstop + s.homing_retract_dist
r2pos = rpos + s.homing_retract_dist
# Initial homing
- homing_speed = s.get_homing_speed()
+ homing_speed = s.homing_speed
+ if axis == 2:
+ homing_speed = min(homing_speed, self.max_z_velocity)
homepos = [None, None, None, None]
homepos[axis] = s.position_endstop
coord = [None, None, None, None]
diff --git a/klippy/delta.py b/klippy/delta.py
index e2bb971a..c0e5ef28 100644
--- a/klippy/delta.py
+++ b/klippy/delta.py
@@ -112,7 +112,7 @@ class DeltaKinematics:
s = self.steppers[0] # Assume homing speed same for all steppers
self.need_home = False
# Initial homing
- homing_speed = s.get_homing_speed()
+ homing_speed = min(s.homing_speed, self.max_z_velocity)
homepos = [0., 0., self.max_z, None]
coord = list(homepos)
coord[2] = -1.5 * math.sqrt(max(self.arm2)-self.max_xy2)
diff --git a/klippy/homing.py b/klippy/homing.py
index 9f56a6e9..3a926083 100644
--- a/klippy/homing.py
+++ b/klippy/homing.py
@@ -3,7 +3,7 @@
# Copyright (C) 2016,2017 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-import logging
+import logging, math
HOMING_STEP_DELAY = 0.00000025
ENDSTOP_SAMPLE_TIME = .000015
@@ -31,6 +31,15 @@ class Homing:
self.toolhead.move(self._fill_coord(newpos), speed)
def set_homed_position(self, pos):
self.toolhead.set_position(self._fill_coord(pos))
+ def _get_homing_speed(self, speed, endstops):
+ # Round the requested homing speed so that it is an even
+ # number of ticks per step.
+ speed = min(speed, self.toolhead.get_max_velocity()[0])
+ mcu_stepper = endstops[0][0].get_steppers()[0]
+ adjusted_freq = mcu_stepper.get_mcu().get_adjusted_freq()
+ dist_ticks = adjusted_freq * mcu_stepper.get_step_dist()
+ ticks_per_step = math.ceil(dist_ticks / speed)
+ return dist_ticks / ticks_per_step
def homing_move(self, movepos, endstops, speed):
# Start endstop checking
print_time = self.toolhead.get_last_move_time()
@@ -67,6 +76,7 @@ class Homing:
est_steps = sum([est_move_d / s.get_step_dist()
for es, n in endstops for s in es.get_steppers()])
self.toolhead.dwell(est_steps * HOMING_STEP_DELAY, check_stall=False)
+ speed = self._get_homing_speed(speed, endstops)
# Setup for retract verification
self.toolhead.get_last_move_time()
start_mcu_pos = [(s, name, s.get_mcu_position())
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 109d0904..089d14dc 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -122,13 +122,6 @@ class PrinterHomingStepper(PrinterStepper):
self.homing_endstop_accuracy = self.homing_stepper_phases
def get_endstops(self):
return [(self.mcu_endstop, self.name)]
- def get_homing_speed(self):
- # Round the configured homing speed so that it is an even
- # number of ticks per step.
- adjusted_freq = self.mcu_stepper.get_mcu().get_adjusted_freq()
- dist_ticks = adjusted_freq * self.step_dist
- ticks_per_step = round(dist_ticks / self.homing_speed)
- return dist_ticks / ticks_per_step
def get_homed_offset(self):
if not self.homing_stepper_phases or self.need_motor_enable:
return 0.