32-полосный анализатор звукового спектра на Arduino

Предлагаю для повторения простой 32-полосный анализатор частотного спектра аудио сигнала с использованием Arduino. Благодаря применению в проекте Arduino схема значительно упростилась, и её сможет повторить любой аудиоэнтузиаст, студент или новичок, обладающий базовыми знаниями об электронных компонентах, программировании на Arduino и C. Компоненты, используемые в этом проекте, легко доступны и недороги.

32-полосный анализатор звукового спектра на Arduino

Основные характеристики этого анализатора частотного спектр:

  • Использует легко устанавливаемые библиотеки «arduinoFFT» и «MD_MAX72xx».
  • Поддерживаются пять различных режимов отображения, которые можно переключать с помощью кнопки.
  • Левый и правый каналы аудиосигнала микшируются, поэтому вы не пропустите ни одного удара.
  • В прототипе используется светодиодный матричный дисплей 32x8, его можно легко изменить и модифицировать.
  • Звук может подаваться через выход для наушников или линейный выход музыкальной системы/усилителя.

Требуемые компоненты:

 

• Arduino Nano или Uno (я пробовал с Nano и Uno, должно работать и с другими моделями);
• Светодиодный матричный дисплей 32x8 — 1 шт;
• Кнопочный переключатель — 1 шт;  
• Конденсатор 100нф — 2 шт;  
• Резистор 5 кОм — 3 шт;  
• Резистор 10 кОм — 1 шт;  
• Резистор 100 кОм — 2 шт;  
• Блок питания 5 В;  

Номиналы резисторов не очень строгие, вы можете выбрать любое ближайшее значение. Убедитесь, что резисторы на 100к имеют одинаковое значение!

 

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

32-полосный анализатор звукового спектра на Arduino, схема

Описание устройства

Плата Arduino (ATmega328P) имеет встроенный аналого-цифровой преобразователь (АЦП), который используется здесь для преобразования входного аудиосигнала в цифровые образцы. АЦП настроен на выборку входного сигнала с тактовой частотой 38,46 кГц. Это достигается путем настройки прескалера АЦП на 32. Частота дискретизации 38,64 кГц означает, что цифровые сэмплы могут воспроизводить входную частоту до 19,32 кГц (теорема Найквиста), что достаточно хорошо для аудиосигналов.

Левый и правый аудиоканалы смешиваются и подаются на аналоговый вход A0 АЦП. Вы можете использовать аудиоразветвитель, для того, чтобы одновременно подавать одну и ту же музыку на анализатор спектра и на другой усилитель (при необходимости).

АЦП настроен на использование внешнего опорного напряжения. В этом проекте опорное напряжение получается от источника стабилизированного напряжения 3,3 В на плате Arduino. Поскольку аналоговый сигнал колеблется выше и ниже нулевого уровня напряжения, нам необходимо смещение постоянного тока на аналоговом входе АЦП. Это гарантирует, что выход АЦП не будет ограничивать отрицательные циклы входного сигнала. То же самое стабилизированное напряжение 3,3 В делится на два резисторами на 100к, и затем подается на аналоговый вход для смещения постоянного тока. При таком смещении постоянного тока АЦП будет выдавать на выходе 512, даже если входной сигнал отключен. Позже в коде это число 512, вызванное смещением постоянного тока, вычитается, так что показания представляют фактическое изменение входного сигнала.

Библиотека ArduinoFFT — это сердце кода, которое выполняет преобразование входного аналогового сигнала в частотный спектр. Я обнаружил, что эта библиотека проста в использовании и обеспечивает наиболее точный результат для этого проекта. Прототип настроен на получение 64 выборок и выполняет FFT с этими выборками. Библиотека ArduinoFFT может выполнять FFT выборок от 16 до 128, это можно настроить в программе. Но библиотека arduinoFFT довольно медленная при расчете со 128 выборками, поэтому для приемлемой работы я сделал 64 выборки.

4285444260.jpg

Дисплей, используемый в этом проекте, представляет собой светодиодную матрицу из 32 столбцов и 8 рядов. Библиотека MD_MAX72xx значительно упростила управление дисплеем. Эта библиотека предоставляет функцию включения/выключения любого количества светодиодов в столбце, который используется в этой программе. Амплитуда каждой полосы частот отображается в диапазоне от 0 до 8, в зависимости от амплитуды включается соответствующее количество светодиодов в каждом столбце.

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

 

Частотная характеристика

Частотная характеристика системы была протестирована путем подачи синусоидальной волны, генерируемой одним из веб-сайтов онлайн-генераторов сигналов. Подтверждено, что система способна реагировать на частоты до 18,6 кГц.

 

32-полосный анализатор звукового спектра на Arduino32-полосный анализатор звукового спектра на Arduino

32-полосный анализатор звукового спектра на Arduino32-полосный анализатор звукового спектра на Arduino

32-полосный анализатор звукового спектра на Arduino32-полосный анализатор звукового спектра на Arduino

Подключение входа

Существует несколько способов подачи аудиосигнала на вход анализатора спектра. Можете вывести аудиовыход LINE из музыкальной системы. Другой вариант — получить звук через выход для наушников мобильной/музыкальной системы. Я не рекомендую использовать микрофон для приема звука, поскольку уровень сигнала и частотная характеристика будут зависеть от многих факторов.

Дополнительные файлы к статье тут

Расчет импульсного трансформатора
Наши приложения в

Подписаться на новости
Введите Ваш e-mail

Усилители мощности
Блоки питания
Arduino
Программаторы
Радиоконструкторы
Прочее...