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

 
 
> Не получается рассчитать/подобрать фильтр., LPF
misyachniy
сообщение Nov 30 2014, 14:52
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Я использовал winfilter для генерации исходника
http://www.winfilter.20m.com/

Код вставлял в Builder без изменений (FIR 4).

Исходно идет оцифровка сигнала 17300 Гц 4-х кратной чатотой.
Затем вычисляются sin/cos и суммирование за 64 периода

Код
balance_value =  ADC_GetInjectedConversionValue(ADC3, ADC_InjectedChannel_1);
  switch (i & 3)
  {
   case 0: Re += balance_value; break;
   case 1: Im += balance_value; break;
   case 2: Re -= balance_value; break;
   case 3: Im -= balance_value; break;
  }  
  
  i++;
  
  if (i == MAX_AVERAGE_BALANCE_SIGNAL )
  {
   i  = 0;
    
   Re /= (MAX_AVERAGE_BALANCE_SIGNAL/4);
   Im /= (MAX_AVERAGE_BALANCE_SIGNAL/4);

    re_value = Re;
    im_value = Im;

    amp_series_samples = (Re * Re + Im * Im);
  }


Чтобы результат (Re * Re + Im * Im) поместился в 32 бита накопленные значение делятся на 4.
Но на расчет фильтра, по моему, не должны влиять

Для расчета фильтра нужна частота семплирования и верхняя граница пропускания.

Частоту семплирования я рассчитал как 17300 * 4 / 64 = 1082Гц.
Частоту верхней границы ставил от 1 до 10Гц но "красивого" гладкого сигнала не получил.
меньше 1 Гц программа не позволяет использовать
Пробовал 1082Гц увеличивать/уменьшать 2 и 4 раза - не помогло.

Пример плохого сигнала "small_fe.PNG", хорошего "big_cu.PNG", сдвоеного "1_cop_ua.PNG" в архиве.
В нем же csv данные.
Одну картинку прикладываю отделльно для оперативного просмотра



Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  _________________________________.rar ( 133.88 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rx9cim
сообщение Dec 25 2014, 16:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Посмотрите прогу rxdisp для SDR, там есть исходники, в том числе нужные вам, правда для float.
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Jan 2 2015, 11:56
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Наиболее хорошо получился результат с такой прогаммой расчета коэффициентов.
http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html

Код
//-----------------------------------------------------
#define NZEROS 2
#define NPOLES 2

// bessel 2 order  Fs =423, Fc = 5
float gain = 4.854200800e+02;
float coef_0 =  -0.8489920322;
float coef_1 =  1.8407517468;

float filter_bessel_5Hz_AMP(float input_value)  // 11.6 uS
  {
      static float xv[NZEROS+1], yv[NPOLES+1];  
       xv[0] = xv[1]; xv[1] = xv[2];
        xv[2] = input_value / gain;
                                            
        yv[0] = yv[1]; yv[1] = yv[2];
        
        yv[2] = xv[0] + xv[2] + 2 * xv[1]
                      + (coef_0 * yv[0]) + (coef_1 * yv[1]);

        return  yv[2];
  }

Исходник сгенерированный программой пришлось перекроить и вынести коэффициенты в переменную.
cortex m3 имеет систему команд в 16 бит шириной и с константами работает медленнее.( ИМХО :-))

Результат на рисунке:
Прикрепленное изображение


На верхнем графике амплитуда и фаза до фильтрации
На нижнем амплитуда после фильтрации.

Возник вопрос по определению наличия сигнала.
Вот увеличенный отфильтрованный сигнал:
Прикрепленное изображение


Явно виден тренд к повышению уровня постоянной составляющей.
Если ее отсечь, то определить пики сигнал легко.

Порылся в интернете по слову "тренд" - предлагают фильтры для торговли на бирже.
Или низкочастотные или текущее среднее предлагают.
Есть ли другие фильтры для поиска сигнала? Как они называются?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- misyachniy   Не получается рассчитать/подобрать фильтр.   Nov 30 2014, 14:52
- - Maverick   Цитата(misyachniy @ Nov 30 2014, 16:52) Я...   Dec 1 2014, 11:40
|- - Lmx2315   QUOTE (Maverick @ Dec 1 2014, 14:40) в ма...   Dec 1 2014, 11:48
|- - misyachniy   Попробовал "чистый" matlab. Фильтр Батте...   Dec 4 2014, 17:13
|- - ViKo   Цитата(misyachniy @ Jan 2 2015, 14:56) Яв...   Jan 2 2015, 13:34
|- - misyachniy   Цитата(ViKo @ Jan 2 2015, 15:34) ФВЧ? Б...   Jan 2 2015, 18:11
|- - ViKo   Цитата(misyachniy @ Jan 2 2015, 21:11) Бе...   Jan 3 2015, 07:50
- - des00   Извините за глупый вопрос, а откуда вообще берется...   Jan 3 2015, 17:02
|- - misyachniy   Цитата(des00 @ Jan 3 2015, 19:02) Извинит...   Jan 4 2015, 11:06
|- - des00   Цитата(misyachniy @ Jan 4 2015, 18:06) Тр...   Jan 4 2015, 15:18
|- - misyachniy   Цитата(des00 @ Jan 4 2015, 17:18) банальн...   Jan 12 2015, 16:49
|- - des00   Цитата(misyachniy @ Jan 13 2015, 00:49) Э...   Jan 12 2015, 17:18
|- - misyachniy   Цитата(des00 @ Jan 12 2015, 19:18) dc(k) ...   Jan 12 2015, 19:30
|- - des00   Цитата(misyachniy @ Jan 13 2015, 02:30) П...   Jan 12 2015, 19:42
- - ViKo   Что вам мешает вместо (вместе с) R8 поставить конд...   Jan 4 2015, 11:41
|- - misyachniy   Цитата(ViKo @ Jan 4 2015, 13:41) Что вам ...   Jan 4 2015, 12:54
|- - ViKo   Цитата(misyachniy @ Jan 4 2015, 15:54) По...   Jan 4 2015, 12:58
- - Hose   Интегрирование за 64 определит частотную характери...   Jan 8 2015, 12:08


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

 


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


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