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

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

Я сделал небольшой аудио анализатор спектра (0 - 10 кГц) из ЖК-дисплея 16x2 и микроконтроллера 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 в качестве предварительного усилителя для микрофона.

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание
Дисплей
МК AVR 8-бит
ATmega32
1
Конденсатор 22 пФ 2
Конденсатор 0.1 мкФ 1
Электролитический конденсатор 100 мкФ 1
Резистор
100 Ом
1
Подстроечный резистор 4.7 кОм 1
Кварцевый резонатор 16 МГц 1
LCD-дисплей 16х2 1
Блок питания 5 В 1
Аудио вход
U1 Операционный усилитель
LM324
1
С1 Конденсатор 1 мкФ 1
С8 Конденсатор 0.01 мкФ 1
R1 Резистор
220 кОм
1
R2, R3 Резистор
10 кОм
2
R4, R9 Резистор
1 кОм
2
R5 Резистор
1.5 кОм
1
MIC Микрофон 1

Оригинал статьи

Прикрепленные файлы:

Top