В статье показан пример "работы при подаче на его вход суммы
постоянного сигнала значением 100 и случайной помехи частотой
1 кГц и амплитудой 10."
Интересует следующее.
Подать на вход аудиосигнал спектра звуковых частот
и выделить уровень сигнала на разных частотах,
например, 50, 100, 500, 1000, 5000, 10000, 15000 Гц
т.е. результат поместить в соответствующие переменные.
Как видится решение?
ПС. Поздеев Андрей - прошу ***** Правила Форума, п.3. ИРБИС
А вот на AVR задача действительно выглядит малореально (ИМХО) из-за слабости самого ядра AVRок серий мега/тини (или точности не будет, или еще какая-нибудь хрень вылезет). Что вам нужно именно сделать на выходе? Чем БПФ не устраивает? Принцип "Работает - Не изобретай" все же и тут работает. _________________ Если не принимать меры, то энтропия в голове будет расти и расти....
для AVR их, пожалуй, ни у кого нет во всяком случае в том виде, как представляется после прочтения статьи о фильтрах
можете самостоятельно посинтезировать фильтры при помощи программки WinFilter - http://www.winfilter.20m.com и проверить, какое быстродействие они реализуют... увы, этот "прямолинейный" подход не проходит на AVR даже для 8-битной целочисленной арифметики... а поиски "оптимума" неизбежно приводят к FFT
кстати, по вашей, Настя, ссылочке нет ничего толкового - библиотечка FFT для AVR в интернете есть только одна реально работающая - известного Элм Чена...
Гляньте ADAU1702 и иже с ними от Analog Device...
Если "дури" у них не хватит, то смотрите BF53x, BF52x от той же компании - у них есть не очень дорогие Киты.
С уважением.
Эту задачу успешно решил Роман Абраш, известный как ARV, в своём спектроанализаторе. Алгоритм он не разглашает, но у меня есть предположения, каким образом это можно сделать, не прибегая к БПФ.
А вот и автор. Извиняюсь за задержку. Вообщем как вариант можно использовать полосовой фильтр - он даст минимальное затухание для заданной частоты ну и в соответствии с порядком наклон АЧХ для граничных частот. Полосовой фильр можно получить последовательным включением ФВЧ и ФНЧ. описанный фильтр является ФНЧ.
Еще хочу немного ясности внести ибо по моему реальзовать разложение в спектр на AVR вполне реализуемая задача. Мегу88, например, можно завести на 20 МГц, что не так уж и мало, а если речь идет об индикации то там тем паче все успеть можно. Простым примером применения цифровых фильтров являются шифраторы/дешифраторы тонового набора телефонов. _________________ Путь осилит идущий ...
при помощи программы WinFilter я синтезировал цифровые фильтры 8-битные и 16-битные, порядка выше второго, в том числе, полосовые. к сожалению, фильтр 2-го порядка слишком плоховат для спектроанализатора, а 10 полосовых фильтров 3-го или 4-го порядка даже в 8-битном варианте мега8 уже не тянет по быстродействию. конечно, я делал все примитивно, если пооптимизировать, то, наверное, немного улучшить ситуацию можно, но по-моему до БПФ все равно результату будет далеко...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы