From f8c4f90c049995b5ec8c15389a5065d1ae705030 Mon Sep 17 00:00:00 2001 From: Dmitry Butyugin Date: Thu, 15 Oct 2020 02:08:10 +0200 Subject: resonance_tester: Resonance testing and input shaper auto-calibration (#3381) Signed-off-by: Dmitry Butyugin --- klippy/extras/input_shaper.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) (limited to 'klippy/extras/input_shaper.py') 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( -- cgit v1.2.3-70-g09d2