Аудио анализатор спектра на 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 в качестве предварительного усилителя для микрофона.

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

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Дисплей
МК 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