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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Цифровой фильтр
skopus
сообщение Jan 23 2006, 16:52
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Уважаемые, скажите пожалуйста насколько сильно может влиять постоянная составляющая в фильтруемом сигнале.
Я столкнулся с проблемой. У меня есть два полосных фильтра баттерворта 2го порядка. Один на частоту 316гц, другой на частоту 430гц. Я считываю сигнал с АЦП. Туда он подается с добавленной постоянной составляющей то есть Uвхода=Uсигнала+const.
Происходит следующий эффект : при подаче сигнала 316 гц значение на выходе 2го фильтра(который на 430гц) такое же, как и на расчетной частоте. На самом деле - даже немного больше. Все коэффициенты проверил по 100 раз. Подавление в полосе затухания -30дб. Алгоритмически все вроде верно (я использую одну и ту же функцию для 11 фильтров, расчитанных на разные частоты, подставляя просто разные коэффициенты - и все кроме одного заметно давят нерасчетные частоты). Может ли это быть обусловлено постояннной составляющей в сигнале или шумом, на высоких частотах? ( ФНЧ перед АЦП я не ставил пока)
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Jan 23 2006, 20:54
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Я правильно понял проблему? Вы подаете синус с амлитудой Авх и частотой 316 Гц на первый фильтр, который пропускает как раз 316 Гц, а все остальное подавляет, затем на второй фильтр, который делает тоже самое, но для частоты 430 Гц. В результате на выходе Авых>Aвх.
Посмотрите внимательно усиление обоих фильтров на частоте 316 Гц, возможно их последовательное соединение дает усиление больше 1.
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 24 2006, 05:02
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



нет. Вы не совсем правильно поняли. Фильтры не соединены последовательно. В моей системе возможно 11 сигналов вызова синусоидальной формы. Соответственно для каждого сигнала свой фильтр. Так вот фильтр, расчитанный на 430гц, одинаково хоро принимает и 430 и 316гц.

Доеду до работы, покажу вам картинки с графиками из своей программы
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 24 2006, 08:59
Сообщение #19


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



поисследовал ситуацию поподробнее и обнаружил, что сказанное выше справедливо и для других частот. То есть фильтр с такими, например, параметрами

FILTER COEFFICIENT FILE FILTER TYPE BAND PASS
ANALOG FILTER TYPE BUTTERWORTH
PASSBAND RIPPLE IN -dB -3.0000
STOPBAND RIPPLE IN -dB -30.0000
PASSBAND CUTOFF FREQUENCIES 426 434 HERTZ
STOPBAND CUTOFF FREQUENCIES 316 2080 HERTZ
SAMPLING FREQUENCY 4167 HERTZ

почему-то принимает крайнюю левую частоту полосы задерживания 316гц sad.gif
иллюстрации в файле по адресу http://webfile.ru/766585

Не могу понять в чем может быть дело. Пожалуйста помогите!
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Jan 24 2006, 10:54
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Какие-то странные графики. Почему, например, для фильтра на 316 Гц выходной сигнал больше входного, хотя должно быть затухание порядка 30 дБ?
Как вы реализовываете фильры? Возможно, при переводе в цифру АЧХ "плывет" и отличается от расчетного аналогового варианта.
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 24 2006, 15:08
Сообщение #21


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



фильтр на 316гц по идее должен пропускать частоту 316, не усиливая и не подавляя. А этот результат я объяснить никак не могу.
Филтр реализуется такой вот функцией на языке Си++ в IAR C для Atmel AVR (3 версия)

// 1. Вычисление результата в рекурсивной ветви звена:
// D10 = Uadc + D11*a11 + D12*a12

void MyChannelClass::FilterOne(MyChannelClass *pntr)
{
//формат коэффициентов 4.12
//формат переменных фильтров 8.8
pntr->D10 = pntr->ADC_buffer;
//ывделяем из формата 12.20 число в формате 8.8
pntr->D10 = pntr->D10 + int( fmuls16x16_32( pntr->D11, pntr->a11)>>12 );
pntr->D10 = pntr->D10 + int( fmuls16x16_32( pntr->D12, pntr->a12)>>12 );
pntr->D12 = pntr->D11;
pntr->D11 = pntr->D10;
}

далее выполняется

// 2. Детектирование и сглаживание сигнала (амплитудное детектирование
// Цикл выборки НЧ в 16 раз больше периода квантования
// Uad1 = 4*b10*abs(D10)
(умножение на 4 из-за сдвига на 2 разряда влево, чтобы убрать знак, хранящийся в старших разрядах 2байтной переменной D10 - это было в предыдущей программе для другого МК)
Сейчас это написано на Си так.

pntr->Uad1 = SignedToUnsigned(pntr->D10);
pntr->Uad1 = int( fmuls16x16_32( pntr->Uad1, pntr->b10)>>12 ); //8.8 x 4.12 = 12.20 -> 8.8
pntr->Uad1 = (pntr->Uad1)*4;

функция fmuls16x16_32 реализует умножение двухбайтных чисел и дает 4 байтный результат (арифметика с фиксированной точкой)

для фильтра на 430гц
1.584584 /* section 1 A1 */
-0.987981 /* section 1 A2 */
0.006009 /* section 1 B0 */
-0.006009 /*section 1 B2 */
здесь имеется ввиду уравнение
x[t] +a1*x[t-1] + a2*x[t-2] = b0*y[t] +b2*y[t-2]
на практике остается только левая часть, а правая выносится как бы за сумматор (простите, что без картинки - если надо, сделаю).

Используемый коэффициент b0=0.3308.
Это значение было подобрано так, чтобы все работало. И оно действительно работает в предыдущей версии устройства (его делал не я, и программу тоже не я писал, но сомнений в том, что это так не возникает). Подбирался он из следующих соображений : результат не должен был переполнять разрядную сетку. А если вынести коэффициенты b0 и b2 за сумматор, то значение фильтра будет равно абсолютному значению рекурсивной ветви звена.

я заподозрил что что-то не так, когда увидел что среднее значение после детектирования подчиняется закономерности, которую я описывал выше, и от этого предположения перешел к предыдущему шагу, о чем здесь и спрашиваю.



забыл сказать что речь идет о рекурсивном фильтре с бесконечной импульсной характеристикой (IIR). Рачет выполняет в старой проге методом Bilinear Transformation , работающей под DOS. Ее результат сомнений не вызывает
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Jan 24 2006, 19:54
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Я бы все таки проверил характеристики фильтра в Matlab'е, потому как квантование может очень сильно влиять на БИХ-фильры. Задайте ваш формат коэффициентов и переменных и посмотрите что реально получается. Можно, конечно, полагаться на старую досовскую прогу и предыдущий проект, но, как говорится, "доверяй, но проверяй".
Кстати, наверное, это опечатка, но мне кажется, что у коэффициентов A1 и A2 знаки должны быть противоположные.
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 25 2006, 07:06
Сообщение #23


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



я уже неоднократно проверял. И в матлабе, и в программе специально сделаной для построения ачх с учетом эффектов квантования. Вот так выглядит АЧХ для фильтра на 430гц. с 12 разрядными коэффициентами и 8-разрядными переменными в фильтре http://webfile.ru/768926.

Почему-то работает мой фильтр прям как Highpass, а не Bandpass
Go to the top of the page
 
+Quote Post
BVU
сообщение Jan 25 2006, 08:06
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Jan 23 2006, 19:52) *
Уважаемые, скажите пожалуйста насколько сильно может влиять постоянная составляющая в фильтруемом сигнале.
Я столкнулся с проблемой. У меня есть два полосных фильтра баттерворта 2го порядка. Один на частоту 316гц, другой на частоту 430гц. Я считываю сигнал с АЦП. Туда он подается с добавленной постоянной составляющей то есть Uвхода=Uсигнала+const.
Происходит следующий эффект : при подаче сигнала 316 гц значение на выходе 2го фильтра(который на 430гц) такое же, как и на расчетной частоте. На самом деле - даже немного больше. Все коэффициенты проверил по 100 раз. Подавление в полосе затухания -30дб. Алгоритмически все вроде верно (я использую одну и ту же функцию для 11 фильтров, расчитанных на разные частоты, подставляя просто разные коэффициенты - и все кроме одного заметно давят нерасчетные частоты). Может ли это быть обусловлено постояннной составляющей в сигнале или шумом, на высоких частотах? ( ФНЧ перед АЦП я не ставил пока)

Ничего удивительного, что Ваш фильтр который на 430гц пропускает что и фильтр на 316гц, да еще и с большей амплитудой. В самом начале Вы оговаривали, что у Вас фильтры - НЧ, почему они должны работать по другому? Увеличение амплитуды происходит потому что 430гц больший частотный диапазон, чем 316гц. Вот если бы использовались селективные фильтры без перекрытия частотных диапазонов (316гц и 430гц), то ничего подобного не было бы ('пролаза'). Все зависило от полосы затухания фильтров. А постоянная составляющая здесь не причем, ее даже полезно вводить для того что бы на входе фильтра небыло нулевых значений.
А перед АЦП необходимо ставить аналоговый фильтр, чтобы быть уверенным что полученные частоты при цифровом преобразовании превышающие диапазон аналогового фильтра являются шумами квантования. Иначе анализ бесмыслен...


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 25 2006, 08:34
Сообщение #25


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



я не говорил что у меня НЧ фильтры. У меня узкополосные фильтры BandPass (с полосой пропускания порядка Частота настройки(+-)3гц). Пример АЧХ фильтра в файле, ссылка на который дал в предыдущем посте.

http://webfile.ru/769075 - здесь приницпиальная схема устройства и уравнения по которым оно работает.

Решение о приеме сигнала принимается по превышению интегратором Ui установленного порога

Сообщение отредактировал skopus - Jan 25 2006, 08:36
Go to the top of the page
 
+Quote Post
BVU
сообщение Jan 25 2006, 10:20
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Для выяснения причин данной проблемы нужно подать на вход системы (АЦП) синус 316гц, и контролировать, что получается на выходе фильтра 316гц и 430гц. Так же синус и для 430гц. Если будет 'пролаз' значит фильтры не работают, как полосовые или имеют не расчетную полосу, а на много больше. Так же характеристику фильтра можно снять при помощи анализатора спектра (Брюль и Кьер например или другой...), что еще комфортней для анализа и настройки фильра.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
michael34
сообщение Jan 25 2006, 11:11
Сообщение #27


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 24-01-06
Пользователь №: 13 541



Вряд ли ты прав... Хотя точно сказать не могу...
Go to the top of the page
 
+Quote Post
BVU
сообщение Jan 25 2006, 13:34
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(michael34 @ Jan 25 2006, 14:11) *
Вряд ли ты прав... Хотя точно сказать не могу...

Посоветуйте конкретно что-нибудь получше, здесь Вам за это будут только благодарны...! glare.gif


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 25 2006, 14:54
Сообщение #29


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(BVU @ Jan 25 2006, 13:20) *
Для выяснения причин данной проблемы нужно подать на вход системы (АЦП) синус 316гц, и контролировать, что получается на выходе фильтра 316гц и 430гц. Так же синус и для 430гц. Если будет 'пролаз' значит фильтры не работают, как полосовые или имеют не расчетную полосу, а на много больше. Так же характеристику фильтра можно снять при помощи анализатора спектра (Брюль и Кьер например или другой...), что еще комфортней для анализа и настройки фильра.



http://webfile.ru/766585 в этом файле картинки с показаниями со входов и выходов фильтров.

Да фильтр 430гц пропускает и 316 гц. Да он не работает. Вопрос ПОЧЕМУ??? Рачетные коэффициенты верны, программная реализация верна. Почему же он не работает. Может дело в математике?

http://webfile.ru/769075 - это принципиальная схема. Там же на картинке 3 решаемых уравнения.
Но на самом деле там есть спорный момент. По уравнениям я не вижу на втором сумматоре прибавления сигнала задержанного на 2 отсчета (который называется D2) . А если этого нет тогда то, что у меня называется "Рекурсивной частью звена", на самом деле - цифровой резонатор...

Посмотрите пожалуйста!

Если я прав, то этим можно объяснить то, что амплитуда сигнала частотой 316гц на выходе фильтра, расчитанного на эту частоту, в несколько раз превышает входной сигнал... Но почему тогда фильтр на 430гц одинаково резонирует как на 430 так и на 316?
Go to the top of the page
 
+Quote Post
BVU
сообщение Jan 25 2006, 15:46
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Jan 25 2006, 17:54) *
Цитата(BVU @ Jan 25 2006, 13:20) *

Для выяснения причин данной проблемы нужно подать на вход системы (АЦП) синус 316гц, и контролировать, что получается на выходе фильтра 316гц и 430гц. Так же синус и для 430гц. Если будет 'пролаз' значит фильтры не работают, как полосовые или имеют не расчетную полосу, а на много больше. Так же характеристику фильтра можно снять при помощи анализатора спектра (Брюль и Кьер например или другой...), что еще комфортней для анализа и настройки фильра.



http://webfile.ru/766585 в этом файле картинки с показаниями со входов и выходов фильтров.

Да фильтр 430гц пропускает и 316 гц. Да он не работает. Вопрос ПОЧЕМУ??? Рачетные коэффициенты верны, программная реализация верна. Почему же он не работает. Может дело в математике?

http://webfile.ru/769075 - это принципиальная схема. Там же на картинке 3 решаемых уравнения.
Но на самом деле там есть спорный момент. По уравнениям я не вижу на втором сумматоре прибавления сигнала задержанного на 2 отсчета (который называется D2) . А если этого нет тогда то, что у меня называется "Рекурсивной частью звена", на самом деле - цифровой резонатор...

Посмотрите пожалуйста!

Если я прав, то этим можно объяснить то, что амплитуда сигнала частотой 316гц на выходе фильтра, расчитанного на эту частоту, в несколько раз превышает входной сигнал... Но почему тогда фильтр на 430гц одинаково резонирует как на 430 так и на 316?

Судя по картинкам (http://webfile.ru/766585) у фильтра происходит возбуждение - отсюда и увеличение амплитуды выходного сигнала (это видно на эффекте модуляции), по всей видимости из за неустойчивости рекурсивной части звена. Что конкретно и почему сказать немогу. Попробуйте взять за основу уже работающую на практике модель фильтра (смена математической концепции)...


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th June 2025 - 05:42
Рейтинг@Mail.ru


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