aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-01-02 18:58:45 -0500
committerKevin O'Connor <kevin@koconnor.net>2017-01-03 18:18:30 -0500
commitc87c090264fb9fd91bc87fbc63a05c5e53e3c484 (patch)
tree5f9a4dda5c129af06f436ff1e96b030103c16553 /klippy
parentb26922978a1b7d0994e90572dcec6af120987b82 (diff)
downloadkutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.tar.gz
kutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.tar.xz
kutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.zip
extruder: Calculate sane defaults for extrude only velocity and accel
Instead of requiring the user enter velocity and accel parameters for extrude only moves, calculate sane defaults from the printer's maximum velocity and accel. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/cartesian.py2
-rw-r--r--klippy/delta.py3
-rw-r--r--klippy/extruder.py9
-rw-r--r--klippy/toolhead.py5
4 files changed, 13 insertions, 6 deletions
diff --git a/klippy/cartesian.py b/klippy/cartesian.py
index b2bd9661..636e9284 100644
--- a/klippy/cartesian.py
+++ b/klippy/cartesian.py
@@ -17,7 +17,7 @@ class CartKinematics:
self.max_z_accel = config.getfloat('max_z_accel', 9999999.9)
self.need_motor_enable = True
self.limits = [(1.0, -1.0)] * 3
- def set_max_jerk(self, max_xy_halt_velocity, max_accel):
+ def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
self.steppers[0].set_max_jerk(max_xy_halt_velocity, max_accel)
self.steppers[1].set_max_jerk(max_xy_halt_velocity, max_accel)
self.steppers[2].set_max_jerk(0., self.max_z_accel)
diff --git a/klippy/delta.py b/klippy/delta.py
index f8f85c02..041b6ce7 100644
--- a/klippy/delta.py
+++ b/klippy/delta.py
@@ -29,8 +29,7 @@ class DeltaKinematics:
(cos(210.)*radius, sin(210.)*radius),
(cos(330.)*radius, sin(330.)*radius),
(cos(90.)*radius, sin(90.)*radius)]
- def set_max_jerk(self, max_xy_halt_velocity, max_accel):
- # XXX - this sets conservative values
+ def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
for stepper in self.steppers:
stepper.set_max_jerk(max_xy_halt_velocity, max_accel)
def build_config(self):
diff --git a/klippy/extruder.py b/klippy/extruder.py
index 9e3d8143..7e314a7b 100644
--- a/klippy/extruder.py
+++ b/klippy/extruder.py
@@ -8,6 +8,7 @@ import stepper, heater, homing
class PrinterExtruder:
def __init__(self, printer, config):
+ self.config = config
self.heater = heater.PrinterHeater(printer, config)
self.stepper = stepper.PrinterStepper(printer, config, 'extruder')
nozzle_diameter = config.getfloat('nozzle_diameter')
@@ -17,11 +18,15 @@ class PrinterExtruder:
'max_extrude_cross_section', 4. * nozzle_diameter**2)
self.max_extrude_ratio = max_cross_section / filament_area
self.max_e_dist = config.getfloat('max_extrude_only_distance', 50.)
- self.max_e_velocity = config.getfloat('max_velocity')
- self.max_e_accel = config.getfloat('max_accel')
+ self.max_e_velocity = self.max_e_accel = None
self.pressure_advance = config.getfloat('pressure_advance', 0.)
self.need_motor_enable = True
self.extrude_pos = 0.
+ def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
+ self.max_e_velocity = self.config.getfloat(
+ 'max_extrude_only_velocity', max_velocity * self.max_extrude_ratio)
+ self.max_e_accel = self.config.getfloat(
+ 'max_extrude_only_accel', max_accel * self.max_extrude_ratio)
def build_config(self):
self.heater.build_config()
self.stepper.set_max_jerk(9999999.9, 9999999.9)
diff --git a/klippy/toolhead.py b/klippy/toolhead.py
index 614ab4b1..922749ec 100644
--- a/klippy/toolhead.py
+++ b/klippy/toolhead.py
@@ -179,7 +179,10 @@ class ToolHead:
self.motor_off_time = self.reactor.NEVER
self.flush_timer = self.reactor.register_timer(self._flush_handler)
def build_config(self):
- self.kin.set_max_jerk(0.005 * self.max_accel, self.max_accel) # XXX
+ xy_halt = 0.005 * self.max_accel # XXX
+ self.kin.set_max_jerk(xy_halt, self.max_speed, self.max_accel)
+ if self.extruder is not None:
+ self.extruder.set_max_jerk(xy_halt, self.max_speed, self.max_accel)
self.kin.build_config()
# Print time tracking
def update_move_time(self, movetime):