реклама на сайте
подробности

 
 
> Подскажите с фильтром
EasenMan
сообщение Apr 10 2011, 18:33
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



Подскажите фильтр для снижения равномерно распределенного шума в сигнале. Полезный сигнал лежит в диапазоне 0-200Гц, частота дискритезации 10КГц. Фильтр должен быть простым в вычислительном плане, т.к. будет применятся в реальном времени на обычном МК ARM.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
bahurin
сообщение Apr 11 2011, 04:05
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(EasenMan @ Apr 10 2011, 21:33) *
Подскажите фильтр для снижения равномерно распределенного шума в сигнале. Полезный сигнал лежит в диапазоне 0-200Гц, частота дискритезации 10КГц. Фильтр должен быть простым в вычислительном плане, т.к. будет применятся в реальном времени на обычном МК ARM.


ФНЧ c частотой среза 200 Гц думаю подойдет
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Apr 11 2011, 04:56
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(EasenMan @ Apr 10 2011, 21:33) *
Подскажите фильтр для снижения равномерно распределенного шума в сигнале. Полезный сигнал лежит в диапазоне 0-200Гц, частота дискритезации 10КГц. Фильтр должен быть простым в вычислительном плане, т.к. будет применятся в реальном времени на обычном МК ARM.

Шум в полосе 0-200Гц ничем нельзя снизить.
Go to the top of the page
 
+Quote Post
Иван Панченко
сообщение Apr 12 2011, 10:57
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 29-11-08
Из: санкт-петербург
Пользователь №: 42 061



Фильтром максимизирующим отношение сигнал-шум на выходе будет согласованный: http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%...%8C%D1%82%D1%80.
Если Вы имеете ввиду, шум в полосе вашего сигнала, то единственный способ его снижения - охлаждение устройства. http://ru.wikipedia.org/wiki/%D0%96%D0%B8%...%B7%D0%BE%D1%82
Если же все же, шум вне полосы вашего сигнала - синтезируйте КИХ фильтр(например,матлабом).

Go to the top of the page
 
+Quote Post
EasenMan
сообщение Apr 12 2011, 21:11
Сообщение #5





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



Охладить девайс это сурово). Сегодня подсказали что оптимальным в такой ситуации будет фильтр, имеющий АЧХ схожую с АЧХ полезного сигнала. Буду смотреть расхождение и находить оптимальный. Но важнее другой вопрос. Какие фильтры выгоднее в вычислительном плане? Что нибудь скользящее среднее или что нибудь похожие. КИХ фильтр это хорошо, но уж больно большой порядок выходит.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Apr 13 2011, 12:54
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(EasenMan @ Apr 13 2011, 01:11) *
Сегодня подсказали что оптимальным в такой ситуации будет фильтр, имеющий АЧХ схожую с АЧХ полезного сигнала.


Это и есть согласованный фильтр, как об этом было сказано постом выше.

Цитата(EasenMan @ Apr 13 2011, 01:11) *
Но важнее другой вопрос. Какие фильтры выгоднее в вычислительном плане? Что-нибудь скользящее среднее или что-нибудь похожие.


Если речь идет о согласованном фильтре, то ничего другого кроме КИХ быть в принципе не может. И скользящее среднее это тоже КИХ-фильтр.

Цитата(EasenMan @ Apr 13 2011, 01:11) *
КИХ фильтр это хорошо, но уж больно большой порядок выходит.


Большой порядок чего? ФНЧ КИХ-фильтра на частоту среза 200Гц и частотой дискретизации 10кГц? Реализуйте в виде каскадного соединения КИХ-фильтров дециматоров реализованных полифазно, это снизит вычислительные затраты в 10-100 раз.

Если нужна минимизация вычислений для согласованного фильтра, то говорите что за сигнал у Вас.


Go to the top of the page
 
+Quote Post
st232bd
сообщение Apr 13 2011, 14:44
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 12-02-08
Из: г.Минск (РБ)
Пользователь №: 34 969



А зачем КИХ? Автор минимальный фильтр хочет (отдельный вопрос что с 200 Гц сигналом ARM и здоровенный протащит). Что-нибудь рекурсивное, типа интегратора с постоянной времени. Uout += Uin-Uout/k, можно несколько раз последовательно, причём только первое звено с частотой 10 кГц считать нужно. Для ARM (без однотактового деления) k - выбираем степень двойки и заменяем сдвигом, получаем полосу чуть шире 200 Гц (следующими звеньями точнее подгоним), или, что лучше, умножаем всё на k, получаем k*Uin - Uout (просто формула менее наглядна). Если коэффициент передачи фильтра должен быть = 1, нормируем его на выходе делением (вместо деления можно посчитать дробь со степенью двойки в знаменателе и заменить одним умножением и одним сдвигом). Предполагается, что всё считаем целочисленно. Мысленно представляем операционник в инвертирующем включении, с конденсатором параллельно резистору обратной связи, работу которого описывает данная формула. Литературу читать не надо, коэффициенты подбираем методом тыка или вариацией в математическом пакете. Проще некуда.
Если АЧХ сложный, то после этого уже фильтрованный сигнал, с малым потоком данных неспеша мучаем сложными фильтрами, если известна форма - коррелируем быстрым алгоритмом. Если от узкополосных помех отстраиваемся - обеляющий фильтр наверное стоит добавить и т. д.
Короче если мыслить категориями схемотехники - тупо фильтруем несколько раз интегрирующей RC цепочкой, а потом уже обрабатываем замысловато. RC - в данном случае програмная.

Сообщение отредактировал st232bd - Apr 13 2011, 14:51
Go to the top of the page
 
+Quote Post
EasenMan
сообщение Apr 14 2011, 11:38
Сообщение #8





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



То что ARM хороший фильтр потащит, это не спорю, просто система, которая построена на этом МК, работает в реальном времени и кроме расчета фильтра ,необходимо еще много чего сделать, в том числе и регуляторы обсчитать, поэтому и ставка на максимальную производительность(в пределах разумного).
С несколькими проходами рекурсивного фильтра согласен, а вот последующая обработка я так понимаю не получится, т.к. входной сигнал может быть либо синусоида с частотой 50-200Гц, либо какие то S-кривые.
Хотелось бы узнать про расчет коэффициентов для БИХ фильтра. Точней рассчитать то их не трудно в MATLAB, но они получаются очень маленькие и точные(0,00097962856 что то типа того), так вот, можно ли их отмасштабиравать до целых чисел и как это сделать?
Go to the top of the page
 
+Quote Post
AndrewS6
сообщение Apr 14 2011, 14:58
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 9-10-05
Из: С.-Петербург
Пользователь №: 9 418



Цитата(EasenMan @ Apr 14 2011, 15:38) *
Хотелось бы узнать про расчет коэффициентов для БИХ фильтра. Точней рассчитать то их не трудно в MATLAB, но они получаются очень маленькие и точные(0,00097962856 что то типа того), так вот, можно ли их отмасштабиравать до целых чисел и как это сделать?

Нормируете коэффициенты к единице, умножаете на 2^{ваша разрядность-1}-1, берете целую часть ( а лучше округляете до ближайшего целого).
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 21 2011, 05:18
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Цитата(EasenMan @ Apr 11 2011, 00:33) *
Подскажите фильтр для снижения равномерно распределенного шума в сигнале. Полезный сигнал лежит в диапазоне 0-200Гц, частота дискритезации 10КГц. Фильтр должен быть простым в вычислительном плане, т.к. будет применятся в реальном времени на обычном МК ARM.

Не буду открывать новую тему, т.к. эта вроде в тему :-)
На 16-разрядном АЦП измеряю с частотой 10кГц.(ФНЧ 5кГц на входе есть)
Полоса полезного сигнала тоже до 200Гц.
Ни какие фильтрации не помогают выйти даже на 16-разрядную точность измерений, не говоря уж о мечтах в виде 18-разрядной точности. Присутствует шум порядка 2-х младших значащих разрядов, частотой - единицы Герц.
О чем дальше думать? (ограничений в производительности нет)

Сообщение отредактировал dsp_counter - Apr 21 2011, 05:23
Go to the top of the page
 
+Quote Post
sinc_func
сообщение Apr 21 2011, 09:17
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 29-05-10
Из: Пенза
Пользователь №: 57 619



Цитата(st232bd @ Apr 13 2011, 17:44) *
А зачем КИХ?
....
Короче если мыслить категориями схемотехники - тупо фильтруем несколько раз интегрирующей RC цепочкой, а потом уже обрабатываем замысловато. RC - в данном случае програмная.


Кстати, это неплохо работающая идея.
У себя в проектах, связанных с управлением (например, специализированный инвертор) я часто ставлю фильтры
малого порядка на вычитаниях,сложениях и сдвигах - там какая проблема - одна частота - сэмплинга - определяется
ШИМ-ом (10 kHz) а другая оборотами ротора (до 450 Hz) - ну а посередке надо все убрать для работы в представлении
управления ротором (и убрать лишний шум)

Если идти от теории - данная схема просто приводиться к чуть модифицированной классической структуре цифрового фильтра
(чтобы уйти от головной боли со сверхмалыми коэффициентами)

Сообщение отредактировал sinc_func - Apr 21 2011, 09:22
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 21 2011, 11:15
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



На всякий случай добавлю деталей:
- из АЦП получаю последовательность 10 кГц; (16 разрядов)
- усредняя по 8 точек получаем сигнал с частотой сэмплирования 1250Гц; (здесь и далее плавающая точка при вычислениях)
- фильтрую КИХ с полосой пропускания 110-140Гц (всего 199 коэффициентов);
- выделяю амплитуду полученного сигнала; (по 3-м точкам интерполирую и нахожу максимум)
- получается не очень :-).

О чем дальше думать? (ограничений в производительности нет)

Go to the top of the page
 
+Quote Post
sinc_func
сообщение Apr 21 2011, 11:37
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 29-05-10
Из: Пенза
Пользователь №: 57 619



Цитата(dsp_counter @ Apr 21 2011, 08:18) *
...
Ни какие фильтрации не помогают выйти даже на 16-разрядную точность измерений, не говоря уж о мечтах в виде 18-разрядной точности. Присутствует шум порядка 2-х младших значащих разрядов, частотой - единицы Герц.
О чем дальше думать? (ограничений в производительности нет)


Если там действительно есть таким образом частотно-локализованный шум - я бы надрезами на плате и закоротками
постарался бы выяснить - что все таки является источником этого шума (разделяй и властвуй) Плата конечно будет
серьезно "пожевана", но множественные быстрые практические опыты при контроле величины шума по FFT
(например в Матлабе) и чтение дата-шитов могут быстрее вывести к источнику проблемы чем изыски в фильтрации
Go to the top of the page
 
+Quote Post
Самурай
сообщение Apr 21 2011, 12:24
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(dsp_counter @ Apr 21 2011, 15:15) *
На всякий случай добавлю деталей:
- из АЦП получаю последовательность 10 кГц; (16 разрядов)
- усредняя по 8 точек получаем сигнал с частотой сэмплирования 1250Гц; (здесь и далее плавающая точка при вычислениях)
- фильтрую КИХ с полосой пропускания 110-140Гц (всего 199 коэффициентов);
- выделяю амплитуду полученного сигнала; (по 3-м точкам интерполирую и нахожу максимум)
- получается не очень :-).

О чем дальше думать? (ограничений в производительности нет)


Конечно, можно и даже нужно курочить и кромсать плату в поисках источника шума, но для начала я бы посоветовал избавиться от первого дециматора на 8. Столь, казалось бы, незамысловатое действие, как усреднение по 8 отсчетам засрет испортит Вам весь околонулевой участок спектра по самое некуда, особенно если в исходном сигнале есть помехи на частотах кратных (и близких к ним) частоте 1250Гцsm.gif. Да и вообще, все что выше 625Гц просто завернется в нольsm.gif. Если ограничений по ресурсам нет, то ставьте нормальный фильтр перед дециматором.

Но все эти фильтрации будут сильно бесполезными если то, что Вы называете ФНЧ на 5кГц это просто RC-цепочкаsm.gif. Ситуация полностью аналогичная сказанному до этого, только теперь все что выше 5кГц будет заворачиваться в ваш сигнал. И не заметить это будет очень трудно имея 16-битный АЦПsm.gif. Да, а что за АЦП то? И уверены, что он сам не шумит в младших 1-3 разрядах?

А вообще, какая конечная цель?
И зачем "выделяю амплитуду полученного сигнала; (по 3-м точкам интерполирую и нахожу максимум)" ?


Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 21 2011, 15:29
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Цитата(Самурай @ Apr 21 2011, 18:24) *
1. ....... Столь, казалось бы, незамысловатое действие, как усреднение по 8 отсчетам испортит Вам весь околонулевой участок спектра по самое некуда......

2. ......... Если ограничений по ресурсам нет, то ставьте нормальный фильтр перед дециматором.......

3. ........Да, а что за АЦП то? И уверены, что он сам не шумит в младших 1-3 разрядах?.......

4. .....А вообще, какая конечная цель? И зачем "выделяю амплитуду полученного сигнала;.....


Уважаемый САМУРАЙ, кажется, что Вы в теме. Если можете, помогите.

1. А как от него избавиться (от усреднения)? Просто взять каждую восьмую точку?
2. Про ресурсы я чуть-чуть увлекся. :-) Но если обсуждать еще и их, то мы можем в дебри уйти.
3. Наверняка шумит АЦП. Но не на низких же частотах.
4. Конечная цель: измерить напряжение в этой полосе частот (110-140). А вото что такое "измерить напряжение", точно сформулировать не могу, пока пытаюсь измерить амплитуду.

Уважаемый sinc_func, плату курочил. Даже при закороченном входе АЦП шумит и сильно.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Apr 21 2011, 18:45
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(dsp_counter @ Apr 21 2011, 19:29) *
Уважаемый sinc_func, плату курочил. Даже при закороченном входе АЦП шумит и сильно.


Проверяйте шумы по питанию и опоре АЦП и входных усилителей (если есть).
И все-таки, что за АЦП? Схема включения?

Насчет фильтра, можно все сделать честно: три фильтра-дециматора на 2, каждый фильтр либо обычный КИХ, либо Halfband (тоже КИХ, но каждый второй коэфф. = 0), все фильтры одинаковые, для Halfband это примерно 23-ой порядок для подавления 100дБ, всего 6 нетривиальных умножений. Если делать полифазно то 3. После каждого фильтра частота понижается вдвое. Фильтры легко считаются в Матлабе.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 22 2011, 04:17
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



АЦП - Diamond-MM-16-AT (плата РС/104).

Перед ним стоит модуль гальванической развязки SCM7B40-08A (пришлось использовать такую громоздкую вещь, т.к. не смогли реализовать опторазвязку на плате. Но это отдельная тема.).

Между SCM7B40-08A и Diamond-MM-16-AT вставили RC фильтр (1.6кОм на 0.3 мкФ).

Спасибо за советы, пока еще не переварил. :-)
Понял их так:
- считаем фильтр Halfband на четверть частоты сэмплирования;
- прогоняем фильтр, выкидываем каждую вторую точку;
- предыдущий пункт выполняем еще два раза;
- дальше наша цепочка: полосовой КИХ на 110-140Гц, выделение амплитуд.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 24 2011, 06:43
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Цитата(dsp_counter @ Apr 22 2011, 10:17) *
....
- считаем фильтр Halfband на четверть частоты сэмплирования;
....


Halfband он и есть Halfband, какие еще "четверть частоты сэмплирования". СОРРИ.

Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Apr 26 2011, 11:22
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Что-то ни чего приличного не получается.
Для примера прилагаю файл с входными данными от АЦП.

У 16-разрядного АЦП среднеквадратичное отклонение измерений почти в 8 раз больше веса младшего разряда.
Это нормально?

В результате следующей обработки:
- трехкратного уменьшения частоты сэмплирования в два раза (т.е. всего в 8 раз до 125 Гц);
- фильтрации с полосой 11-14 Гц (много разных фильтров попробовал);
- выделения амплитуды получающейся синусойды (а может тут надо как-то иначе мерять напряжение?).
Шум остается сравнимый с весом младшего разряда АЦП. Это не устраивает.

Может что присоветуете?
Прикрепленные файлы
Прикрепленный файл  Array.rar ( 62.17 килобайт ) Кол-во скачиваний: 20
 
Go to the top of the page
 
+Quote Post
Самурай
сообщение Apr 26 2011, 16:22
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(dsp_counter @ Apr 26 2011, 15:22) *
У 16-разрядного АЦП среднеквадратичное отклонение измерений почти в 8 раз больше веса младшего разряда.
Это нормально?
Может что присоветуете?


Да, шум страшныйsm.gif. И что интересно, шум белый. Полосовой фильтр 11Гц-14Гц дает на выходе шум, имеющий среднеквадратическое отклонение порядка 0.2мВ, т.е. грубо 1-2 младших разряда АЦП. Собственно, этот же результат получается и у Вас. И боюсь, что цифровым методом уменьшить шум можно, только сужая полосу наблюдения.

Посмотрел элементную базу Вашей платы АЦП, шум должен быть на 1-2 порядка меньше чем есть сейчас. Могу только еще раз повторить: смотрите шумы по питанию и опоре АЦП. Попробуйте дополнительно отфильтровать. Еще интересно повторить эксперимент с бОльшими частотами дискретизации, попробовать подать сигнал на другие входы и/или в дифф. режиме.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение May 4 2011, 17:04
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Разбираемся.
Оказалось, что близкое расположение импульсного блока питания (HE-104) и АЦП является источником помех.
Пробуем перетасовать стойку РС-104.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 00:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.0157 секунд с 7
ELECTRONIX ©2004-2016