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

 
 
> Не получается рассчитать/подобрать фильтр., 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
Ответов
Maverick
сообщение Dec 1 2014, 11:40
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(misyachniy @ Nov 30 2014, 16:52) *
Я использовал 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 данные.
Одну картинку прикладываю отделльно для оперативного просмотра

в матлабе не проще подобрать фильтр? например с помощью fdatool


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 1 2014, 11:48
Сообщение #3


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (Maverick @ Dec 1 2014, 14:40) *
в матлабе не проще подобрать фильтр? например с помощью fdatool

..матлаб стоит десятки тыщ долларов, чей курс скоро удвоится - никакой зарплаты не хватит, не стоит того фильтр.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Dec 4 2014, 17:13
Сообщение #4


Знающий
****

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



Попробовал "чистый" matlab.
Фильтр Баттерворта первого порядка дает отличный результат файл "matlab butter 1 order.PNG"
Судя по запаздыванию Matlab соединил около сотни одиночных. Это для меня много.

При использовании заготовки программы winfilt08 с 7-tap файл "winfilt08.PNG"
Результат не отличается от простого усредняющего

Код
int filter(short NewSample)
{

// Фильтр с сайта EasyElectronics.ru
//  Y(n) = (15*Y(n-1) + X(n)) >> 4

y = y*15 + NewSample >> 4;
return y;

return fir(NewSample);
}

Рисунок отфильтрованного сигнала "simple_average.PNG"

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- misyachniy   Не получается рассчитать/подобрать фильтр.   Nov 30 2014, 14:52
- - rx9cim   Посмотрите прогу rxdisp для SDR, там есть исходник...   Dec 25 2014, 16:56
|- - misyachniy   Наиболее хорошо получился результат с такой прогам...   Jan 2 2015, 11:56
|- - 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 - 15:05
Рейтинг@Mail.ru


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