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

ФВЧ для сигнала на 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 код генерить умел, если вылечить от жадности, не помню только как там насчёт целочисленной арифметики.

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация