0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
1 | |
"Нестандартный" анализатор спектра14.09.2011, 15:08. Показов 8665. Ответов 11
Метки нет (Все метки)
В последнее время озадачился я изучением алгоритмов цифровой обработки сигналов. Добрался до дискретного преобразования Фурье, решил сделать анализатор аудио спектра. Поизучал литературу, опубликованные описания любительских конструкций, пришел к выводу, что ДПФ не очень хорошо подходит для этой задачи. Разберемся, почему.
Человеческий слух устроен таким образом, что разрешающая способность падает с ростом частоты. Проще говоря, например звуки с частотой 50 Гц и 55 Гц смогут различить практически все, а отличить 3000 от 3005 - очень немногие. Это находит свое отражение и в музыкальном строе - частота каждой ноты больше предыдущей в http://dxdt.ru/f/?%5Csqrt%5B12%5D%7B2%7D раз. Можно считать, что разрешающая способность слуха с ростом частоты падает по экспоненциальному закону. А значит, для анализа аудио спектра максимальное разрешение нужно в области низких частот, а с ростом частоты можно анализировать более широкие области. То же относится и к эквалайзерам - у них средняя частота каналов, как и полоса пропускания, растет в геометрической прогрессии. А что же нам дает ДПФ? Оно "разбивает" спектр сигнала по каналам, частота которых растет в арифметической прогрессии. И получается, что на высоких частотах разрешение преобразования избыточно, в то время как на низких зачастую недостаточно. Например, если мы хотим анализировать сигнал частотой вплоть до 20 кГц, нужна частота дискретизации не менее 40 кГц. Как известно, разрешение ДПФ равно частоте дискретизации, деленной на длину преобразования, т.е. количество отсчетов, по которым идет анализ. То есть, чтобы при частоте дискретизации 40 кГц иметь возможность выделить сигнал с частотой 20 Гц, нужно анализировать не менее 2000 отсчетов. При использовании микроконтроллеров такой анализ занимает довольно много времени. Обычный подход - оцифровывать сигнал в 2 подхода, сначала с высокой частотой дискретизации, затем с низкой, и делать два ДПФ. В этом случае длину каждого преобразования можно сократить, и отдельно анализировать низкочастотные и высокочастотные компоненты. При этом уровень сигнала в высокочастотных каналах получают суммированием нескольких каналов, чтобы получить нужную полосу канала. Полоса же низкочастотных каналов получается одинаковой, там суммировать нечего, каналы получаются слишком узкими. В итоге такой анализатор спектра вроде и показывает что-то, но измерительным прибором его назвать вряд ли можно.Проверить это очень просто - достаточно подать на вход сигнал с частотой, изменяющейся от 20 до 20000 Гц. Возможно, кому-то и достаточно просто картинки, как-то меняющейся с частотой, но меня это не устраивает. Поэтому я решил применить другой подход - использовать так называемое somstomt-Q преобразование (somstomt-Q transform, CQT). Математические формулы CQT напоминают ДПФ, но используют другие коэффициенты и длину преобразования, которые зависят как от центральной частоты канала, так и от полосы пропускания. В результате можно получить набор полосовых фильтров, у которых полоса пропускания пропорциональна центральной частоте - как раз то, что нужно. Так кстати и делались анализаторы когда цифровая обработка еще не получила распространения - в виде набора аналоговых фильтров. Замечу, что CQT тоже свойственны проблемы при анализе низких частот - чем ниже центральная частота канала, тем больше отсчетов нужно анализировать. Но по сравнени с ДПФ, CQT все равно дает лучшее разрешение по частоте, причем АЧХ канала определяется самим алгоритмом, а не искусственно формируется из нескольких соседних полос, как в случае с ДПФ. Но использовать несколько АЦП с разной частотой выборок все равно придется. В качестве контроллера у меня Parallax Propeller. После недолгих экспериментов, я выяснил, что смогу оцифровывать сигнал с 3 разными частотами дискретизации, и получить вполне приличный набор третьоктавных фильтров, т.е фильтров, у которых верхняя частота полосы пропускания выше нижней в http://dxdt.ru/f/?%5Csqrt%5B3%5D%7B2%7D раз. В диапазоне частот от 20 Гц до 20 кГц (10 октав) получается 31 полоса. Фактически АЦП только один, а пониженные частоты выборок получаются с помощью децимирующих фильтров. У меня плата с видевыходом, поэтому я сделал вывод на VGA монитор. Структурная схема анализатора выглядит так: Вот тут видео, как оно работает - 21 полуоктавный канал http://www.youtube.som/watch?feature=pl ... vjG2j6uh94 Частота обновления - 30 Гц. Динамический диапазон 30 дБ, ограничен как довольно шумным АЦП, так и точностью целочисленной арифметики Программа написана таким образом, что можно легко поменять число каналов, центральные частоты каналов, количество делений по вертикали, скорость спада, короче, почти любые параметры. Светодиодные матрицы тоже несложно прикрутить, с заменой программного драйвера дисплея. Свободных ног у контроллера остается пару десятков, так что 10х10 можно просто через ключи, более крупные - через сдвиговые регистры. ЖКИ тоже легко. А теперь, внимание, вопрос :) Так как программа легко настраивается, хочется сделать так, чтобы можно было собирать анализатор в разных конфигурациях на основе одной базовой платки, к которой подключать нужный дисплейный модуль. Деталей там - контроллер, ОУ, ПЗУ, и два десятка резисторов-конденсаторов. Никак не могу придумать, как это наилучшим образом реализовать. Если цеплять большую светодиодную матрицу, то придется либо ставить регистры по краям платы, что увеличит габариты, либо делать 2 платы - на одной регистры, на другой светодиоды. В общем, посоветуйте, что можно придумать. Или не париться с универсальным модулем, а делать для каждого вида дисплея свою плату?
0
|
14.09.2011, 15:08 | |
Ответы с готовыми решениями:
11
10-ти полосный анализатор спектра GSP-7830 - анализатор спектра Proteus. Анализатор спектра Анализатор спектра на 128 полос |
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 392
|
|
16.09.2011, 18:13 | 2 |
Хе-хе, а поподробнее можно (или статью в сообщество), если честно: щас инфы ~ 0, как в дешевом научно-популярном журнале. Еще очень интересно про МК пропеллер:
1. Не канет ли он в небытье скоро? 2. Какова его реальная производит. и на каких задачах - вроде так он лажеват - умножение и деление 32-разр. чисел не реализовано аппаратно...
0
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
16.09.2011, 19:38 | 3 |
Сообщение от otix-rdx
Сообщение от otix-rdx
Сообщение от otix-rdx
Сообщение от otix-rdx
Но зато есть хорошо продуманная система команд, фон-Неймановская архитектура, и 8 идентичных процессоров :)
0
|
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 392
|
|
20.09.2011, 12:06 | 4 |
...
0
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
20.09.2011, 13:52 | 5 |
мдааа .... ээээээ ..... чо сказать -то хотел? куда пролетел-то? ты не выспался чтоль, чувак?
0
|
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 392
|
|
20.09.2011, 13:57 | 6 |
...
0
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
20.09.2011, 14:00 | 7 |
А теперь прочитай первый пост и дай обоснованный ответ на поставленный там вопрос. А ежели чего интересно - так и спроси прямо, а разжевывать от и до я не буду. В интернете все есть, гугл в помощь
0
|
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 392
|
|
20.09.2011, 14:10 | 8 |
...
0
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
20.09.2011, 14:22 | 9 |
Ну ну. Не будь пиздоболом - жду от тебя "разжевывания". И практически реализованной конструкции спектроанализатора на 30 каналов с хорошей АЧХ и высокой скоростью обновления. А мне метать бисер перед свиньями недосуг. Если бы кому-то было действительно интересно - спросили бы.
0
|
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
|
|
20.09.2011, 14:24 | 10 |
Он наверное с утра принял водоньки.
0
|
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 392
|
|
20.09.2011, 14:48 | 11 |
...
0
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
|
|
20.09.2011, 14:50 | 12 |
2 месяца хватит?
0
|
20.09.2011, 14:50 | |
20.09.2011, 14:50 | |
Помогаю со студенческими работами здесь
12
сонограф (анализатор спектра) на stm Анализатор спектра видеофайлов в Proteus Как работает анализатор спектра БПФ? Цветомузыка или анализатор спектра (Atmega48) Rgb matrix (64х32) P3 анализатор спектра (Arduino) Подскажите программу Анализатор звукового спектра с частоты 5 или 10 ГЦ Анализатор спектра тормозит Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Какой язык программирования лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
|
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
|
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
|
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
|
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
|
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
|
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций
История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
|
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
|
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы
В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
|
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
|