Перейти к содержанию
    

ФВЧ для сигнала на MSP430

Добрый день!

 

Передо мной стоит такая задача - MSP430 с тактовой частотой 20МГц собирает данные с трёх оптических каналов со скоростью 1000Гц. Данные имеют выраженную наводку 50Гц и высокочастотные шумы. Сбор данных производится в прерывании. Мне нужно получить сигнал на выходе с частотой 10Гц, из которого убраны все помехи. С алгоритмами ЦОС я не знаком, вычислительная мощность слабая. Что посоветуете?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советую вам промоделировать в матлабе , заодно уточнив такие нужные параметры как подавление за полосой, сама полоса сигнала и т.д.

http://www.dsplib.ru/contentfilters.html

(и вам нужен ФНЧ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, мне там ничего не понятно. Есть ли пример кода?

Лет 10 назад попал в такую же ситуацию, что и вы - нужен ЦФ, а я никогда этим не занимался. Я сделал вот что:

- Почитал книжку Сергиенко, ту часть, где пишут про ЦФ. Мне хватило КИХ - фильтра. И еще, у него очень приятно описано, как работать с МатЛаб'ом и строить в нем ЦФ, и как их затем моделировать. Начать советую именно с Сергиенко - почитайте теорию, синтезируйте посредством МатЛаб пару-тройку ЦФ и в этом же МатЛаб их поисследуйте, и тогда вам станет понятно, как их программировать.

http://www.studmed.ru/sergienko-ab-cos-cif...248baaee64.html

 

- Почитал вот этот апп.ноут:

http://www.electroscheme.ru/datasheet/ATME...0with%20AVR.pdf

 

- И вот этот материал:

http://www.analog.com/en/analog-dialogue/a...simplified.html

Там есть пример ЦФ на Си, правда, БИХ, а не КИХ.

 

Была еще статейка каких-то индийских специалистов по обработке кардиограммы с помощью ЦФ. Там был очень удачный пример и код на Си. Но это было давно, я не могу вспомнить название. Сегодня вечером буду дома и попробую порыться в архивах, если будет время.

 

И еще апп. ноут, там внутри ссылочка на исходники:

http://www.ti.com/lit/an/slaa486a/slaa486a.pdf

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20МГц на 3 канала по 1кГц это 6666 тактов на каждый отсчёт, за это время сделать с сигналом что угодно можно.

даже преобразование Фурье, зануление всех частот выше 10Гц и преобразование обратно.

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

потом можно попробовать простые бих фильтры первого порядка: y += (x-y)/K

или простое усреднение по 20 точкам, чтобы 50Гц заодно задавить, этого может и хватит.

если нет, потом можно почитать про cic фильтры, они довольно простые, несколько сложений/вычитаний. https://github.com/EsonJohn/CIC-filter - не самый удачный пример для msp430, но уж какой под руку попался, динамическое выделение памяти, произвольную длину фильтра и вообще плюсы убрать, останется несколько сточек.

 

у аналоговых девайсов вроде неплохой букварь был "Mixed signal and dsp design techniques"

 

ну ещё есть вариант взять какой-нибудь qedesign, задать в него параметры фильтра, и получить готовые коэффициенты, он там вроде даже какой-то C код генерить умел, если вылечить от жадности, не помню только как там насчёт целочисленной арифметики.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...