cartesian: Fix min_stop_interval calculation error

It is possible to have an acceleration greater than max_z_accel on
XY+Z moves.  That needs to be taken into account when calculating the
min_stop_interval.  This prevents spurious "No next step" MCU errors.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2017-10-12 00:48:01 -04:00
parent d3eb148cfa
commit cc7c99a4a4
4 changed files with 14 additions and 13 deletions

View file

@ -381,11 +381,12 @@ class ToolHead:
logging.exception("Exception in force_shutdown")
def get_max_velocity(self):
return self.max_velocity, self.max_accel
def get_max_axis_halt(self, max_accel):
def get_max_axis_halt(self):
# Determine the maximum velocity a cartesian axis could halt
# at due to the junction_deviation setting. The 8.0 was
# determined experimentally.
return math.sqrt(8. * self.junction_deviation * max_accel)
return min(self.max_velocity,
math.sqrt(8. * self.junction_deviation * self.max_accel))
def add_printer_objects(printer, config):
printer.add_object('toolhead', ToolHead(printer, config))