-
- На 8 битном фильтрацию сдвигами вместо умножения делал, работает, Visitor(313 знак., 24.08.2023 11:41)
- Не копал глубоко. Но положил себе в закладки. Гляньте этот код: Nikolay_Po(62 знак., 23.08.2023 15:53, ссылка, ссылка)
- спасибо поковыряюсь - General(23.08.2023 23:00)
- Расскажете, что накопали, в общих чертах? Мне нужно будет, но руки не доходят, не до того, более срочные вещи программируем. - Nikolay_Po(24.08.2023 09:56)
- спасибо поковыряюсь - General(23.08.2023 23:00)
- Вот такой фильтр сделать и прекрасно все регулируется тремя числами на лету Alt@ir(9 знак., 23.08.2023 15:15, ссылка, youtube)
- Нашёл в своих архивах расчёт БИХ ФНЧ 2-го порядка с максимально
гладкой АЧХ. Может пригодится? argus98(1 знак., 23.08.2023 14:46, картинка)
- Вполне себе интересно. А можете переписать как в General(2 знак., 23.08.2023 15:27, ссылка)
- В Си не обучен. Делайте согласно классической картинке argus98(1 знак., 23.08.2023 20:01, картинка)
- Следует иметь ввиду, что исполнение рекурсивных фильтров в целых
числах - сложная задача из-за шума квантования (ошибок округления). Nikolay_Po(425 знак., 24.08.2023 10:07)
- Дополню. Существует понятие чувствительность частотной
характеристики к коэффициентам фильтра. Она косвенно зависит от
порядка, изначально она зависит от добротности полюсов фильтра
(Im/Re). Чебышев чувствительнее Батерворта. Чем выше порядок, тем
выше предельная добротность (см. картинку). Искусство
проектирование фильтров - придумать такую топологию (
последовательность арифметических действий в рекуррентном
выражении), чтобы чувствительность была минимальной. IBAH(1 знак., 24.08.2023 13:07, картинка)
- Был (есть?) такой Ланнэ - он давным давно излагал идею
пересчитывать влияние части коэффициентов в другие... Снижение
динамического диапазона (разрядности) коэффициентов позволяет уже
избавиться от такой чувствительности. Но, конечно, с некоторым
изменением АЧХ... POV(172 знак., 24.08.2023 13:20, ссылка)
- Ланнэ Красная книга. Кто ж не знает. IBAH(1 знак., 24.08.2023 14:11, картинка)
- Был (есть?) такой Ланнэ - он давным давно излагал идею
пересчитывать влияние части коэффициентов в другие... Снижение
динамического диапазона (разрядности) коэффициентов позволяет уже
избавиться от такой чувствительности. Но, конечно, с некоторым
изменением АЧХ... POV(172 знак., 24.08.2023 13:20, ссылка)
- Можно подумать, что у плавучки нет ошибок округления... Лишний байт/два/три в целочисленной арифметике (с фиксированной точкой) всегда можно добавить, а вот размер мантиссы у плавучки - хрен добавишь - argus98(24.08.2023 11:42)
- У современных 32р машин, легко можно работать с фиксированной точкой 16Q16. - mse homjak(24.08.2023 11:14)
- Дополню. Существует понятие чувствительность частотной
характеристики к коэффициентам фильтра. Она косвенно зависит от
порядка, изначально она зависит от добротности полюсов фильтра
(Im/Re). Чебышев чувствительнее Батерворта. Чем выше порядок, тем
выше предельная добротность (см. картинку). Искусство
проектирование фильтров - придумать такую топологию (
последовательность арифметических действий в рекуррентном
выражении), чтобы чувствительность была минимальной. IBAH(1 знак., 24.08.2023 13:07, картинка)
- Следует иметь ввиду, что исполнение рекурсивных фильтров в целых
числах - сложная задача из-за шума квантования (ошибок округления). Nikolay_Po(425 знак., 24.08.2023 10:07)
- В Си не обучен. Делайте согласно классической картинке argus98(1 знак., 23.08.2023 20:01, картинка)
- Вполне себе интересно. А можете переписать как в General(2 знак., 23.08.2023 15:27, ссылка)
- Заранее прошу меня извинить, если повторю то, что написано до меня. Однако проблему я вижу совсем не там, где ее пытаются решить. Прежде чем определять АЧХ цифрового фильтра, нужно определить ширину полосы первой зоны Найквиста и понимать, что на входе АЦП должен стоять АППАРАТНЫЙ фильтр НЧ, который подавит высшие зоны Найквиста с необходимым уровнем. Ибо никто пока не показал, что проблемные помехи лежат именно в первой. Из этого следует, что сигма-дельта АЦП может оказаться my504(106 знак., 23.08.2023 13:22)
- Ещё сумасшедшая идея. Фильтр не трогаем, зато меняем масштаб времени в потоке данных на входе и на выходе из фильтра. Децимация и интерполяция? - SciFi(23.08.2023 13:06)
- Делал такое, но для полосового фильтра первого порядка и кортексМ4. IBAH(1906 знак., 23.08.2023 12:26 - 12:54)
- Имхо, если нет плавучки, не стоит заморачиваться. Чувствительность
фильтра к коэффициентам такова, что в целых все встанет раком - IBAH(23.08.2023 12:28)
- Господа, вы звери! (с). Видимо, для вас и строят трёх-нанометровые
фабрики. - Kpoк(23.08.2023 12:46)
- Автор не указал параметры фильтра, поэтому можно фантазировать.
Может, ему нужна неравноменость в ПП 0,001 дБ..? - Xaoc(23.08.2023 12:51, )
- Человек глазами смотрит. Мне пох АЧХ, мне надо чтобы не скакало. В том-то и трудность - как перевести реальную потребность на язык
яйцеголовых. - General(23.08.2023 12:55)
- Поступаем классически: буфер 16 выборок, откидываем 4 самых больших
и 4 самых мелких, остаток усредняем. Если в других местах ужэ
почистили. - mse homjak(23.08.2023 17:06)
- Восхитительно. Сколько тактов вы кладёте на сортировку? Усложняем
задачу. Машина 8-разрядная, АЦП-12. :-) - Kpoк(23.08.2023 19:16)
- На 10-20 сэмплов в секунду, дажэ для АВР, будет приемлимо. У меня дажэ в Цшной реализации за критическое время не ушло для трёх 16р потоков при 400мкс на выборку. Сколько конкретно, не смотрел, т.к. успевал с запасом. - mse homjak(24.08.2023 11:21)
- Сортировка тут не нужна: Xa0c(1258 знак., 24.08.2023 09:06, )
- Мне - не нужна. Но не я сказал про сортировку. - Kpoк(24.08.2023 09:12)
- У нас у всех 32 разряда и десятки МГц. Не лезьте в нашу песочницу
со своими деревянными игрушками :-) - SciFi(23.08.2023 19:39)
- Так у вас же и винда стоит. Или Линух у извращенцев. То на то и
выходит. - Kpoк(23.08.2023 20:26)
- но стоит же! - SciFi(23.08.2023 20:30)
- Так у вас же и винда стоит. Или Линух у извращенцев. То на то и
выходит. - Kpoк(23.08.2023 20:26)
- Восхитительно. Сколько тактов вы кладёте на сортировку? Усложняем
задачу. Машина 8-разрядная, АЦП-12. :-) - Kpoк(23.08.2023 19:16)
- Перевожу. Смутно помню, что для систем измерения рекомендуется фильтр Бесселя. Порядок фильтра зависит от упоротости. Чем выше порядок тем сложнее, и человеку, и программисту, и МК. Берешь характеристику фильтра в общем виде, проводишь над ней билинейное преобразование (отображение jw в z). от функции на z - плоскости переходишь к итерационному выражению (y[i]). Коэффициенты в этом выражении будут выражены в общем виде (K(Fсреза)) - IBAH(23.08.2023 13:11)
- Если для отображения, то я RC фильтрацию включал и инициализировал
при дельте между отсчетами менее заданной. Иногда сначала немного
всегда фильтруешь, а второй каксад уже при небольшой дельте между
последовательными отстчтами. Еще на индикацию не выводил при
успокоении. Успокоение - при разнице между отсчетами менее четверти
дискрета, выход из успокоения - 3/4 дискрета. - Andreas(23.08.2023 13:07)
- Да, но это субъективные находки, а хочется вечного (расчётно
обоснованного) - General(23.08.2023 13:27)
- Это да, фильтр в целых, с изменяемой крутизной, выше 1го порядка и
с коэффициентом передачи ровно 1 для измерительных целей. Тоже
очень хочу! - Andreas(23.08.2023 14:06)
- До завтра терпит? - Kpoк(24.08.2023 10:01)
- Много лет терпело и еще потерпит. ) Год назад снова возникла
проблема отображения шумных данных юзеру и простым проверенным
путем хорошо не вышло. Вышло очень криво и непонятно, но пока
работает. Но вдруг есть волшебная пилюля.... - Andreas(24.08.2023 10:44)
- Итак. Kpoк(404 знак., 28.08.2023 13:53)
- что-то не так, Z непрерывно нарастает и никогда не возвращается - General(28.08.2023 23:28)
- Да не, вроде бы всё норм - там (во 2ой формуле) же Y складывается, а не X. А Y - это выход полосового фильтра, то есть без постоянки и будет временами с отрицательным значением. - symbions(28.08.2023 23:59)
- а не должно быть больше 0.25 - Kpoк(28.08.2023 23:40)
- вот прямо из Матлаба Kpoк(205 знак., 28.08.2023 23:38)
- Вангую: и всё на асме. - enc(28.08.2023 16:24)
- По другому никак невозможно. ))) dsPIC - это особое блюдо высокой
кухни и готовить его можно только на
маслеасме... - my504(28.08.2023 21:30)- Да... "На его месте должэн быть
яАВР"(С). Но не сложилось. Теперь на ДСПИК и закладываться стрёмно. А АСМ там королевский. - mse homjak(28.08.2023 22:17) - Помню, помню Mbedder шедевры асм30 выкладывал enc(2 знак., 28.08.2023 21:51, ссылка, ссылка)
- Да... "На его месте должэн быть
- Ты знал!!! - Kpoк(28.08.2023 18:39)
- Ну так, давно живём. - enc(28.08.2023 21:56)
- По другому никак невозможно. ))) dsPIC - это особое блюдо высокой
кухни и готовить его можно только на
- Спасибо, попробую обязательно. Нифига не понятно, но звучит хорошо и реализация простая. - Andreas(28.08.2023 14:21)
- что-то не так, Z непрерывно нарастает и никогда не возвращается - General(28.08.2023 23:28)
- Итак. Kpoк(404 знак., 28.08.2023 13:53)
- Много лет терпело и еще потерпит. ) Год назад снова возникла
проблема отображения шумных данных юзеру и простым проверенным
путем хорошо не вышло. Вышло очень криво и непонятно, но пока
работает. Но вдруг есть волшебная пилюля.... - Andreas(24.08.2023 10:44)
- Vaidyanathan, P. P. Page 31, Fig.45, Fig.46, Fig.47: Xoc(1 знак., 23.08.2023 14:17, , ссылка)
- Он над нами издевался... - Andreas(23.08.2023 14:26)
- До завтра терпит? - Kpoк(24.08.2023 10:01)
- В моём сообщении от 10 часов 12 минут Kpoк(1 знак., 23.08.2023 13:54, ссылка)
- Пейсатель не чейтатель... Это есть и очевидно, но крутизна не
всегда устраивает. - Andreas(23.08.2023 14:08)
- Каскадируйте. - Kpoк(23.08.2023 15:03)
- Пейсатель не чейтатель... Это есть и очевидно, но крутизна не
всегда устраивает. - Andreas(23.08.2023 14:08)
- Это да, фильтр в целых, с изменяемой крутизной, выше 1го порядка и
с коэффициентом передачи ровно 1 для измерительных целей. Тоже
очень хочу! - Andreas(23.08.2023 14:06)
- Да, но это субъективные находки, а хочется вечного (расчётно
обоснованного) - General(23.08.2023 13:27)
- Камент: Toчкa oпopы(200 знак., 23.08.2023 13:03)
- Поступаем классически: буфер 16 выборок, откидываем 4 самых больших
и 4 самых мелких, остаток усредняем. Если в других местах ужэ
почистили. - mse homjak(23.08.2023 17:06)
- По-моему, он его даже расписал. - Kpoк(23.08.2023 12:54)
- +1 за внимательность - "для полосового фильтра первого порядка" - IBAH(23.08.2023 12:58)
- Человек глазами смотрит. Мне пох АЧХ, мне надо чтобы не скакало. В том-то и трудность - как перевести реальную потребность на язык
яйцеголовых. - General(23.08.2023 12:55)
- Автор не указал параметры фильтра, поэтому можно фантазировать.
Может, ему нужна неравноменость в ПП 0,001 дБ..? - Xaoc(23.08.2023 12:51, )
- Господа, вы звери! (с). Видимо, для вас и строят трёх-нанометровые
фабрики. - Kpoк(23.08.2023 12:46)
- Имхо, если нет плавучки, не стоит заморачиваться. Чувствительность
фильтра к коэффициентам такова, что в целых все встанет раком - IBAH(23.08.2023 12:28)
- Простое уравнение: Kpoк(263 знак., 23.08.2023 10:12)
- Просто таймер перепрограммировать низя ? И обрабатывать один и тот
же фильтр в прерывании таймера ? Или свободных т. / прерываний в МК
нет ? - De_user(23.08.2023 08:37)
- Нет, всё должно быть честно. - General(23.08.2023 08:54)
- Готовое решение КИХ-фильтра с перестраиваемой полосой пропускания,
это "банк фильтров" на БПФ. Но на дешевом МК такое не сделать.
Нужен DSP. - Xaoc(23.08.2023 06:33, )
- Это вопрос частоты семплирования. На малых частотах современного
MCU хватит. - Evgeny_CD(23.08.2023 12:26)
- Ну, навскидку, из пожеланий ТС'а можно предположить, что
потребуется 10 раз в секунду вычислять комплексное БПФ на 512
точек, плюс умножение вещественного сигнала на оконную функцию
длиной 1024 семпла. Может дешевый МК и справится.. ХЗ.. :) - Xaoc(23.08.2023 12:39, )
- Например Evgeny_CD(1 знак., 23.08.2023 13:00, ссылка)
- CH32V307 144MHz RAM 32K - General(23.08.2023 12:57)
- Не бьётся 144MHz и "частота отсчётов сигма-дельта АЦП это
единицы-десятки герц и производительности процессора хватит тапов
на 30-50". - SciFi(23.08.2023 13:02)
- он занят ещё кое-чем, однако оглашенная добавка точно не перенапряжёт - General(23.08.2023 13:26)
- Не бьётся 144MHz и "частота отсчётов сигма-дельта АЦП это
единицы-десятки герц и производительности процессора хватит тапов
на 30-50". - SciFi(23.08.2023 13:02)
- Ну, навскидку, из пожеланий ТС'а можно предположить, что
потребуется 10 раз в секунду вычислять комплексное БПФ на 512
точек, плюс умножение вещественного сигнала на оконную функцию
длиной 1024 семпла. Может дешевый МК и справится.. ХЗ.. :) - Xaoc(23.08.2023 12:39, )
- Это вопрос частоты семплирования. На малых частотах современного
MCU хватит. - Evgeny_CD(23.08.2023 12:26)
- Рассчитывается КИХ фильтр так. Отклик в частотной области
представляет ступеньку, во временной области представляет
sinc-функцию. И если надо то наоборот. Значит наша задача не более
чем сгенерировать sinc-функцию. Коэффициенты КИХ фильтра её и
представляют. И вся фильтрация, т.е. фильтр будет представлять
собой банальную свертку с ней, т.е. к коэффициентами). Налабал
демо-код в дикой спешке, у меня нет времени писать красиво, завтра
с утра ехать запускать проект и я RxTx(1988 знак., 23.08.2023 01:25, ссылка)
- Тот же вопрос на stackexchange. И один из ответов тот же. Похоже, это называется "Window Method for FIR Filter Design". SciFi(2 знак., 23.08.2023 10:04, ссылка, ссылка)
- Спасибо, то что нужно. Простейшее понятное объяснение расчёта FIR без МАТКАДа. Допишу что ещё узнал. Конечно интересно получить такое же объяснение для тупых для случая IIR он же БИХ -кажется он должен быть ещё проще вследствии реккурентной формулы расчёта General(1221 знак., 23.08.2023 09:37)
- Забыл сказать. Если есть сомнения, то вот этот сайт, если выбрать
там в выпадающем списке "Python script that generates the
coefficients" даст тебе пруф что изложенная выше общая примтивная
идея фильтрации рабочая. Питон код там примитивный, но видно что он
делает. Желаю удачи! RxTx(1 знак., 23.08.2023 01:31, ссылка)
- А вот сайт не поможет. Там питон использует встроенную функцию МАТКАДа - General(23.08.2023 08:55)
- Вот такой "аналог RC" чем плох? SciFi(190 знак., 22.08.2023 23:20)
- Это почти то же, что Генерал изначально написал - Kpoк(22.08.2023 23:53)
- именно то же самое - General(22.08.2023 23:59)
- крутизна очень маленькая, плохо давит ВЧ - General(22.08.2023 23:49)
- А если каскадировать? - SciFi(22.08.2023 23:50)
- так и делаем, но как анализировать АЧХ, задержку? Это мб включено в
цепь регулирования. А такие фильтры НИГДЕ НЕ ОПИСАНЫ. бля - General(22.08.2023 23:58)
- CIC-фильтры много где описаны, но с перестройкой полосы у них всё печально. Xaoc(1 знак., 23.08.2023 08:13, , ссылка)
- > но как анализировать АЧХ, задержку lloyd(159 знак., 23.08.2023 08:12)
- так и делаем, но как анализировать АЧХ, задержку? Это мб включено в
цепь регулирования. А такие фильтры НИГДЕ НЕ ОПИСАНЫ. бля - General(22.08.2023 23:58)
- А если каскадировать? - SciFi(22.08.2023 23:50)
- Это почти то же, что Генерал изначально написал - Kpoк(22.08.2023 23:53)
- Вот коэффициентом и меняется. А ещё они хорошо каскадируются. - Kpoк(22.08.2023 22:21)
- у FIR постоянная времени меняется коэффициентами? Где можно найти
готовое (Ctrl-C Сtrl-V) решение? - General(22.08.2023 22:36)
- КИХ крайне затратен на вычисления, по сравнению с БИХ. Но если
очень хочется, то коэффициенты КИХ находятся через обратное
косинус-преобразование Фурье от желаемой АЧХ. ps С БИХ всё сложнее - argus98(22.08.2023 22:54)
- Мне не надо "через обратное косинус-преобразование Фурье", мне
похрен АЧХ, FIR или IIR. Известна частота выборки ( 10Гц ) и число
тапов ( определяется ресурсом процессора, от 13 до 31), а частота
среза должна перестраиваться от 1 до 0,003 Гц - General(22.08.2023 23:13)
- боюсь что это импосибле... ну давайте включим логитку: шаг 1, хотим
частоту среза 0,003Гц - это эквивалентно заявлению что фильтр
должен иметь "постоянную времени" не менее 1/0.003 = 333 сек. шаг2,
чтобы обеспечить такое время накопления фильтра нузно 333сек*10Гц =
3330 дискретных отсчетов сигнала с частотой дискретизации 10Гц.
шаг3, 3330 ни разу даже близко не равно 31 отсчету....... где я не
прав? нужно хотеть то что можно, и нельзя то чего ненужно. klen(1 знак., 22.08.2023 23:32, ссылка)
- ну примитивный БИХ (см. начало) бесплатно такое делает, неужели его как-то усовершенствовать нельзя? General(140 знак., 22.08.2023 23:56)
- боюсь что это импосибле... ну давайте включим логитку: шаг 1, хотим
частоту среза 0,003Гц - это эквивалентно заявлению что фильтр
должен иметь "постоянную времени" не менее 1/0.003 = 333 сек. шаг2,
чтобы обеспечить такое время накопления фильтра нузно 333сек*10Гц =
3330 дискретных отсчетов сигнала с частотой дискретизации 10Гц.
шаг3, 3330 ни разу даже близко не равно 31 отсчету....... где я не
прав? нужно хотеть то что можно, и нельзя то чего ненужно. klen(1 знак., 22.08.2023 23:32, ссылка)
- Мне не надо "через обратное косинус-преобразование Фурье", мне
похрен АЧХ, FIR или IIR. Известна частота выборки ( 10Гц ) и число
тапов ( определяется ресурсом процессора, от 13 до 31), а частота
среза должна перестраиваться от 1 до 0,003 Гц - General(22.08.2023 23:13)
- Это же ИИР - Kpoк(22.08.2023 22:43)
- да мне похрен как именно он называется, решение прошу - General(22.08.2023 23:14)
- утром, на трезвую голову - Kpoк(22.08.2023 23:58)
- Скачай WinFilter и сгенери им Си-код. RxTx(1 знак., 22.08.2023 23:16, ссылка)
- он сам рассчитывает коэффициенты, а мне надо их рассчитывать в МК - General(22.08.2023 23:26)
- Рассчитать заранее для нескольких частот среза, засунунть в таблицу
в программе и брать с таблицы при работе? - symbions(22.08.2023 23:46)
- нет, там минимум сотня наборов, проще рассчитывать - General(22.08.2023 23:57)
- Ясно - symbions(23.08.2023 22:58)
- нет, там минимум сотня наборов, проще рассчитывать - General(22.08.2023 23:57)
- Рассчитать заранее для нескольких частот среза, засунунть в таблицу
в программе и брать с таблицы при работе? - symbions(22.08.2023 23:46)
- он сам рассчитывает коэффициенты, а мне надо их рассчитывать в МК - General(22.08.2023 23:26)
- да мне похрен как именно он называется, решение прошу - General(22.08.2023 23:14)
- КИХ крайне затратен на вычисления, по сравнению с БИХ. Но если
очень хочется, то коэффициенты КИХ находятся через обратное
косинус-преобразование Фурье от желаемой АЧХ. ps С БИХ всё сложнее - argus98(22.08.2023 22:54)
- у FIR постоянная времени меняется коэффициентами? Где можно найти
готовое (Ctrl-C Сtrl-V) решение? - General(22.08.2023 22:36)