Спектральный анализатор звука программа. Анализаторы спектра звука и их применение

В этом проекте аудио анализатор спектра в реальном времени реализуется с использованием 8-битного микроконтроллера PIC18F4550. Анализ спектра частот осуществляется оптимизированным 64-битным Быстрым Преобразованием Фурье (Fast Fourier Transformation, FFT, БПФ), написанном полностью на C. Выход с FFT отображается с помощью графического ЖК-дисплея 128x64 для визуализации звукового сигнала в реальном времени.

Для того чтобы выполнять вычисления FFT над аудио сигналом, необходимо подготовить аудио данные для PIC18F4550. МК имеет несколько аналогово-цифровых преобразователя (АЦП), которые могут быть использованы для измерения напряжения от 0В до 5В с 10-битной точностью (0-1023). Типичный сигнал линейного аудио выхода, является аналоговой волной с амплитудой 2В относительно 0В (т.е. сигнал переменного тока в диапазоне от +1В до -1В), как показано на следующей осциллограмме (с вывода W2 демо платы):

На картинке показана полноразмерная синусоидальная волна 5000 Гц, генерируемая с помощью ПК. Если бы мы подавали этот сигнал непосредственно на PIC, мы имели бы очень низкий диапазон входного напряжения (0-0.5В), и могли бы сделать выборку только верхней части сигнала, что сделало бы БПФ неверным.
Для того чтобы правильно сделать выборку сигнала, надо сделать две вещи. Во-первых, мы должны усилить сигнал, чтобы гарантировать, что мы можем максимально использовать диапазон 0-5В. Во-вторых, мы должны сдвинуть землю сигнала (0 вольт) на "виртуальную землю" 2.5В. Это позволит PIC сделать выборки и положительного, и отрицательного сигнала. Для этого на демо плате используется простой интегральный усилитель (LM386-1). Поскольку микросхема питается от источника питания 0В и 5В, она имеет удобный побочный эффект – смещение сигнала в середину необходимого диапазона. LM386-1 была использована т.к. это дешево и просто, однако вы можете использовать операционный усилитель с полным размахом входного и выходного сигнала для достижения этого с несколькими внешними элементами.

Следующая осциллограмма показывает сигнал с LM386-1 (для сигнала показанного выше), граничный диапазон напряжений установлен на 5 вольт (с контакта W3 демо платы):

Аппаратная часть смешивает линейный стерео вход, используя два резистора 10кОм, которые действуют как простой смеситель. Затем сигнал передается на LM386-1 через потенциометр 10кОм, который позволяет скорректировать сигнал. Далее выход с усилителя LM386-1 передается через простой RC фильтр, который обрезает сигнал примерно до 10 кГц. Затем полученный сигнал подается на контакт АЦП PIC18F4550. Фильтр 10 кГц действует как "сглаживающий" фильтр для БПФ, который не может правильно определить сигнал с частотой более чем 10 кГц. RC фильтр представляет собой очень простой тип фильтра (и очень неэффективный), но он был выбран, поскольку он легко изготавливается, и требует только 2 пассивных элемента. Обычно профессиональный анализатор спектра осуществляет сглаживание фильтром на 80% частоты Найквиста для БПФ (см. ниже), но, поскольку мы ограничены скоростью PIC, в этом проекте это невозможно сделать.

Демо плата также контролирует стандартный ЖК-дисплей с точечной матрицей 128x64, а также 3 светодиода (для тестирования преобразования звук-свет). Кроме того, есть 2 переключателя, позволяющие пользователю управлять выходом ЖК-дисплея в зависимости от того, что измеряется и как оно будет отображаться. Второе гнездо позволяет напрямую подать входной сигнал на другие аудио устройства, такие как наушники или колонки.

Вот принципиальная схема демо платы:

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

Прошивка

Прошивка полностью написана на C и может быть скачана ниже. Прошивка делится на 4 части:

Выборки АЦП

АЦП делает выборки уровня напряжения на RA0 каждые 50 мкс. Это дает нам частоту дискретизации 20 кГц (20.000 раз в секунду). Для БПФ важно, чтобы выборки брались равномерно и аккуратно. Для этого есть небольшая задержка в цикле выборки, который калибруется с помощью осциллографа на контакте W4 демо платы. Суммарная скважность прямоугольного сигнала должна быть ровно 50 мкс. АЦП делает выборки с полным 10-битным разрешением, а затем сдвигается в сторону младших разрядов при помощи 512, чтобы установить виртуальную землю входного сигнала обратно в ноль. Это значит, что полученные выборки находятся в диапазоне от -512 до +512 именно так, как требуется математике БПФ.

Маршрутизация АЦП занимает немногим более 64x50 Us = 32 мс (3200 мкс) во время выполнения для каждого цикла.

64-битная БПФ

Подпрограмма БПФ была взята из примера, приведенного в интернете (ссылки на исходный код можно найти в исходном коде). Математика БПФ является сложной и я не претендую на полное её понимание! Код был уменьшен до минимально необходимых команд и портирован для PIC18F. PIC18F4550 имеет аппаратную функцию умножения 8x8 в ALU процессора, поэтому я также оптимизировал расчеты, чтобы компилятор правильно использовал возможности чипа.

То, что 18F имеет аппаратный умножитель 8x8, действительно являться ключом к расчету БПФ таким маломощным чипом в реальном времени. Скорость цикла имеет преимущество даже по сравнению с 64-битными вычислениями в массиве.

Расчет абсолютной величины

Выход из БПФ 32 "сложных" числа, которые состоят из действительной и мнимой части, представленными ​​двумя массивами (вы должны прочитать о БПФ в Google, если вы хотите узнать больше). Для того, чтобы показать результат в осмысленном виде, необходимо рассчитать абсолютную величину комплексного числа, что осуществляется с помощью расчета Пифагора для вычисления расстояния до комплексного числа от начала координат 0. Это включает в себя вычисление корня из числа, что реализуется программным обеспечением очень быстро, используя целые SQRT() эквивалентны, поскольку любые операции с плавающей точкой будут слишком медленными.

Процедура расчета БПФ и абсолютной величины занимает примерно 70 мс (7000 мкс) для каждого цикла

Обновление ЖК-дисплея

ЖК-дисплей 128x64 должен обновлятья​​ как можно быстрее. Для этого я использовал очень простой алгоритм рисования диаграммы, который требует минимально возможного количества команд дисплею.

Два переключателя на плате позволяют пользователю переключаться между увеличением выхода x1 и x8 (так как в среднем частота музыки довольно низкая), а также между линейным выходом или логарифмическим выходом (на основе дБ). Это просто разные способы показа выхода в зависимости от того, хотите те ли вы точное представление об уровне частоты, или более приятный глазу выход.

Процедура обновления ЖК-дисплея занимает около 45 мс для каждого обновления.

Общая (средняя) скорость БПФ

Примерная скорость на дисплее анализатора спектра один кадр в 150 мс, в результате чего общая частота кадров около 6.5 кадров в секунду (или 10 кадров в секунду без ЖК-дисплея). Это можно легко улучшить сокращением необходимых блоков частот (что сократило бы отбор проб и время выполнения БПФ) или с помощью устройства отображения с более быстрым обновлением. Если вы хотели бы использовать БПФ для управления светодиодами светового устройства, можно легко сделать и то и то.

Блоки частот

Частота Найквиста в БПФ (самая высокая частота, которую он может обнаружить) составляет 10 кГц. 32 блока частот равномерно распределяются во всем диапазоне, однако, из-за работы подпрограммы БПФ, нельзя использовать нижние блоки. Это значит, что отображаемая частота для каждого блока выглядит следующим образом (в Гц):

  • 1: 312.5 - 625
  • 2: 625 - 937.5
  • 3: 937.5 - 1250
  • 4: 1250 - 1562.5
  • 5: 1562.5 - 1875
  • 6: 1875 - 2187.5
  • 7: 2187.5 - 2500
  • 8: 2500 - 2812.5
  • 9: 2812.5 - 3125
  • 10: 3125 - 3437.5
  • 11: 3437.5 - 3750
  • 12: 3750 - 4062.5
  • 13: 4062.5 - 4375
  • 14: 4375 - 4687.5
  • 15: 4687.5 - 5000
  • 16: 5000 - 5312.5
  • 17: 5312.5 - 5625
  • 18: 5625 - 5937.5
  • 19: 5937.5 - 6250
  • 20: 6250 - 6562.5
  • 21: 6562.5 - 6875
  • 22: 6875 - 7187.5
  • 23: 7187.5 - 7500
  • 24: 7500 - 7812.5
  • 25: 7812.5 - 8125
  • 26: 8125 - 8437.5
  • 27: 8437.5 - 8750
  • 28: 8750 - 9062.5
  • 29: 9062.5 - 9375
  • 30: 9375 - 9687.5
  • 31: 9687.5 - 10000

Заключение

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

Также я хотел бы сказать отдельное спасибо моему хорошему другу Richard Stagg, без его математической настойчивости этот проект, наверное, никогда не был бы завершен!

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК PIC 8-бит

PIC18F4550

1 В блокнот
U2 Аудио усилитель

LM386

1 В блокнот
U3 Линейный регулятор

LM7805CT

1 В блокнот
D1 Выпрямительный диод

1N4001

1 В блокнот
С1 Конденсатор 1 нФ 1 В блокнот
С2 Конденсатор 47 нФ 1 В блокнот
С3-С5, C7 Конденсатор 100 нФ 3 В блокнот
С6 Электролитический конденсатор 10 мкФ 1 В блокнот
R1, R2, R5, R7, R9, R10 Резистор

10 кОм

1

SoundCard Oszilloscope – программа превращающая компьютер в двухканальный осциллограф, двухканальный генератор низкой частоты и анализатор спектра

Доброго дня уважаемые радиолюбители!
Каждый радиолюбитель знает, что для создания более-менее сложных радиолюбительских устройств необходимо иметь в своем распоряжение не только мультиметр. Сегодня в наших магазинах можно купить практически любой прибор, но – есть одно “но” – стоимость приличного качества любого прибора не менее нескольких десятков тысяч наших рублей, и не секрет, что для большинства россиян это значительные деньги, а посему эти приборы недоступны вовсе, или радиолюбитель покупает приборы давно находящиеся в употреблении.
Сегодня на сайте , мы попробуем оснастить лабораторию радиолюбителя бесплатными виртуальными приборами – цифровой двухканальный осциллограф , двухканальный генератор звуковой частоты , анализатор спектра . Единственный недостаток этих приборов – все они работают только в полосе частот от 1 Гц до 20000 Гц. На сайте уже давалось описание похожей радиолюбительской программы: “ “ – программа превращающая домашний компьютер в осциллограф .
Сегодня я хочу предложить вашему вниманию очередную программу – “ SoundCard Oszilloscope “. Меня эта программа привлекла неплохими характеристиками, продуманным дизайном, простотой изучения и работы в ней. Данная программа на английском, русского перевода нет. Но я не считаю это недостатком. Во-первых – разобраться как работать в программе очень легко, вы сами это увидите, во-вторых – когда нибудь вы обзаведетесь хорошими приборами (а у них все обозначения на английском, хотя сами китайские) и сразу и легко освоитесь с ними.

Программа разработана C. Zeitnitz и является бесплатной, но только для частного использования. Лицензия на программу стоит около 1500 рублей, и есть еще так называемая “частная лицензия” – стоимостью около 400 рублей, но это скорее пожертвование автору на дальнейшее совершенствование программы. Мы, естественно, будем пользоваться бесплатной версией программы, которая отличается только тем, что при ее запуске каждый раз появляется окошко с предложением купить лицензию.

Скачать программу (последняя версия на декабрь 2012 года):

(28.1 MiB, 52,914 hits)

Для начала давайте разберемся с “понятиями”:
Осциллограф – прибор предназначенный для исследования, наблюдения, измерения амплитудных и временных интервалов.
Осциллографы классифицируются:
по назначению и способу вывода информации:
– осциллографы с периодической разверткой для наблюдения сигналов на экране (на Западе их называют oscilloscop)
– осциллографы с непрерывной разверткой для регистрации кривой сигнала на фотоленте (на Западе называются oscillograph)
по способу обработки входного сигнала:
– аналоговый
– цифровой

Программа работает в среде не ниже W2000 и включает в себя:
- двухканальный осциллограф с частотой пропускания (зависит от звуковой карты) не менее чем от 20 до 20000 Гц;
– двухканальный генератор сигналов (с аналогичной генерируемой частотой);
– анализатор спектра
– а также имеется возможность записи звукового сигнала для его последующего изучения

Каждая из этих программ имеет дополнительные возможности, которые мы рассмотрим в ходе их изучения.

Начнем мы с генератора сигналов (Signalgenerator):

Генератор сигналов, как я уже говорил, – двухканальный – Channel 1 и Channel 2.
Рассмотрим назначение его основных переключателей и окошек:
1 кнопки включения генераторов;
2 окно установки формы выходного сигнала:
sine – синусоидальный
triangle - треугольный
square - прямоугольный
sawtooth - пилообразный
white noise – белый шум
3 регуляторы амплитуды выходного сигнала (максимальная – 1 вольт);
4 регуляторы установки частоты (нужную частоту можно установить вручную в окошках под регуляторами). Хотя на регуляторах максимальная частота – 10 кГц, но в нижних окошках можно прописать любую допускаемую частоту (зависит от звуковой карты);
5 окошки для выставления частоты вручную;
6 включение режима “Sweep – генератор”. В этом режиме выходная частота генератора периодически изменяется от минимального значения установленного в окошках “5” до максимального значения установленного в окошках “Fend” в течение времени, установленного в окошках “Time”. Этот режим можно включить или для любого одного канала или сразу для двух каналов;
7 окна для выставления конечной частоты и времени Sweep режима;
8 программное подключение выхода канала генератора к первому или второму входному каналу осциллографа;
9 - установка разности фаз между сигналами с первого и второго каналов генератора.
10 - у становка скважности сигнала (действует только для прямоугольного сигнала).

Теперь давайте рассмотрим сам осциллограф:

1 Amplitude - регулировка чувствительности канала вертикального отклонения
2 Sync – позволяет (установив или сняв галочку) производить раздельную, или одновременную регулировку двух каналов по амплитуде сигналов
3, 4 позволяет разнести сигналы по высоте экрана для их индивидуального наблюдения
5 установка времени развертки (от 1 миллисекунды до 10 секунд, при этом в 1 секунде – 1000 миллисекунд)
6 запуск/остановка работы осциллографа. При остановке на экране сохраняется текущее состояние сигналов, а также появляется копка Save (16 ) позволяющая сохранить текущее состояние на компьютере в виде 3-х файлов (текстовые данные исследуемого сигнала, черно-белое изображение и цветное изображение картинки с экрана осциллографа в момент остановки)
7 Trigger – программное устройство, которое задерживает запуск развертки до тех пор, пока не будут выполнены некоторые условия и служит для получения стабильного изображения на экране осциллографа. Имеется 4 режима:
включение/выключение . При выключенном триггере, изображение на экране будет выглядеть “бегущим” или даже “размазанным”.
автоматический режим . Программа сама выбирает режим (нормальный или одиночный).
нормальный режим . В этом режиме осуществляется непрерывная развертка исследуемого сигнала.
одиночный режим . В этом режиме осуществляется одноразовая развертка сигнала (с промежутком времени, установленным регулятором Time).
8 выбор активного канала
9 Edge – тип запуска сигнала:
- rising – по фронту исследуемого сигнала
falling – по спаду исследуемого сигнала
10 Auto Set – автоматическая установка времени развертки, чувствительности канала вертикального отклонения Amplitude, а так-же изображение выгоняется в центр экрана.
11 - Channel Mode – определяет как будут выводится сигналы на экран осциллографа:
single – раздельный вывод двух сигналов на экран
- СН1 + СН2 – вывод суммы двух сигналов
СН1 – СН2 – вывод разницы двух сигналов
СН1 * СН2 – вывод произведения двух сигналов
12 и 13 выбор отображения на экране каналов (или любой из двух, или два сразу, рядом изображается величина Amplitude )
14 вывод осциллограммы канала 1
15 вывод осциллограммы канала 2
16 уже проходили – запись сигнала на компьютер в режиме остановки осциллографа
17 шкала времени (у нас регулятор Time стоит в положении 10 миллисекунд, поэтому шкала отображается от 0 до 10 миллисекунд)
18 Status – показывает текущее состояние триггера а также позволяет выводить на экран следующие данные:
- HZ and Volts – вывод на экран текущей частоты напряжения исследуемого сигнала
cursor – включение вертикальных и горизонтальных курсоров для измерения параметров исследуемого сигнала
log to Fille – посекундная запись параметров исследуемого сигнала.

Производство измерений на осциллографе

Для начала давайте настроим генератор сигналов:

1. Включаем канал 1 и канал 2 (загораются зеленные треугольники)
2. Устанавливаем выходные сигналы – синусоидальный и прямоугольный
3. Устанавливаем амплитуду выходных сигналов равную 0,5 (генератор генерирует сигналы с максимальной амплитудой 1 вольт, и 0,5 будет означать амплитуду сигналов равную 0,5 вольта)
4. Устанавливаем частоты в 50 Герц
5. Переходим в режим осциллографа

Измерение амплитуды сигналов:

1. Кнопкой под надписью Measure выбираем режим HZ and Volts , ставим галочки у надписей Frequency и Voltage . При этом у нас сверху появляются текущие частоты для каждого из двух сигналов (почти 50 герц), амплитуда полного сигнала Vp-p и эффективное напряжение сигналов Veff .
2. Кнопкой под надписью Measure выбираем режим Cursors и ставим галочку у надписи Voltage . При этом у нас появляются две горизонтальные линии, а внизу надписи, показывающие амплитуду положительной и отрицательной составляющей сигнала (А ), а также общий размах амплитуды сигнала (dA ).
3. Выставляем горизонтальные линии в нужном нам положении относительно сигнала, на экране мы получим данные по их амплитуде:

Измерение временных интервалов:

Проделываем те-же операции, что и для измерения амплитуду сигналов, за исключением – в режиме Cursors галочку ставим у надписи Time . В результате вместо горизонтальных мы получим две вертикальные линии, а внизу будет высвечиваться временной интервал между двумя вертикальными линиями и текущая частота сигнала в этом временном интервале:

Определение частоты и амплитуды сигнала

В нашем случае специально высчитывать частоту и амплитуду сигнала нет необходимости – все отображается на экране осциллографа. Но если вам придется воспользоваться первый раз в жизни аналоговым осциллографом и вы не знаете как определить частоту и амплитуду сигнала мы в учебных целях рассмотрим и этот вопрос.

Установки генератора оставляем как и были, за исключением – амплитуду сигналов устанавливаем 1,0, а установки осциллографа выставляем как на картинке:

Регулятор амплитуды сигнала выставляем на 100 милливольт, регулятор времени развертки на 50 миллисекунд, и получаем картинку на экране как сверху.

Принцип определения амплитуды сигнала:
Регулятор Amplitude у нас стоит в положении 100 милливольт , а это означает, что цена деления сетки на экране осциллографа по вертикали составляет 100 милливольт. Считаем количество делений от нижней части сигнала до верхней (у нас получается 10 делений) и умножаем на цену одного деления – 10*100= 1000 милливольт= 1 вольт , что означает, что амплитуда сигнала у нас от верхней точки до нижней составляет 1 вольт. Точно так-же можно измерить амплитуду сигнала на любом участке осциллограммы.

Определение временных характеристик сигнала:
Регулятор Time у нас стоит в положении 50 миллисекунд . Количество делений шкалы осциллографа по горизонтали равно 10 (в данном случае у нас на экране помещается 10 делений), делим 50 на 10 и получаем 5, это значит что цена одного деления будет равна 5 миллисекундам. Выбираем нужный нам участок осциллограммы сигнала и считаем в какое количество делений он умещается (в нашем случаем – 4 деления). Умножаем цену 1 деления на количество делений 5*4=20 и определяем что период сигнала на исследуемом участке составляет 20 миллисекунд .

Определение частоты сигнала.
Частота исследуемого сигнала определяется по обычной формуле. Нам известно, что один период нашего сигнала равен 20 миллисекунд , остается узнать сколько периодов будет в одной секунде- 1 секунда/20 миллисекунд= 1000/20= 50 Герц.

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

Анализатор спектра – прибор для наблюдения и измерения относительного распределения энергии электрических (электромагнитных) колебаний в полосе частот.
Низкочастотный анализатор спектра (как в нашем случае) предназначен для работы в диапазоне звуковых частот и используется, к примеру, для определения АЧХ различных устройств, при исследовании характеристик шума, настройки различной радиоаппаратуры. Конкретно, мы можем определить амплитудно-частотную характеристику собираемого усилителя звуковой частоты, настроить различные фильтры и т.д.
Ничего сложного в работе с анализатором спектра нет, ниже я приведу назначение основных его настроек, а вы сами, уже опытным путем легко разберетесь как с ним работать.

Вот так выглядит анализатор спектра в нашей программе:

Что здесь – что:

1. Вид отображения шкалы анализатора по вертикали
2. Выбор отображаемых каналов с генератора часто и вида отбражения
3. Рабочая часть анализатора
4. Кнопка записи текущего состояния осциллограммы при остановке
5. Режим увеличения рабочего поля
6. Переключение горизонтальной шкалы (шкалы частоты) из линейного в логарифмический вид
7. Текущая частота сигнала при работе генератора в свип-режиме
8. Текущая частота в позиции курсора
9. Указатель коэффициента гармоник сигнала
10. Установка фильтра для сигналов по частоте

Просмотр фигур Лиссажу

Фигуры Лиссажу – замкнутые траектории, прочерчиваемые точкой, совершающей одновременно два гармонических колебаниях в двух взаимно перпендикулярных направлениях. Вид фигур зависит от соотношения между периодами (частотами), фазами и амплитудами обоих колебаний.

Если подать на входы «X » и «Y » осциллографа сигналы близких частот, то на экране можно увидеть фигуры Лиссажу. Этот метод широко используется для сравнения частот двух источников сигналов и для подстройки одного источника под частоту другого. Когда частоты близки, но не равны друг другу, фигура на экране вращается, причем период цикла вращения является величиной, обратной разности частот, например, период оборота равен 2 с - разница в частотах сигналов равна 0,5 Гц. При равенстве частот фигура застывает неподвижно, в любой фазе, однако на практике, за счет кратковременных нестабильностей сигналов, фигура на экране осциллографа обычно чуть-чуть подрагивает. Использовать для сравнения можно не только одинаковые частоты, но и находящиеся в кратном отношении, например, если образцовый источник может выдавать частоту только 5 МГц, а настраиваемый источник - 2,5 МГц.

Я не уверен, что эта функция программы вам пригодится, но если вдруг потребуется, то я думаю, что вам легко удастся разобраться в этой функции самостоятельно.

Функция записи звукового сигнала

Я уже говорил, что программа позволяет записать какой-либо звуковой сигнал на компьютере с целью его дальнейшего изучения. Функция записи сигнала не представляет сложностей и вы легко разберетесь как это делать:

Программа “Компьютер-осциллограф”

Как вы думаете, что делают девушки, когда собираются вместе? Идут по магазинам, фотографируются, ходят по салонам красоты? Да, так и есть, но так делают далеко не все. В данной статье пойдёт речь о том, как две девушки решили собрать радиоэлектронное устройство своими руками.

Почему именно анализатор-визуализатор спектра?

Ведь программных решений данной задачи довольно много и вариантов аппаратной реализации так же немало. Во-первых, очень хотелось поработать с большим количеством светодиодов (т.к. мы уже собирали led-куб, каждый для себя, но в небольших размерах), во-вторых, применить на практике полученные знания по цифровой обработке сигналов и, в-третьих, в очередной раз попрактиковаться в работе с паяльником.

Разработка устройства

Т.к. брать готовое решение и делать строго по инструкции – это скучно и неинтересно, поэтому мы решили разрабатывать схему сами, лишь немного опираясь на уже созданные устройства.

В качестве дисплея выбрали светодиодную матрицу 8х32. Можно было использоваться готовые led-матрицы 8х8 и собирать из них, но мы решили не отказывать себе в удовольствии посидеть вечерком с паяльником, и поэтому собирали дисплей сами из светодиодов.

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

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

В качестве интерфейса подключения к компьютеру (или другому устройству, способному передавать аудио сигнал) был выбран разъём TRS (mini-jack 3.5 mm).

Сборка устройства

Сборку устройства начинаем с того, что делаем макет лицевой панели устройства.

Материалом для лицевой панели был выбран чёрный пластик толщиной 5мм (т.к. диаметр линзы диода также 5мм). По разработанному макету размечаем, вырезаем лицевую панель под необходимый размер и просверливаем отверстия в пластике под светодиоды.

Таким образом получаем готовую лицевую панель, на которой можно уже собирать дисплей.

В качестве светодиодов для матрицы были использованы двухцветные (красный-зелёный) с общим катодом GNL-5019UEUGC. Перед началом сборки матрицы, руководствуясь правилом “лишний контроль не повредит” все светодиоды, а именно 270 шт. (брали с запасом на всякий случай), были проверены на работоспособность (для этого было собрано тестирующее устройство, включающее в себя разъём, резистор 200Ом и источник питания на 5В).

Дальше разгибаем светодиоды следующим образом. Аноды красного и зеленого диодов отгибаем в одну сторону (вправо), катод отгибаем в другую сторону, при этом следим, чтобы катод был ниже чем аноды. И затем под 90° загибаем катод вниз.

Сборку матрицы начинаем с правого нижнего угла, сборку производим по столбцам.

Вспоминая про правило “лишний контроль не повредит”, после одного-двух спаянных столбцов, проверяем работоспособность.

Готовая матрица выглядит следующим образом.

Вид сзади:

По разработанной схеме паяем схему управления строками и столбцами, распаиваем шлейфы и место под Arduino.

Было решено так же выводить не только амплитудно-частотны, но и фазо-частотный спектр, а также выбирать количества отсчетов для отображения (32,16,8,4). Для этого были добавлены 4 переключателя: один на выбор типа спектра, два на выбор количества отсчётов, и один на включение и выключение устройства.

Написание программы

В очередной раз руководствуемся нашим правилом и убеждаемся, что наш дисплей полностью в рабочем состоянии. Для этого пишем простую программу, которая полностью зажигает все светодиоды на дисплее. Естественно, по закону Мёрфи, нескольким светодиодам не хватало тока, и их необходимо было заменить.

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

Сборка конечного устройства

В конце мы имеем лицевую панель, а под ней куча проводов, которые необходимо чем-то закрыть, да и переключатели нужно на чём-то закрепить. До этого были мысли сделать корпус из остатков пластика, но мы не вполне представляли, как это будет конкретно выглядеть и как это сделать. Решение проблемы пришло довольно неожиданно. Прогулявшись по строительному магазину, мы обнаружили пластиковый цветочный горшок, который на удивление идеально подошёл по размеру.

Дело оставалось за малым, разметить отверстия под разъёмы, кабели и переключатели, а также вырезать две боковые панели из пластика.

В итоге, собрав всё воедино, подключив устройство к компьютеру мы получили следующее:

Амплитудно-частотный спектр (32 отсчёта):

Амплитудно-частотный спектр (16 отсчётов):

Амплитудно-частотный спектр (8 отсчётов):

Амплитудно-частотный спектр (4 отсчёта):

Фазо-частотный спектр:

Вид задней панели:

Видео работы устройства

Для большей наглядности видео снималось в темноте. На видео устройство выводит амплитудно-частотный спектр, а затем на 7 секунде переключаем его в режим фазо-частотного спектра.

Список необходимых элементов

  1. Светодиоды GNL-5019UEUGC – 256 шт. (Для дисплея)
  2. Транзисторы n-p-n KT863A – 8 шт. (Для управления строками)
  3. Транзисторы p-n-p С32740 – 32 шт. (Для управления столбцами)
  4. Резисторы 1кОм – 32 шт. (Для ограничения тока базы p-n-p транзисторов)
  5. Дешифраторы 3/8 IN74AC138 – 4 шт. (Для выбора столбца)
  6. Дешифраторы 2/4 IN74AC139 – 1 шт. (Для каскадирования дешифраторов)
  7. Монтажная плата 5х10см – 2 шт.
  8. Шлейфы
  9. Arduino Pro micro – 1 шт.
  10. Разъём mini-jack 3.5мм – 1 шт.
  11. Переключатель – 4 шт.
  12. Чёрный пластик 720*490*5 мм – 1 лист. (Для лицевой панели)
  13. Горшок цветочный чёрный 550*200*150 мм – 1 шт. (Для корпуса)

Спектральные анализаторы широко используются в электронной промышленности для анализа частотного спектра радиочастотных и аудиосигналов. Рассматривая спектр сигнала, он может выявлять элементы сигнала и производительность создающей их схемы, которая была бы невозможна с использованием других средств.

Спектральные анализаторы способны выполнять самые разнообразные измерения, а это означает, что они являются неоценимым инструментом для лабораторий разработки и испытаний радиочастотных технологий, а также имеют много применений для полевых услуг специалиста.

Анализаторы спектра сигналов определяют величину входного сигнала в зависимости от частоты в полном диапазоне частот прибора. Основное назначение - измерять мощность спектра неизвестных и известных сигналов. Входной сигнал, который измеряет анализатор спектра, является электрическим. Несмотря на это, спектральные составы других сигналов, таких как волны акустического давления и оптические световые волны, можно рассматривать с помощью соответствующего преобразователя. Существуют также анализаторы оптического спектра, которые используют прямые оптические методы, такие как монохроматор для проведения измерений.

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

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

Преимущества анализаторов супергетеродинного спектра

Анализатор супергетеродинного спектра имеет преимущества. Устройство способно работать в широком диапазоне частот. Используя принцип супергетеродинного анализа, этот анализатор спектра способен работать на очень высоких частотах - многие расширяют зону покрытия до многих ГГц.

Широкая полоса пропускания: опять же в результате принципа супергетеродина этот тип анализатора спектра может иметь очень широкие интервалы сканирования. Они могут распространяться на несколько ГГц в одном сканировании.

Не так дорого, как другие технологии анализатора спектра. Хотя спектральные анализаторы всех типов дороги, модели FFT более дороги для такого же уровня производительности в результате высокопроизводительных АЦП в передней части. Это означает, что для того же уровня производительности базы, супергетеродин или анализатор развертки спектра дешевле.