mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-23 14:44:20 -06:00
stepper: Add a get_homing_info() method to PrinterHomingStepper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
968ed58b61
commit
93d0526a77
4 changed files with 43 additions and 32 deletions
|
@ -17,12 +17,13 @@ class DeltaKinematics:
|
|||
for n in ['a', 'b', 'c']]
|
||||
stepper_a = stepper.PrinterHomingStepper(
|
||||
stepper_configs[0], need_position_minmax = False)
|
||||
a_endstop = stepper_a.get_homing_info().position_endstop
|
||||
stepper_b = stepper.PrinterHomingStepper(
|
||||
stepper_configs[1], need_position_minmax = False,
|
||||
default_position_endstop=stepper_a.position_endstop)
|
||||
default_position_endstop=a_endstop)
|
||||
stepper_c = stepper.PrinterHomingStepper(
|
||||
stepper_configs[2], need_position_minmax = False,
|
||||
default_position_endstop=stepper_a.position_endstop)
|
||||
default_position_endstop=a_endstop)
|
||||
self.steppers = [stepper_a, stepper_b, stepper_c]
|
||||
self.need_motor_enable = self.need_home = True
|
||||
self.radius = radius = config.getfloat('delta_radius', above=0.)
|
||||
|
@ -31,10 +32,12 @@ class DeltaKinematics:
|
|||
sconfig.getfloat('arm_length', arm_length_a, above=radius)
|
||||
for sconfig in stepper_configs]
|
||||
self.arm2 = [arm**2 for arm in arm_lengths]
|
||||
self.endstops = [s.position_endstop + math.sqrt(arm2 - radius**2)
|
||||
self.endstops = [(s.get_homing_info().position_endstop
|
||||
+ math.sqrt(arm2 - radius**2))
|
||||
for s, arm2 in zip(self.steppers, self.arm2)]
|
||||
self.limit_xy2 = -1.
|
||||
self.max_z = min([s.position_endstop for s in self.steppers])
|
||||
self.max_z = min([s.get_homing_info().position_endstop
|
||||
for s in self.steppers])
|
||||
self.min_z = config.getfloat('minimum_z_position', 0, maxval=self.max_z)
|
||||
self.limit_z = min([ep - arm
|
||||
for ep, arm in zip(self.endstops, arm_lengths)])
|
||||
|
@ -103,18 +106,18 @@ class DeltaKinematics:
|
|||
# All axes are homed simultaneously
|
||||
homing_state.set_axes([0, 1, 2])
|
||||
endstops = [es for s in self.steppers for es in s.get_endstops()]
|
||||
s = self.steppers[0] # Assume homing speed same for all steppers
|
||||
# Initial homing
|
||||
homing_speed = min(s.homing_speed, self.max_z_velocity)
|
||||
# Initial homing - assume homing speed same for all steppers
|
||||
hi = self.steppers[0].get_homing_info()
|
||||
homing_speed = min(hi.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)
|
||||
homing_state.home(coord, homepos, endstops, homing_speed)
|
||||
# Retract
|
||||
coord[2] = homepos[2] - s.homing_retract_dist
|
||||
coord[2] = homepos[2] - hi.retract_dist
|
||||
homing_state.retract(coord, homing_speed)
|
||||
# Home again
|
||||
coord[2] -= s.homing_retract_dist
|
||||
coord[2] -= hi.retract_dist
|
||||
homing_state.home(coord, homepos, endstops,
|
||||
homing_speed/2.0, second_home=True)
|
||||
# Set final homed position
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue