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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подскажите с фильтром
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
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

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

 


RSS Текстовая версия Сейчас: 4th July 2025 - 19:32
Рейтинг@Mail.ru


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