Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ФВЧ для сигнала на MSP430
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
kkobru
Добрый день!

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

Спасибо!
Lmx2315
Советую вам промоделировать в матлабе , заодно уточнив такие нужные параметры как подавление за полосой, сама полоса сигнала и т.д.
http://www.dsplib.ru/contentfilters.html
(и вам нужен ФНЧ)
kkobru
К сожалению, мне там ничего не понятно. Есть ли пример кода?
kovigor
Цитата(kkobru @ May 22 2018, 12:17) *
К сожалению, мне там ничего не понятно. Есть ли пример кода?

Лет 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

_pv
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 код генерить умел, если вылечить от жадности, не помню только как там насчёт целочисленной арифметики.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.