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

 
 
> Создание фильтра в MATLAB и его реальное применение
sidy
сообщение Feb 18 2013, 14:47
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Здравствуйте, уважаемые форумчане. В MATLAB в утилите FDATool я выбрал фильтр Баттерворта 2ого порядка, частоту среза 50 Гц, частоту дескритизации 5000 Гц и расчитал коэффициенты фильтра. После этого выполнил Convert To Single Section. Получил следующие коэффициенты:
numerator:
0.0009446918438402,
0.00188938368768,
0.0009446918438402

denominator:
1,
-1.911197067426,
0.9149758348014

Могу ли я использовать эти коэффициенты для построения фильтра в цифровом сигнальном процессоре для фильтрации входного сигнала с АЦП (входная шкала напряжения от 0 до 4096)? Или я должен сделать еше какието манипуляции с данными коэффциентами?
Т.к. используя эти коэффициенты, получаю нулевой сигнал. Посмотрев коэффициенты фильтров в различной литературе, заметил что они близки к 1 или 2. А у меня коэффициенты b получились очень маленькими.

Сообщение отредактировал sidy - Feb 18 2013, 15:09
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sidy
сообщение Jul 4 2013, 09:34
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Вот что у меня получилось:
Код
//float ACoef[3]={1, -1.913780606355776, 0.917346934620046};
//float BCoef[3]={1, 2, 1};
int16_t ACoef[3]={16384, -31355, 15029};
int16_t BCoef[3]={16384, 32767, 16384};
int y[3], x[3];
int16_t NewSample;
  //*Фильтр Баттерворта 2ого порядка Low-Pass-------------------------------------------------
  for(n=2; n>0; n--) {x[n]=x[n-1]; y[n]=y[n-1];} //Сдвигаем старые значения
  //Вычисляем новое выходное значение
  x[0]=NewSample<<4; y[0]=BCoef[0]*x[0];
  y[0]=y[0]>>15;
  for(n=1; n<=2; n++) {y[0]+=(BCoef[n]*x[n])-(ACoef[n]*y[n]);  
  y[0]=y[0]>>15;}

Рассчитал коэффициенты фильтра, умножив, исходные полученные в Matlab на 16384. Также я сдвигаю полученные в 12 битном АЦП отсчеты на 4 влево (x[0]=NewSample<<4;) для приведения к формату Q1.15 и еще сдвигаю рассчитанный выходной сигнал на 15 вправо. После этого вывожу отсчеты на ЦАП. Фильтр не работает т.е. искаженная синусоида проходит без фильтрации и фазовый сдвиг вместо 90гр получился около 5гр (см. рис., входная синусоида желтая).
Прикрепленное изображение

С float арифметикой все работало, один в один как в Matlabe:
Правильная фильтрация:
Прикрепленное изображение

Что я делаю не так?

Сообщение отредактировал sidy - Jul 4 2013, 09:35
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sidy   Создание фильтра в MATLAB и его реальное применение   Feb 18 2013, 14:47
- - V_G   Это распространенная проблема БИХ-фильтров - сущес...   Feb 18 2013, 23:25
|- - sidy   Цитата(V_G @ Feb 19 2013, 03:25) Либо пов...   Feb 27 2013, 07:02
- - alexeyv   Если ДСП fixed-poin, то необходимо конвертировать ...   Feb 20 2013, 02:23
- - STAR_IK   А вы как смотрите сдвиг? Это похоже на простую инв...   Feb 28 2013, 04:05
|- - sidy   Цитата(STAR_IK @ Feb 28 2013, 08:05) А вы...   Feb 28 2013, 04:38
- - sidy   У меня возник еще один вопрос. Теперь мне необходи...   Apr 16 2013, 12:18
- - Alexey K   Два фильтра 2-го порядка   Apr 16 2013, 13:13
- - sidy   Задам еще один вопрос. Столкнулся с непонятной мне...   May 13 2013, 07:50
- - sidy   Прошу прощение, что потревожил техническую обществ...   May 13 2013, 15:21
|- - MSP430F   Всем доброго времени суток! Коллеги, помогите...   Jun 3 2013, 12:48
- - sidy   Назрела необходимость перейти к вычислениям с фикс...   Jul 3 2013, 12:37
|- - fontp   QUOTE (sidy @ Jul 3 2013, 15:37) Назрела ...   Jul 3 2013, 12:52
- - bullit   Простите что вмешиваюсь! А чем вам float не уг...   Aug 3 2013, 21:39
- - BooZe   Вот результаты моделирования Вашего фильтра с норм...   Aug 14 2013, 09:06
- - sidy   Задам еще один вопрос. Допустим я фильтрую входной...   Aug 26 2013, 16:30
- - bullit   Помоему из этого:Цитата...также фильтруются и порт...   Aug 26 2013, 18:01
- - sidy   Выудить хочу переход через ноль, поскольку в исход...   Aug 26 2013, 18:49
- - bullit   Цитатано также фильтруются и портят алгоритм Каким...   Aug 27 2013, 15:38
- - _VGA_   помогите разобраться делаю фильтр так: ------- BIQ...   Nov 11 2013, 18:30
- - SemperAnte   fn - это же нормализованная частота? Она должна сч...   Nov 12 2013, 09:12
- - _VGA_   fs - частота квантования (48 кгц) fc - частота сре...   Nov 12 2013, 11:20
|- - SemperAnte   Цитата(_VGA_ @ Nov 12 2013, 15:20) fs - ч...   Nov 12 2013, 11:39
- - _VGA_   там хелп есть? ну я и бестолочь Спасибо получилос...   Nov 12 2013, 12:54


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 06:10
Рейтинг@Mail.ru


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