diff --git a/klippy/cartesian.py b/klippy/cartesian.py index 8be83a71..100ce220 100644 --- a/klippy/cartesian.py +++ b/klippy/cartesian.py @@ -21,25 +21,19 @@ class CartKinematics: self.stepper_pos = [int(newpos[i]*self.steppers[i].inv_step_dist + 0.5) for i in StepList] def get_max_xy_speed(self): - max_xy_speed = min(s.max_step_velocity*s.step_dist - for s in self.steppers[:2]) - max_xy_accel = min(s.max_step_accel*s.step_dist - for s in self.steppers[:2]) + max_xy_speed = min(s.max_velocity for s in self.steppers[:2]) + max_xy_accel = min(s.max_accel for s in self.steppers[:2]) return max_xy_speed, max_xy_accel def get_max_speed(self, axes_d, move_d): # Calculate max speed and accel for a given move - velocity_factor = min( - [self.steppers[i].max_step_velocity - * self.steppers[i].step_dist / abs(axes_d[i]) - for i in StepList if axes_d[i]]) - accel_factor = min( - [self.steppers[i].max_step_accel - * self.steppers[i].step_dist / abs(axes_d[i]) - for i in StepList if axes_d[i]]) + velocity_factor = min([self.steppers[i].max_velocity / abs(axes_d[i]) + for i in StepList if axes_d[i]]) + accel_factor = min([self.steppers[i].max_accel / abs(axes_d[i]) + for i in StepList if axes_d[i]]) return velocity_factor * move_d, accel_factor * move_d def get_max_e_speed(self): s = self.steppers[3] - return s.max_step_velocity*s.step_dist, s.max_step_accel*s.step_dist + return s.max_velocity, s.max_accel def home(self, toolhead, axis): # Each axis is homed independently and in order homing_state = homing.Homing(toolhead, self.steppers) # XXX diff --git a/klippy/stepper.py b/klippy/stepper.py index 61faaee0..5a05e910 100644 --- a/klippy/stepper.py +++ b/klippy/stepper.py @@ -13,10 +13,8 @@ class PrinterStepper: self.step_dist = config.getfloat('step_distance') self.inv_step_dist = 1. / self.step_dist - max_velocity = config.getfloat('max_velocity') - self.max_step_velocity = max_velocity * self.inv_step_dist - max_accel = config.getfloat('max_accel') - self.max_step_accel = max_accel * self.inv_step_dist + self.max_velocity = config.getfloat('max_velocity') + self.max_accel = config.getfloat('max_accel') self.homing_speed = config.getfloat('homing_speed', 5.0) self.homing_positive_dir = config.getboolean( @@ -36,7 +34,8 @@ class PrinterStepper: step_pin = self.config.get('step_pin') dir_pin = self.config.get('dir_pin') jc = 0.005 # XXX - min_stop_interval = int((math.sqrt(1./self.max_step_accel + jc**2) - jc) + inv_max_step_accel = self.step_dist / self.max_accel + min_stop_interval = int((math.sqrt(inv_max_step_accel + jc**2) - jc) * self.clock_ticks) - max_error min_stop_interval = max(0, min_stop_interval) mcu = self.printer.mcu