Rovki писал(а): ↑15.08.2022{, 16:43}
Фильтр хорошо сглаживает, но при этом долго выходит на уставку (входное значение) . Хорошо бы сделать его адаптивным - сразу установить значение на выходе ,которое на входе ,а затем ""плясать" во круг него ...Что важно при включении...А то он от нуля интегрирует...
Вы не совсем разобрались с фильтрами.
Вероятно речь идет об экспоненциальном фильтре.
Итак, в двух словах как он работает.
Экспоненциальный фильтр это аналог бегущего среднего, только быстрый по вычислению (не по скорости работы).
Бегущее среднее это сумма последовательных измерений деленная на количество этих измерений.
Чем больше количество этих измерений, тем медленнее происходит приближение к последнему измерению.
К примеру
берем 100 последовательных значений. Из них 99 значений =50 и одно последнее =80
(99*50 + 80) / 100 = 50,3, а в случае с int дробная часть отбросится значение долго будет подходить к 80.
Скорость этого подхода зависит от дискретности измерений. Если измерения (тактирование) происходит раз в секунду, то потребуется 100 секунд для выхода на 80.
Изменив тактирование на 10раз в секунду, мы получим выход на 80 за 10секунд.
Надеюсь понятно.
Теперь что касается настроек экспоненциального фильтра (который я для Вас делал).
Там есть 5 уровней фильтрации.
5 это двойка в степени 5, т.е. 32 последовательных значения (условно)
4 >> 16 последовательных значений.
И так далее.
Хочешь что бы фильтр быстрей выходил на уставку, либо уменьши количество последовательных значений, либо увеличь количество опросов в единицу времени (сделай тактирование чаще).
От обоих параметров зависит и качество фильтрации. Все зависит от того какой поступает сигнал. Поэтому лучше настраивать фильтры по осцилографу, но для этого кроме АЦП нужен еще и ЦАП.
Работу медианного фильтра надо описывать?