0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
1

БПФ(FFT) на микроконтроллерах AVR ???

02.06.2011, 05:09. Показов 33287. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Обожаю цветомузыку, но к сожалению все отечественные варианты слишком громоздки, да и с появлением микроконтроллеров, они морально устарели. В сети множество примеров Быстрого Преобразования Фурье - основы любой цветомузыки на мк, но вот как его реализовать я так и не понял. Существует достаточно материала на эту тему, но либо на английском, либо написано так что сам чорт ногу сломит... Смысл как бы ясен: разложить сигнал на простые составляющие, а как реализовать - это вопрос.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2011, 05:09
Ответы с готовыми решениями:

Эмуляция RFID ключа домофона на микроконтроллерах AVR
Доброго времени, форумчане. Требуется склонировать ключ от домофона типа RFID. Доступные мне...

Персональный компьютер ZX Spectrum на микроконтроллерах AVR своими руками
Собираем компьютер ZX Spectrum на микроконтроллерах AVR своими руками! Проект открытый, все...

БПФ FFT
Передо мной стоит задача реализовать БПФ на ПЛИС на VHDL, многие скажут, что в гугле миллион разных...

Выделение гармоники в БПФ (fft)
Добрый вечер, товарищи, с праздником!!! Помогите пожалуйста! С помощью добрых людей с форума и...

Как можно получить амплитудный и фазовый спектры, коэффициенты разложения бпф без стандартной функции fft
Зосима, если тебя не затруднит, не мог бы ты показать как можно получить амплитудный и фазовый...

28
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
02.06.2011, 05:45 2
Думал тоже подобное сделать. Остановился на том, что надо на АЦП подавать сигнал, а МК будет работать частотомером, зажигая ту или иную лампочку в зависимости от частоты...
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
02.06.2011, 06:15 3
Цитата Сообщение от BykTiho
Думал тоже подобное сделать. Остановился на том, что надо на АЦП подавать сигнал, а МК будет работать частотомером, зажигая ту или иную лампочку в зависимости от частоты...
Амплитуду звука видели ?! Попробуйте хотя бы приблизительно измерить частоту, к тому же звук - это непереодичный сигнал, этот факт усложняет задачу !
------------------------------------------------------------------
Вот нашел цветомузыку на меге8 с БПФ, пытался даже крякнуть прошивку, но к сожалению, ее было очень тяжело прочитать. Видео работы устройства.
0
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
02.06.2011, 06:22 4
Ну тогда набор фильтров на вход, а на выходе - зажигать лампочки. Но тогда уже МК вообще ненужная деталь. Проще на транзисторах сделать.
0
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 82
02.06.2011, 06:33 5
Где то видел статью, по-моему здесь на форуме. Чувак в каску строительную засунул несколько линеек светодиодов, аврку, микрофон. Сделал типа индикатора спектра в винампе или кассетные нигнитофоны были тоже с таким индикатором. Торопился на какой то концерт пофорсить. Чем не выход? может у него и не было там именно БПФ, но задача сходная решалась. Уровень, спектр.

Вот кстати и ссылка
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
02.06.2011, 06:39 6
http://itm-chan.org/works/akilcd/report_e.html

<Изображение удалено>

<Изображение удалено>
0
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 177
02.06.2011, 12:52 7
Ну АЦП меги могет работать на 200 кГц. Преобразование - 13 тактов. Имеем 200/13 = 15.38 кГц - частота дискретизации. Верхнея входная частота по Котельникову получается 15.38 / 2 = 7.69 кГц. Маловато будет для классики, но для современной музыки пойдет. Буфер возьмём на 16 отсчетов. Тогда получим частотные отсчеты через каждые 513 Гц (7.69кГц / N-1 = 513). А вот это уже не оченьто культяписто - треба хоть пару канальчиков на низкие заиметь. Можно по пробывать увиличить буфер до N=64, тогда 7.68кГц / (64-1) = 122 Гц. Уже лучше, но все равно не достаточно треба каналы герц на 30 - 60 заиметь. Это уже буфер на 128 отсчетов. Но вот хватит ли ресурсов его обработать - хз. Требуемое кол-во операций сложения-перемножения X = N * log2(N). Для N = 64 X = 64 * log2(64) = 64 * 6 = 384. По тактам считайте сами - лениво. Только учитывайте время на перемножение и сложение по отдельности и не забудте добавить время на операции загрузки операндов.
0
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 82
02.06.2011, 13:24 8
"Ну АЦП меги могет работать на 200 кГц. Преобразование - 13 тактов. Имеем 200/13 = 15.38 кГц"
да 15 кSPS. Но если не нужно 10 бит, то можно и больше подавать. Тут по идее и 4 бит хватит.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
02.06.2011, 13:45 9
а можно делать не бпф на кучу отсчетов, а тупо N фильтров - вам же не нужны все 128 коэффициентов ПФ? там и вычисл. мощность будет не такая большая нужна. рекурсивный цифровой фильтр (на конкретную частоту дискретизации), смоделировать в матлабе.
0
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 177
02.06.2011, 14:19 10
Хватит, не спорю. Но вот памяти то хватит что бы расчитать преобразование? Увеличим частоту - увеличиться интервал между отсчетами, значит нужно больше буфер - что бы низкие компоненты были. больше буфер - больше ОЗУ сожрет, да и время вычисления больше.
По поводу реализации в виде N фильтров - алгоритм Герцеля - на низких частотах время накопления будет большое - 3-5 сек. А это уже инерционность что ни есть гуд на динамичной системе типа цветомузыки. Под классику типа Чайковского или Рахманинова, Бетховена - пойдет, а вот Rammstein или NightWish - не в красну армию.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
02.06.2011, 14:22 11
Цитата Сообщение от _kuordyomomkit
на низких частотах время накопления будет большое - 3-5 сек
А зачем так много?
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
02.06.2011, 17:52 12
А не проще ли сделать аналоговым методом (несколькими полосовыми фильтрами)?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
02.06.2011, 20:03 13
я и говорил про полосовые фильтры! только цифровые. там не нужно накапливать и потом считать, нужно помнить НЕСКОЛЬКО предыдущих отсчетов. а с выхода фильтра считать амплитуду как обычно, раз за нужное время (20-100мс).
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
03.06.2011, 02:40 14
Цитата Сообщение от btymdmom
http://itm-chan.org/works/akilcd/report_e.html

<Изображение удалено>

<Изображение удалено>
Видел, на английском =(

Цитата Сообщение от _kuordyomomkit
Ну АЦП меги могет работать на 200 кГц. Преобразование - 13 тактов. Имеем 200/13 = 15.38 кГц - частота дискретизации. Верхнея входная частота по Котельникову получается 15.38 / 2 = 7.69 кГц. Маловато будет для классики, но для современной музыки пойдет. Буфер возьмём на 16 отсчетов. Тогда получим частотные отсчеты через каждые 513 Гц (7.69кГц / N-1 = 513). А вот это уже не оченьто культяписто - треба хоть пару канальчиков на низкие заиметь. Можно по пробывать увиличить буфер до N=64, тогда 7.68кГц / (64-1) = 122 Гц. Уже лучше, но все равно не достаточно треба каналы герц на 30 - 60 заиметь. Это уже буфер на 128 отсчетов. Но вот хватит ли ресурсов его обработать - хз. Требуемое кол-во операций сложения-перемножения X = N * log2(N). Для N = 64 X = 64 * log2(64) = 64 * 6 = 384. По тактам считайте сами - лениво. Только учитывайте время на перемножение и сложение по отдельности и не забудте добавить время на операции загрузки операндов.
Осталось не понятно для чего нужен буфер, о каких операциях сложения-перемножения идет речь ?
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
03.06.2011, 02:43 15
Цитата Сообщение от OTPINE
А не проще ли сделать аналоговым методом (несколькими полосовыми фильтрами)?
Моя задача - понять и приминить алгоритм цифровой фильтрации звука, а не упрощать задачу. А если все упрощать, тогда и мк не нуже, поставил транзисторы/тиристоры и радуйся...

Цитата Сообщение от Ymk
а можно делать не бпф на кучу отсчетов, а тупо N фильтров - вам же не нужны все 128 коэффициентов ПФ? там и вычисл. мощность будет не такая большая нужна. рекурсивный цифровой фильтр (на конкретную частоту дискретизации), смоделировать в матлабе.
Проблема в том, что нужна полоса частот...
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
03.06.2011, 04:11 16
Осталось не понятно для чего нужен буфер, о каких операциях сложения-перемножения идет речь ?
Алгоритм БПФ (Быстрого Преобразования Фурье) для работы требует наличия определенного количества отсчетов одновременно (в оригинальном преобразовании операции проводятся над каждой парой отсчетов. Вернее, для получения каждой точки результата надо прошерстить весь буфер. В БПФ басню подсократили). Соответственно, эти отсчеты должны где-то лежать - вот и буфер. Чем больше отсчетов, тем точнее преобразование.
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
03.06.2011, 04:20 17
Цитата Сообщение от Ymk
а можно делать не бпф на кучу отсчетов, а тупо N фильтров - вам же не нужны все 128 коэффициентов ПФ? там и вычисл. мощность будет не такая большая нужна. рекурсивный цифровой фильтр (на конкретную частоту дискретизации), смоделировать в матлабе.
Проблема в том, что нужна полоса частот...
Непрерывная? Вряд ли. Взять спектроанализатор. Там нужно отображать всего несколько дискретных полосок. Вот и сделай несколько дискретных фильтров. Тот же КИХ-фильтр будет достаточно небольшого порядка, тебе же не надо супер параметры среза и претензии к фазе.
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
03.06.2011, 04:33 18
1. И все таки какой алгоритм БПФ???
2. Как сделать дискретые фильтры(алгоритм) ???
3. В варианте с несколькими дискретными полоскаими, может получится так, что музыка будет играть на определенной частоте (какой-либо инструмент), а отклика не будет !
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
03.06.2011, 04:37 19
Цитата Сообщение от proffissor
1. И все таки какой алгоритм БПФ???
http://ru.wikipedia.org/wiki/%D0%91%D1% ... 1%8C%D0%B5

Цитата Сообщение от proffissor
2. Как сделать дискретые фильтры(алгоритм) ???
http://ru.wikipedia.org/wiki/%D0%A4%D0% ... 0%BE%D0%B9

Цитата Сообщение от proffissor
3. В варианте с несколькими дискретными полоскаими, может получится так, что музыка будет играть на определенной частоте (какой-либо инструмент), а отклика не будет !
Во-первых, то, что "играет на определенной частоте" не достойно называться музыкой. Это лабораторный генератор идеальной синусоиды.
Во-вторых, фильтры тоже не идеальные, и подавление у них не стопроцентное. Так что этого можешь не бояться ))
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
03.06.2011, 04:51 20
Цитата Сообщение от Stiit.mi
Цитата Сообщение от proffissor
1. И все таки какой алгоритм БПФ???
http://ru.wikipedia.org/wiki/%D0%91%D1% ... 1%8C%D0%B5

Цитата Сообщение от proffissor
2. Как сделать дискретые фильтры(алгоритм) ???
http://ru.wikipedia.org/wiki/%D0%A4%D0% ... 0%BE%D0%B9

Цитата Сообщение от proffissor
3. В варианте с несколькими дискретными полоскаими, может получится так, что музыка будет играть на определенной частоте (какой-либо инструмент), а отклика не будет !
Во-первых, то, что "играет на определенной частоте" не достойно называться музыкой. Это лабораторный генератор идеальной синусоиды.
Во-вторых, фильтры тоже не идеальные, и подавление у них не стопроцентное. Так что этого можешь не бояться ))

С фильтрами разобрался, с БПФ - нет. Кучу формул, а толку 0 ! Да и пример на С# не очень разговорчив... =(
0
03.06.2011, 04:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2011, 04:51
Помогаю со студенческими работами здесь

EV8031/AVR + atmega8515 + FFT + LED5x5x5 Cube!
Первый забег beta версии. http://www.youtube.som/watch?v=1YiHFj5CTZA FFT на 64 отсчета,...

Придумать как посчитать FFT([a1, a2, . . . , an]) за время O(n), при известном FFT([a0, a1, . . . , an−1])
Здравствуйте, столкнулся с данной задачей, при изучении быстрого преобразования Фурье, но не имею...

Как разбить одно БПФ на несколько БПФ?
Можно ли разбить одно БПФ на несколько БПФ? И если можно, то по какому правилу их соединять, если...

БПФ, поиск максимума спектральной плотности, поиск экстремума (максимума) в отсчетах БПФ
Всем добра! В математике я нуб, нужна помощь в решение задачи в Matlab!!! Дано: 1) Частота...

Работа с USB в микроконтроллерах
имею микроконтроллер с USB и UART портами. нужно написать прошивку для преобразования входных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru