Устройство отображения аудио спектра

В этой статье показано оригинальное применение небольшого графического LCD-модуля. Прошлым летом, графический LCD-модуль SG12232C продавался за 1500 йен и я купил его. Но я не мог найти хорошее применение ЖК-модулю, и собирался отправить его в коробку с хламом, поэтому я пытался найти ему хоть какое-то применение.

Спектроанализатор на AVR

Просто отображение любых неподвижных изображений не круто, сначала я пытался отображать форму звуковой волны в режиме реального времени как цифровой осциллограф, а затем и спектральный анализ при помощи FFT. Устройство контроля спектра, кажется сделано хорошо, с учетом реализации на дешевом микроконтроллере.

Аппаратная часть

SG12232C является полноценным графическим ЖК-модулем с разрешением 122(H)х32(V) точек. На плате есть два LCD контроллера Epson S1D15200. S1D15200 может отображать до 61(H)х32(V) точек и каждый управляет половиной ЖК-дисплея. SG12232C требуется меандр 2 кГц в качестве тактового сигнала для ЖК-дисплея и оно должно подаваться пока питание включено, иначе  ЖК-дисплей может быть поврежден. Можно выбрать интерфейс шины на основе 8080 или 6800. 4-битного режима как у HD447880 нет, доступен только 8-битный режим и это требует как минимум 14 линий ввода/вывода.

Плата спектроанализатора

На изображении показана собранная плата и её схема. Использован микроконтроллер Atmel ATmega8, который оцифровывает входящей звуковой сигнал и отображает формы волн на ЖК-модуле. Это не сложно для изготовления. Я использовал MAX293, эллиптический фильтр 8-го порядка в качестве сглаживающего фильтра. SCF очень полезен и дешев по сравнению с дискретным LPF.

Схема спектроанализатора

Программа

Изображение ниже показывает процесс  внутреннего прохождения сигнала. Оцифрованные блоки данных преобразуется FFT и отображаются как бары в левой половине (64 точки) ЖК-дисплея. Форма волны отображаются в правой половине (58 точек) с циклическим сдвигом сигнала.

Процесс внутреннего прохождения сигнала

Операции выполняются с 16-битной фиксированной точкой. Эти 128 точечные процессы FFT, применяющие интервалы, операции бабочки и скалярный выход, могут быть выполнены в режиме реального времени (в течение 7,3 мс). Это довольно быстро, учитывая обработку дешёвым микроконтроллером. Спектр делений отображается в порядке основной частоты х0 (постоянная составляющая), основной частоты x1, x2, x3, … слева направо. Частота дискретизации составляет 9,6 кГц и основная частота (частотное разрешение) примет вид: 9.6k/128=75 Гц.

audio_spectrum5.jpg

Также есть библиотеки FFT с неподвижной точкой для AVR-GCC. Они написаны на ассемблере и оптимизированы для megaAVR.

Вот некоторые формы волн, меандр, пилообразная волна и sin(х)/х. Вы можете обнаружить, что они отображаются так же, как в учебнике.

Видео работы: видео 1, видео 2, видео 3, видео 4

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит ATmega8 1 ATmega8-16AC
U2 Микросхема MAX293CPA 1
C? Конденсатор электролитический 10 мкФ 1
C Конденсатор 1 мкФ 2 неполярный
Конденсатор 100 нФ 5
Конденсатор 22 пФ 2
R1 Резистор 150 кОм 1
R2 Резистор 51 кОм 1
Резистор 100 кОм 1
Резистор 20 кОм 1
Резистор 10 кОм 2
Резистор 4.7 кОм 1
VR1 Подстроечный резистор 2 кОм 1
VR2 Подстроечный резистор 5 кОм 1
VR3 Подстроечный резистор 10 кОм 1
Y1 Кварц 16 МГц 1
LCD LCD-дисплей SG12232C 1 122х32, два контроллера S1D15200
P1 Разъём 2 контакта 1 разъём питания
P2 Разъём PLD-20 1 разъём LCD
P3 Разъём PLD-6R 1 разъём ISP
Разъём 2 контакта 1 вход аудиосигнала
SW Кнопка замыкающая 1