Этот простой анализатор спектра выполнен на базе отладочной платформы PIC24-EVAL с установленным микроконтроллером PIC32MX360F512L производства фирмы TechToys. Для отображения информации используется модуль с QVGA TFT 3.5" дисплеем (LVC75Z779 Eval Board) с разрешением 240×320 на базе видеопроцессора SSD1928, имеется интерфейс для подключения CMOS камеры и SD карты памяти для совместной работы с отладочными платами фирмы TechToys.
Принципиальная схема отладочной платы доступна для скачивания в разделе загрузок в конце статьи.
Принципиальная схема модуля на базе процессора SSD1928
Анализатор может быть подключен к источнику аудио сигнала с линейным выходом: звуковая карта компьютера, mp3-плеер и др.
Схема подключений на отладочной плате
Опорное напряжение АЦП микроконтроллера устанавливается на уровне 1 В при помощи потенциометра POT2, подключенного к выводу Vref+. Напряжение звукового сигнала может быть и отрицательным, но так как АЦП принимает только положительные значения, был установлен еще один потенциометр POT1, который добавляет постоянные 0.5 В к звуковому сигналу. Конденсатор служит для блокирования постоянной составляющей от источника звукового сигнала.
Программное обеспечение.
На рисунке изображена диаграмма, которая дает представление о работе микроконтроллера
Программное обеспечение для микроконтроллера написано в среде MPLAB C32 compiler компании Microchip.
АЦП микроконтроллера настроен на работу с частотой выборок 48 кГц. Когда заканчивается преобразование каждой выборки, вырабатывается прерывание, и захваченное значение помещается в буфер. Преобразование заканчивается, когда буфер, рассчитаный на хранение 2048 значений, будет заполнен. Для этого потребуется примерно 42 мс при частоте выборок 48 кГц.
Заметьте, что преобразования выполняются автоматически, в фоновом режиме. Такой режим работы предоставляет достаточно времени для выполнения вычислений над предыдущими значениями, пока идет процесс получения новых. Первое – выполнение быстрого преобразования Фурье (FFT), затем результаты преобразования масштабируются относительно шкалы по напряжению или в децибелах, и затем выполняется процедура прорисовки спектра на ЖК дисплее. При рабочей частоте 80 МГц этот процесс займет около 35 мс (вычисления и отображение на ЖК дисплее).
Алгоритм быстрого преобразования Фурье доступен для скачивания в разделе загрузок в конце статьи. Он написан на чистом Си без какой-либо оптимизации для микроконтроллеров PIC32 и использует арифметику с фиксированной точкой. Однако этот алгоритм был немного расширен для возможности вычисления 2048 точек FFT. Вычисления 2048 значений выполняются за 9 мс, однако производительность возможно повысить за счет оптимизации кода для MIPS архитектуры.
Ниже представлены изображения спектра различных сигналов полученных с помощью устройства
Прямоугольные импульсы частотой 1 кГц
Сигнал с частотной модуляцией, несущая – 7 кГц, частота модуляции – 10кГц
Сигнал с амплитудной модуляцией, несущая – 2 кГц, частота модуляции - 5 кГц
Демо-видео
Загрузки
Принципиальная схема отладочной платы PIC24-EVAL
Исходный код (Microchip MPLAB C32 compiler)
Алгоритм быстрого преобразования Фурье