aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/input_shaper.py
diff options
context:
space:
mode:
authorDmitry Butyugin <dmbutyugin@google.com>2020-10-15 02:08:10 +0200
committerGitHub <noreply@github.com>2020-10-14 20:08:10 -0400
commitf8c4f90c049995b5ec8c15389a5065d1ae705030 (patch)
tree80c5366a7a892b95b0100e03e1cc3451172dab0f /klippy/extras/input_shaper.py
parentfac4e53e86b4677c6745a9df915d6e3ac21b4855 (diff)
downloadkutter-f8c4f90c049995b5ec8c15389a5065d1ae705030.tar.gz
kutter-f8c4f90c049995b5ec8c15389a5065d1ae705030.tar.xz
kutter-f8c4f90c049995b5ec8c15389a5065d1ae705030.zip
resonance_tester: Resonance testing and input shaper auto-calibration (#3381)
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Diffstat (limited to 'klippy/extras/input_shaper.py')
-rw-r--r--klippy/extras/input_shaper.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/klippy/extras/input_shaper.py b/klippy/extras/input_shaper.py
index 35e7ff63..ceca89f8 100644
--- a/klippy/extras/input_shaper.py
+++ b/klippy/extras/input_shaper.py
@@ -25,14 +25,12 @@ class InputShaper:
, 'ei': ffi_lib.INPUT_SHAPER_EI
, '2hump_ei': ffi_lib.INPUT_SHAPER_2HUMP_EI
, '3hump_ei': ffi_lib.INPUT_SHAPER_3HUMP_EI}
- shaper_type = config.getchoice('shaper_type', self.shapers, None)
- if shaper_type is None:
- self.shaper_type_x = config.getchoice(
- 'shaper_type_x', self.shapers, 'mzv')
- self.shaper_type_y = config.getchoice(
- 'shaper_type_y', self.shapers, 'mzv')
- else:
- self.shaper_type_x = self.shaper_type_y = shaper_type
+ shaper_type = config.get('shaper_type', 'mzv')
+ self.shaper_type_x = config.getchoice(
+ 'shaper_type_x', self.shapers, shaper_type)
+ self.shaper_type_y = config.getchoice(
+ 'shaper_type_y', self.shapers, shaper_type)
+ self.saved_shaper_freq_x = self.saved_shaper_freq_y = 0.
self.stepper_kinematics = []
self.orig_stepper_kinematics = []
# Register gcode commands
@@ -86,6 +84,24 @@ class InputShaper:
, shaper_type_x, shaper_type_y
, shaper_freq_x, shaper_freq_y
, damping_ratio_x, damping_ratio_y)
+ def disable_shaping(self):
+ if (self.saved_shaper_freq_x or self.saved_shaper_freq_y) and not (
+ self.shaper_freq_x or self.shaper_freq_y):
+ # Input shaper is already disabled
+ return
+ self.saved_shaper_freq_x = self.shaper_freq_x
+ self.saved_shaper_freq_y = self.shaper_freq_y
+ self._set_input_shaper(self.shaper_type_x, self.shaper_type_y, 0., 0.,
+ self.damping_ratio_x, self.damping_ratio_y)
+ def enable_shaping(self):
+ saved = self.saved_shaper_freq_x or self.saved_shaper_freq_y
+ if saved:
+ self._set_input_shaper(self.shaper_type_x, self.shaper_type_y,
+ self.saved_shaper_freq_x,
+ self.saved_shaper_freq_y,
+ self.damping_ratio_x, self.damping_ratio_y)
+ self.saved_shaper_freq_x = self.saved_shaper_freq_y = 0.
+ return saved
cmd_SET_INPUT_SHAPER_help = "Set cartesian parameters for input shaper"
def cmd_SET_INPUT_SHAPER(self, gcmd):
damping_ratio_x = gcmd.get_float(