Аудио анализатор спектра на Atmega32

Аудио анализатор спектра на Atmega32

Все сигналы, независимо от того, вы их придумали  или наблюдали во Вселенной, на самом деле просто сумма простых синусоид различных частот.

Я сделал небольшой аудио анализатор спектра (0 – 10 кГц) из ЖК-дисплея 16×2 и микроконтроллера ATmega32. Я начал с простых ДПФ (Дискретное Преобразование Фурье). БПФ (Быстрое Преобразование Фурье) отличается от ДПФ только большей скоростью и немного более сложным алгоритмом, я не стал его использовать, возможно я добавлю его позже.

ДПФ медленный по сравнению с БПФ. Мой ЖК анализатор спектра не требует большой скорости, которую может обеспечить  БПФ, и если изображение на экране будет меняться с частотой около 30 кадров / сек, то это более чем достаточно для визуализации звукового спектра. Но я итак могу достичь частоты около 100 кадров / сек, однако для ЖК-дисплея не рекомендуется слишком высокая частота обновления. Звук с частотой дискретизации 20 кГц даёт 32 точки ДПФ. Поскольку результат преобразования симметричен, мне нужно использовать только первые 16 результатов. Соответственно максимальная частота  10 кГц. Таким образом, 10кГц/16 = 625Гц.

Я пытался увеличить скорость вычисления ДПФ. Если есть точка N ДПФ, то необходимо найти синус и косинус (N ^ 2) / 2. Для 32-точечного ДПФ, необходимо  найти синус и косинус  512. Прежде чем искать синус и косинус, нам нужно найти угол (градусы), который занимает некоторое время процессора. Для этого я сделал таблицы для синуса и косинуса.  Я сделал синус и косинус  16-битными переменными, умножив значения синуса и косинуса на 10000. После преобразования я должен разделить каждый результат на 10000. Теперь я могу рассчитать 120 32-точечных ДПФ в секунду, что более чем достаточно для анализатора спектра.

Дисплей

Я использовал пользовательские символы для  ЖК-дисплея  загруженные в  64 Байт встроенной памяти ЖК-дисплея.  В интернете я увидел видео, где ЖК-дисплей 16х2 используется в качестве дисплея анализатора спектра и использовал эту идею.

Аудио вход

Одной из наиболее важных частей анализатора спектра является  получение сигнала с электретного микрофона. Особое внимание должно быть уделено разработке предварительного усилителя для микрофона. Нам нужно установить нулевой уровень на входе АЦП и максимальный уровень равный половине напряжения питания, т.е. 2,5В. На него может подаваться напряжение от -2,5В до +2,5В. Предусилитель должен быть настроен так, чтобы не превышать этих границ. Я использовал операционный усилитель LM324 в качестве предварительного усилителя для микрофона.

Скачать исходный код программы, ПО и печатную плату

Оригинал статьи на английском языке (перевод: Александр Касьянов для сайта cxem.net)


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 2

Добавить изображение

Последние статьи