mirror of
https://github.com/Klipper3d/klipper.git
synced 2026-05-07 03:16:53 +02:00
trigger_analog: Merge DerivativeFilter into DigitalFilter
Replace the DerivativeFilter() class with a new add_derivative() method in DigitalFilter() class. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -515,8 +515,8 @@ class EddyTap:
|
||||
sps = self._sensor_helper.get_samples_per_second()
|
||||
design = trigger_analog.DigitalFilter(sps, cfg_error)
|
||||
design.add_lowpass(25.0, 4)
|
||||
# Create the derivative (sample to sample difference) post filter
|
||||
self._filter_design = trigger_analog.DerivativeFilter(design)
|
||||
design.add_derivative()
|
||||
self._filter_design = design
|
||||
# Create SOS filter
|
||||
cmd_queue = self._trigger_analog.get_dispatch().get_command_queue()
|
||||
mcu = self._sensor_helper.get_mcu()
|
||||
|
||||
@@ -51,6 +51,9 @@ class DigitalFilter:
|
||||
fs=self.sample_frequency)
|
||||
f = signal.tf2sos(b, a)[0]
|
||||
self.filter_sections.append(f)
|
||||
def add_derivative(self):
|
||||
# Sample to sample difference (derivative) as stage in SOS filter
|
||||
self.filter_sections.append((1., -1., 0., 1., 0., 0.))
|
||||
def setup_initial_state(self):
|
||||
if not self.filter_sections:
|
||||
return
|
||||
@@ -66,22 +69,6 @@ class DigitalFilter:
|
||||
return [[0., 0.]] * len(self.filter_sections)
|
||||
return self.initial_state
|
||||
|
||||
# Produce sample to sample difference (derivative) of a DigitalFilter
|
||||
class DerivativeFilter:
|
||||
def __init__(self, main_filter):
|
||||
self._main_filter = main_filter
|
||||
|
||||
def get_main_filter(self):
|
||||
return self._main_filter
|
||||
|
||||
def get_filter_sections(self):
|
||||
s = list(self._main_filter.get_filter_sections())
|
||||
return s + [(1., -1., 0., 1., 0., 0.)]
|
||||
|
||||
def get_initial_state(self):
|
||||
s = list(self._main_filter.get_initial_state())
|
||||
return s + [(-1., 0.)]
|
||||
|
||||
# Control an `sos_filter` object on the MCU
|
||||
class MCU_SosFilter:
|
||||
# max_sections should be the largest number of sections you expect
|
||||
|
||||
Reference in New Issue
Block a user