Страница 1 из 4

Цифровой фильтр

Добавлено: 25.01.2016{, 02:11}
CraCk
Создание блока для сглаживания входных данных из АЦП.
http://we.easyelectronics.ru/Theory....tr.html

Цифровой фильтр

Добавлено: 25.01.2016{, 10:44}
Grafsaxar
Вот попробуй этот.
Добавь в блок пользователя.

А лучше на входе АЦП  добавить конденсотор 100мкф и 0,1 нано

Цифровой фильтр

Добавлено: 01.05.2016{, 12:05}
Boroda
Вот работающая реализация RC-фильтра без флоат

Цифровой фильтр

Добавлено: 08.05.2016{, 00:29}
Boroda
Немного доработал фильтр. Инт и флоат.

Цифровой фильтр

Добавлено: 08.05.2016{, 00:42}
Rovki
Лучше применить и реализовать  метод скользящего окна для аналогового сигнала(фильтрация) ,есть готовые макросы ...

Цифровой фильтр

Добавлено: 08.05.2016{, 11:24}
Rovki
Фильтр можно сделать на базе блока FSEL -аналогичен блоку SEL ,но для флоат переменных
2261406.jpg
5653011.jpg
организовав стек

Цифровой фильтр

Добавлено: 08.05.2016{, 14:42}
Boroda
Ну можно и скользящее окно точек на 8-16. А лучше медианный, но он больно сложный в реализации. Много переменных уйдет и сортировку пузырьком надо делать. Зато всплески хоть +1000 фильтрует на ура.

Цифровой фильтр

Добавлено: 08.05.2016{, 15:07}
Boroda
Скользящее окно на 8 точек с периодом измерения

Цифровой фильтр

Добавлено: 08.05.2016{, 15:19}
Rovki
4707788.jpg
А у меня он так выглядит Изображение

Цифровой фильтр

Добавлено: 22.01.2018{, 23:26}
Dackota
Здравствуйте!
Подскажите, пожалуйста, есть ли в flprog фильтры Баттерворта, Чебышева...? Или любые фильтры нужно создавать самостоятельно?

Цифровой фильтр

Добавлено: 23.01.2018{, 08:19}
pan
Dackota, конечно можно. это же вычисления.
некоторые из фильтров в постах выше во вложениях.
или вот тут http://elref.ru/load/bloki_polzovatelej ... /2-1-0-109

Цифровой фильтр

Добавлено: 23.01.2018{, 18:54}
Dackota
Вы не знаете, нету ли фильтра Чебышева 2-го порядка?
В этих сообщениях нету.

Цифровой фильтр

Добавлено: 15.08.2022{, 16:43}
Rovki
Фильтр хорошо сглаживает, но при этом долго выходит на уставку (входное значение) . Хорошо бы сделать его адаптивным - сразу установить значение на выходе ,которое на входе ,а затем ""плясать" во круг него ...Что важно при включении...А то он от нуля интегрирует...

Цифровой фильтр

Добавлено: 17.08.2022{, 13:41}
Dryundel
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 последовательных значений.
И так далее.

Хочешь что бы фильтр быстрей выходил на уставку, либо уменьши количество последовательных значений, либо увеличь количество опросов в единицу времени (сделай тактирование чаще).

От обоих параметров зависит и качество фильтрации. Все зависит от того какой поступает сигнал. Поэтому лучше настраивать фильтры по осцилографу, но для этого кроме АЦП нужен еще и ЦАП.

Работу медианного фильтра надо описывать?

Цифровой фильтр

Добавлено: 18.08.2022{, 07:50}
Rovki
Все понятно , меня не устраивает среднее значение ,при работе когда при 5в на входе значения прыгают на 0.3 в. При длинном стеке точность повышается ,но увеличивается время измерения . Поэтому и высказал - идею- при включении на вход сразу выдавать измеренное значение (первое) ,а потом уже усредненное через N шагов...не важно каким методом вычисленное и за какое время . А то включил и ждешь минуту пока значение меняются от 0 до U... :smile427:

Отправлено спустя 25 минут 45 секунд:
Можно и по другому- включил питание, длина стека пусть 100. Вначале там нули, если на входе 10в, то на выходе среднее -0.1в, потом 0.2 .....и так 100сек ,если тик1сек. А нужно сделать так сначала среднее из 2, потом из 3 ...из 100 на выходе. Тоесть стек с переменной длиной , при старте .А по мере заполнения стека меняется и количество значений и количество на которое нужно делить сумму. Потом, когда заполнится полностью стек работать по обычному алгоритму- сдвинул, просуммировал, поделил...

Отправлено спустя 5 минут 47 секунд:
Можно ввести и фильтрацию по высоким частотам (помехи) - если входное значение в данном тике больше\меньше среднего на заданный % , то оставлять старое значение ,если входит в диапазон, то записываем новое значение в стек(аналог интегрального звена) . Я говорю про фильтр не для системы управления ,а для Индикации значения прежде всего..

Цифровой фильтр

Добавлено: 18.08.2022{, 10:49}
Dryundel
Rovki, Вы теоретик пытающийся изобрести велосипед, вместо того, чтобы разобраться с работой фильтров, учесть все факторы влияющие на правильную фильтрацию и применить именно те фильтры и с такими настройками, которые будут удовлетворять потребности.

Цифровой фильтр

Добавлено: 18.08.2022{, 15:47}
Rovki
Я как раз практик и все фильтры меня не устраивают в момент включения (неделю гоняю разные) , вникните в суть вопроса! Если быстрая фильтрация ,цифры бегают(в условиях помех ), Если медленная фильтрация , то долго ждать на выход значения ...
Да , я любитель собственных велосипедов! И алгоритм красивый (адаптивный) предложил. Дело за малым- реализация
На тех кого не устраивает сегодняшнее решение (придуманное ранее кем то) и держится развитие (прогресс) . :smile37: :smile44:

Цифровой фильтр

Добавлено: 18.08.2022{, 16:01}
Dryundel
Rovki писал(а):
18.08.2022{, 15:47}
вникните в суть вопроса!
Вникните в суть работы и ответа выше. Поиграйтесь хотя бы с тактированием. Хотя бы интуитивно без прагматичного расчета.
Rovki писал(а):
18.08.2022{, 15:47}
И алгоритм красивый (адаптивный) предложил. Дело за малым- реализация
На тех кого не устраивает сегодняшнее решение (придуманное ранее кем то) и держится развитие (прогресс) .
Сложно назвать предложенный Вами "красивый" алгоритм прогрессом. Это скорее утопия или антиутопия, кому как больше нравится.
.
Ох, чувствую придется писать большой гайд по цифровой фильтрации. Иначе все блоки фильтров просто бесполезны. :smile44:

Отправлено спустя 7 минут :
Ну хорошо. Предположим вашу идею воплотили.
Rovki писал(а):
18.08.2022{, 08:22}
Поэтому и высказал - идею- при включении на вход сразу выдавать измеренное значение (первое) ,а потом уже усредненное через N шагов...
А теперь представим, что в момент включения мы неизбежно попадаем на помеховый пик вольт так в 30, при измеряемом среднем 10. Мы же как никак выключателем щелкнули, а в этом случае и возникают паразитные пики.
Ну и далее начинается то же самое медленное шагание к среднему значению, но не снизу, а сверху. В чем фишка, брат? :)

Отправлено спустя 15 минут 37 секунд:
Следующая супер-идея.
Rovki писал(а):
18.08.2022{, 08:22}
Можно и по другому- включил питание, длина стека пусть 100. Вначале там нули, если на входе 10в, то на выходе среднее -0.1в, потом 0.2 .....и так 100сек ,если тик1сек. А нужно сделать так сначала среднее из 2, потом из 3 ...из 100 на выходе. Тоесть стек с переменной длиной , при старте .А по мере заполнения стека меняется и количество значений и количество на которое нужно делить сумму.
Вы хотя бы отдаленно представляете как сделать подобный алгоритм?
Конечно же ничего невозможного нет. Но изваяв такую штуку, мы наглухо убиваем скорость работы фильтров.
К примеру медианный фильтр из 3. Отрабатывает за 3-4 такта процессора а это при 16МГц AVR примерно 2-3 микросекунды
Экспоненциальный тоже быстрый и выполняется порядка 10 мкс на целочисленных значениях.
И что? Вы предлагаете убить всю эту прелесть на корню?

Отправлено спустя 5 минут 50 секунд:
Rovki писал(а):
18.08.2022{, 08:22}
Можно ввести и фильтрацию по высоким частотам (помехи) - если входное значение в данном тике больше\меньше среднего на заданный % , то оставлять старое значение ,если входит в диапазон, то записываем новое значение в стек(аналог интегрального звена)
Идеи из Вас прямо таки фонтанируют. И чего это какой нибудь Кальман такой тупой? :D
Может высокочастотную составляющую RC фильтриком срезать? Может это будет гораздо эффективнее?

Цифровой фильтр

Добавлено: 18.08.2022{, 16:49}
Rovki
Да я писал- играюсь уже неделю с тактированием и прочем .
30+10 ,среднее 20 за такт,30+10+10 , среднее -16, 30+10+10+10 , среднее -15 ....на 10 шаге 12....на 20 шаге 11...Если суммировать с нуля как у всех (количество шагов 100)с помехой 30 на входе - то 1 шаг- 0,3, на 10 шаге 1.2 итд ...
Андрей , вы меня совсем идиотом считаете - если я предлагаю алгоритм ,то естественно представляю как его реализовать ,но только на FBD , что не эффективно и действительно много рисовать, в коде (которым слабо владею) это гораздо проще . Это метод скользящего окна с изменяемой шириной окна с момента запуска и до заполнения стека(массива)..
Я ж писал- фильтр мне нужен для ИНДИКАТРА ,поэтому говорить о микросекундах это не в тему.

Цифровой фильтр

Добавлено: 19.08.2022{, 09:30}
Di123
Rovki, свой оконный я делал с маштабированием по мере заполнения масива
с добавлением исключения ложного импульса
к примеру если на адс1115 посадить термисторы то он часто выбрасывал большой импульс в один цыкл и обычные оконные улетали в своё среднее пока этот ложный не вытеснится из среднего
есть тут аномалки но они не работают почемуто
медийные тоже не работают
единственное что работает это от бороды РС фильтр прекрасный блок очень хорошо сглаживает ацп после которого ставится опрос датчика и далее оконный или медийный которые не работают