Семиполосный спектроанализатор звука на микроконтроллере

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

Основой устройства являются микросхемы AN6884 (можно и транзисторы, но их понадобится много и эффект будет хуже, а чувствительность ниже). Вот схема включения микросхемы:

В качестве индикаторов применены светодиодные линейные шкалы или обычные светодиоды. Если использовать линейные шкалы, то печатную плату вряд ли удастся сделать, лучше использовать готовую макетную плату. На одной стороне разместить индикаторы, с другой – всё остальное.

Для первой схемы: вместо пятиразрядной AN6884 можно использовать любые аналогичные индикаторы уровня сигнала с соответствующими им схемами включения. Резистор R подбирается в зависимости от напряжения питания (от 50 Ом, при 7В до 100 Ом, при 12В).

Можно использовать схему с транзисторами. Для второго варианта схемы используются транзисторы типа КТ315 или КТ3102, диоды 1n4148 или КД522. Для регулировки уровня перед фильтром устанавливаются подстроечные резисторы на 100кОм, как на первой схеме. При слабом уровне сигнала придётся использовать предусилитель.

Для каждого столбика необходима одна микросхема (или несколько транзисторов в зависимости от количества светодиодов в столбце) и фильтр для выделения определённой частоты. Количество столбиков может быть любым, только придётся подбирать фильтры для каждого. Примеры фильтров:

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

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

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

Регулировка подсветки была основана на аппаратном ШИМ, на выходе OC2. В архиве доступны программы для дисплеев 16х2, 20х2, 24х2, и 20х4. В принципе, прошивку можно приспособить практически для любого экрана (с контроллером HD44780), так что если у вас есть дисплей которого анализатор не поддерживает, не трудно переделать имеющиеся.

  1. Масса сигнала до точки „Agnd” на плате, тогда массы анализатора и устройства не могут быть связаны друг с другом.
  2. Анализатор можно пополнить симметрично, +-2.5 V, „Agnd” станет массой и можно его соединить с массой устройства.
  3. Если массы анализатора и устройства должны быть соединены, и не имеет возможности пополнения анализатора симметрично, следует добавить постоянную составляющую сигнала, чтобы поднять его до уровня 2,5 В. Массы соединяем и сигнал увеличиваем делителем R/R (резисторы порядка 100 кОм), соединяя его по шине питания. Сигнал на делитель подаем через конденсатор (порядка 1 мкФ).

Как настроить анализатор для работы с компьютером. Помните, что если вы хотите встроить его в усилителе или другом устройстве, примите во внимание тот факт, что там могут появиться другие уровни сигнала. Если у вас есть возможность подачи сигнала с генератора (с компьютера через line-in) - это упростит настройку.

Подключите и запустите схему, подсоедините выход звуковой карты компьютера, массу к Agnd. Массы системы и компьютера не могут быть связаны! Генератор функции установите на синус, частота 400 Гц, усиление примерно на 80%.

Левый потенциометр установите так, чтобы была отклонена только одна сегмент. Измените частоту генератора на 10 кГц, правый потенциометр установите таким же образом.

Для точной калибровки понадобятся две программы - „генератор” и „осциллограф”. Настройте что сигнал не искажался. Элементы, использованные для сборки входного фильтра, должны быть идентичны тем, как на схеме, это касается в первую очередь конденсаторов. На приведённых далее рисунках сверху искажённый сигнал, а под ним чистый, чего необходимо достичь.

Видео работы

Здравствуй, странник!

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

Этот спектроанализатор разрабатывался мной для встройки в стационарный усилитель звуковой частоты. Имеет он десять каналов выделения определенных частот из звукового спектра (32 Гц; 64 Гц; 125 Гц; 250 Гц; 500 Гц; 1 кГц; 2 кГц; 4 кГц; 8 кГц; 16 кГц), соответственно для каждого канала отводится столбик светодиодов на индикаторе. Частоты, лежащие между двух соседних каналов, подавляются не полностью и немного отображаются в обоих каналах. Также имеются два канала отображения общих уровней сигналов в левом и правом звуковом канале усилителя. Отображаются все уровни на матричном светодиодном индикаторе.

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

Для работы спектроанализатора нужен биполярный источник питания с напряжениями +5В и -5В в каждом плече соответственно. Отрицательный источник питает только входной каскад, поэтому от него потребляется сравнительно маленький ток, равный 36,5 миллиамперам. С положительным источником питания дела обстоят иначе: он питает все блоки спектроанализатора и потребляемый от него ток может импульсно изменятся от 48,5 до 675 миллиампер. Чем больше светодиодов в матрице зажжено - тем больший ток потребляется. Чем больше разница в количестве зажженных светодиодов между соседними столбцами - тем круче будут импульсы потребляемого тока. Это обусловлено динамическим типом индикации. При необходимости напряжение каждого источника питания можно повысить (в случае отрицательного источника - понизить) вплоть до 15В. Однако следует принимать во внимание, что сопротивления токогоасящих резисторов прийдется пересчитать и рассеиваямая тепловая можность на каждом резисторе возростет, а примененные мной SMD-резисторы 1206 могут рассеять не больше 0,25 Вт тепла.

Спектроанализатор состоит из трех основных блоков:

  1. Блок входных усилителей и фильтров;
  2. Блок управления индикацией;
  3. Блок матричного светодиодного индикатора.

1. Блок входных усилителей и фильтров.

Схема блока приведена на рисунке:

Состоит он из двенадцати отдельных каналов обработки сигнала: 10 каналов анализатора спектра и 2 канала индикатора уровня сигнала.

Звуковой сигнал от источника сигнала поступает на два входных буфера - DA6.1 и DA6.2. Они развязывают источник сигнала от остальных каскадов, которые сильно нагружали бы его, искажая сигнал. К выходам буферов подключены каналы анализатора спектра, а также амплитудные детекторы индикаторов общего уровня сигнала.

Каналы анализатора спектра имеют идентичную схемотехнику и отличаются лишь номиналами частотозадающих конденсаторов. Отдельный канал состоит из инвертирующего сумматора, полосового фильтра и амплитудного детектора. Для примера ниже приведена схема канала выделения частоты 16 кГц.

Сумматор предназначен для объединения сигналов левого и правого каналов. На его выходе образуется сигнал с амплитудой равной сумме амплитуд сигналов из левого и правого каналов с дополнительной инверсией. Инверсия нужна потому, что следующий после него полосовой фильтр тоже построен по инвертирующей схеме. Для каждого канала анализатора спектра был применен отдельный сумматор, потому что хотелось иметь возможность регулировать усиление отдельно в каждом канале, а делать это в полосовом фильтре не влияя на его частотные характеристики не получится. Номиналы резисторов в сумматоре имеют величину в 100 кОм, что бы при параллельном соединении всех десять каналов их общее входное сопротивление было 10 кОм и несильно нагружало входные буфера.

Полосовой фильтр построен по самой классической схеме, описаний которой много в сети и литературе. Добротность каждого фильтра равна 5, что дало оптимальную ширину полосы пропускания, при которой частоты, лежащие между двух каналов, подавляются не полностью и отображаются немного в обоих каналах. Ширина полосы пропускания конкретного фильтра равна отношению его резонансной частоты к добротности. Усиление фильтра на резонансной частоте равно -1. Резисторы и конденсаторы фильтров требуют точного подбора номиналов. Если этого не сделать отклонение всех параметров фильтра может достигать 20% особенно на фильтрах с низкой резонансной частотой (это можно заметить на видеоролике в конце статьи т.к. мне лень было обмерять кучу планарных конденсаторов:Р). При расчетах были использованы значения конденсаторов из стандартного ряда, а точные номиналы резисторов приведены в скобках рядом с ближайшим номиналом из ряда Е24.

Амплитудный детектор также собран по классической схеме и в пояснениях особо не нуждается. Построен он на германиевых диодах Д9. Их прямое падение напряжение, в сравнении с кремниевыми диодами, существенно меньше и составляет 0,15 - 0,3 В. Амплитудно-модулированное напряжение, поступающее с выхода фильтра, проходит через прямо включенный диод, где от него отрезается отрицательная составляющая, и подается на конденсатор. Конденсатор за каждый полупериод заряжается до амплитудного значения и разряжается через параллельно включенный резистор. В результате изменение напряжения на нем по форме совпадает с изменением амплитуды, то есть является огибающей амплитудно-модулированного входного сигнала. Изменяя номиналы конденсатора и резистора можно соответственно изменять скорость нарастания столбика и скорость спадания. Конденсатор большой емкости требует больше времени для заряда, соответственно и столбик на индикаторе будет дольше подниматься. А если уменьшить сопротивление резистора, шунтирующего конденсатор, то разряжаться он будет быстрее и индикатор будет быстрее гаснуть.

Все двенадцать сигналов собираются на входах двух аналоговых мультиплексоров - DD3 и DD4. Адресные входы обоих мультиплексоров соединены так, что они работают как один мультиплексор с шестнадцатью входами. В зависимости от управляющего кода, генерируемого схемой управления индикацией, производится выбор одного конкретного канала и его сигнал подается дальше на схему аналого-цифрового преобразователя (АЦП).

Мультиплексоры размещены на плате входного каскада для того, чтобы не тянуть далеко 12 проводников с аналоговым сигналом. Цифровой код управления мультиплексорами более устойчив к помехам и требует меньше проводников для передачи сигнала.

2. Блок управления индикацией.

Второй блок управляет процессом отображения значений амплитуды каждого сигнала на соответствующем месте индикатора. Состоит он из двух основных частей: АЦП в левом нижнем углу и схема развертки - в правом верхнем углу. Схема блока показана на рисунке:

Аналого-цифровой преобразователь построен по самой простой схеме - прямого преобразования. 16 операционных усилителей (DA7 - DA10) сравнивают сигнал, который приходит от мультиплексоров на инвертирующие входы, с опорным напряжением, которое формируется резисторами R88 - R105 и стабилитроном VD25. В состоянии покоя на выходах всех ОУ напряжение близкое к напряжению питания и транзисторы VT1 - VT16 закрыты. Как только входное напряжение начинает нарастать и превысит порог срабатывания нижнего по схеме ОУ, напряжение на его выходе станет близким к потенциалу общего провода и транзистор VT16 откроется. Ток от источника питания потечет через переход эмиттер-коллектор транзистора, токоограничивающий резистор и поступит аноды нижнего ряда светодиодов. При дальнейшем увеличении входного напряжения вышеописанные действия произойдут и с другими ячейками АЦП. Опорные напряжения для каждого ОУ выбраны так, что уровню 0 дБ соответствует сигнал с амплитудой в 1 В , а пределы шкалы индикатора по вертикали составляют от -39 дБ до +4 дБ . Резисторы, которые задают опорные напряжения для операционных усилителей, так же нужно выбрать максимально близко к значению которое на схеме указано в скобках. Без подбора отклонение шкалы может достигать ±2 дБ.

Схема развертки формирует управляющие сигналы для мультиплексоров и дешифраторов двоичного кода (DD5 и DD6). Состоит она из генератора прямоугольных импульсов частотой 300 Гц на элементах DD1.2 - DD1.4 и двоичного счетчика DD2. Двоичный счетчик по спадающему фронту тактового сигнала, формирует на своих выходах прямоугольные импульсы с частотой меньше входной в два, четыре и восемь раз. В результате на контактах разъема XP3.2 и на адресных входах дешифраторов имеется двоичный код. Сигнал на 9 контакте этого разъема находится в противофазе с сигналом на контакте 8. Пара этих сигналов поступает соответственно на нижние и верхние, по схеме, мультиплексоры и дешифраторы и является сигналами разрешения их работы.

Пара двоично-десятичных дешифраторов (DD5 и DD6) управляет столбцами светодиодной матрицы. Их входы соединены также как и у мультиплексоров, и работают они так же в паре. В соответствии с кодом на входах на одном выходе дешифратора появляется напряжение логической единицы, которое открывает транзистор, и катоды светодиодов соответствующего столбца подключаются к общему проводу. Если при этом транзисторы на выходах АЦП были открыты, то светодиоды в столбце зажгутся. На выводе 1 нижнего дешифратора формируется сигнал сброса счетчика. После того как последний, двенадцатый, канал будет опрошен, логическая единица на короткое время перейдет с выхода o3, дешифратора DD6, на выход o4, что приведет к сбрасыванию счетчика и цикл опрашивания каналов начнется сначала. Переключение столбцов, а соответственно и выбор каналов мультиплексорами, происходит с частотой 50 Гц. При меньшей частоте глаз начнет замечать переключение столбцов светодиодной матрицы, особенно при искусственном освещении, а при большей частоте яркость светодиодов будет снижаться из-за уменьшившегося времени свечения.

На диаграмме видно как происходит переключение столбцов светодиодной матрицы в соответсвии с двоичным кодом схемы развертки. Светодиоды в столбце вспыхивают на 1.666 миллисекунды каждые 20 миллисекунд, а значит, почти 92% времени светодиоды не горят. Это дает возможность подавать на светодиод ток значительно больший от номинального - время свечения светодиода очень мало и он просто не успеет сгореть от перегрева.

3. Блок матричного светодиодного индикатора.

Третий блок не содержит ничего особо интересного. Это просто матрица 16х12 из 192 светодиодов.

Анодами светодиоды соединены в ряды, а катодами - в столбцы. Если ток будет втекать, например, в 4 ряд и вытекать через 7 столбец, то светодиод на месте их пересечения будет гореть. Соответственно, быстро переключая ряды снизу вверх и столбцы слева направо, на индикаторе увидим линию по диагонали.

4. Сборка.

Собран девайс на трех платах 58.95 х 195.5 мм, которые соединяются стопкой посредством разъемов PLS-PBS.

Печатные платы проектировались «под себя». Их размеры и расположение некоторых элементов и узлов были продиктованы условиями эксплуатации. В частности на палате светодиодных индикаторов имеется посадочное место под инфракрасный приемник сигналов ПДУ, а также 13 посадочных мест под светодиоды индикации различных режимов работы и состояния блоков УНЧ. Платы двухсторонние, большинство используемых компонентов рассчитано для поверхностного монтажа. Разводились платы в Sprint Layout 5.0 . Ниже можно лицезреть фотографии готовых плат, переживших несколько переработок и модификаций. Изготовление каждый раз новой платы требует слишком много времени и материалов, поэтому на свободных, от компонентов и проводников, местах я оставляю полигоны меди, на которых потом вручную можно вырезать дорожки распаять небольшие узлы. Платы выглядят не очень привлекательными из за большого периода времени прошедшего от их изготовления и сборки до фотографирования для этой статьи. В течении полутора лет этот спектроанализатор просто кочевал из одного края моего стола в другой, покрываясь отпечатками пальцев, царапинами, окислами и пылью.







5. Настройка.

Настройка прибора производится после запайки всех элементов, проверки качества соединений и правильности установки каждого компонента. Далее необходимо соединить платы первых двух блоков (блока входных фильтров и блока управления индикацией). После можно подавать питающие напряжения (+5 В и -5 В), включив последовательно в цепи питания пару миллиамперметров и контролируя потребляемый ток, он должен быть в пределах от 30 до 50 мА по каждому из источников питания. Далее необходимо установить частоту генератора развертки. Подсоединив осциллограф к 4 контакту разъема XP3.2, подстроечным резистором R138 устанавливаем частоту импульсов равной 300 Гц , их амплитуда должна составлять 5 В , а скважность - 50% .

Для проверки работы дешифраторов (DD5 и DD6) и транзисторных ключей на их выходах (VT17 - VT28) необходимо между коллектором любого из транзисторов и положительным источником питания включить резистор сопротивлением 1 кОм. Подключив осциллограф, параллельно этому резистору (плюсом входа к источнику положительного питания, а минусом входа к коллектору транзистора) на экране должны появиться короткие импульсы длительностью 1,666 мс и частотой 50 Гц (как на диаграмме в конце второго раздела).

Проверка работы АЦП начинается с установки резистором R105 опорного напряжения 1,584 В на выводе 3 микросхемы DA7 . Это можно сделать двумя способами:

  1. Припаять на месте R105 подстроичный резистор сопротивлением 2 кОм, установить им требуемое напряжение, а потом, измерив его сопротивление, заменить его постоянным резистором соответствующего, или близкого, номинала;
  2. Измерить точное значение напряжения на стабилитроне и отняв от него 1,584 В, рассчитать сопротивление резистора R105 при помощи закона Ома. Когда опорное напряжение на выводе 3 DA7 будет установлено, нужно убедиться, что опорные напряжения на остальных операционных усилителях соответствуют значениям, указанным на схеме. После можно подать на выводы 1 - 3 разъема XP3 небольшое положительное напряжение, 0,05 - 1 В, и убедится что на выводах разъема XS4 появляется +5В.

После проведения вышеописанных проверок можно, предварительно отключив оба источника питания , наконец, подключить плату со светодиодным индикатором. После подключения платы одновременно подаем оба питающих напряжения, при этом вся матрица светодиодов, на полсекунды, загорится и быстро погаснет сверху вниз. Если дотронуться пальцем до контактов входного разъема на индикаторе должны зажечься светодиоды в нижних рядах, это будет свидетельством исправной работы устройства. Наконец, можно подать на вход звуковой сигнал с максимальной амплитудой в 1 В и убедится в работе сепктроанализатора. Также можно подать на оба входа синусоидальный сигнал, амплитудой 500 мВ и изменяя его частоту от 20 Гц до 20 кГц проверить соответствие резонансных частот фильтров.

Напоследок привожу видеоролик в котором показана работа спектроанализатора.

Все вопросы по устройству прошу излагать в соответствующей .

По поводу ошибок и неточностей в статье пиши мне в личку на форуме или на эл. почту.

Ниже прикреплен архив с файлами схем (.spl7) и печатных плат (.lay). Открываются файлы программами sPlan 7.0 и SprintLayout 5.0, соответственно.

На этом у меня все. Спасибо за внимание.



Как вам эта статья?

В качестве устройства отображения используется двухстрочный символьный ЖК индикатор. Основным моментом при реализации данного проекта является не аппаратная часть, а программная, точнее реализация дискретного преобразования Фурье (ДПФ) на 8-разрядном микроконтроллере. Сразу следует отметить, что автор не является экспертом в этой области и поэтому начал с основ - с простого дискретного преобразования Фурье. Алгоритм быстрого преобразования Фурье является не только быстрым, но и достаточно сложным.

Дискретное преобразование Фурье (в англоязычной литературе DFT, Discrete Fourier Transform) - это одно из преобразований Фурье, широко применяемых в алгоритмах цифровой обработки сигналов (его модификации применяются в сжатии звука в MP3, сжатии изображений в JPEG и др.), а также в других областях, связанных с анализом частот в дискретном (к примеру, оцифрованном аналоговом) сигнале. Дискретное преобразование Фурье требует в качестве входа дискретную функцию. Такие функции часто создаются путем дискретизации (выборки значений из непрерывных функций).

Принципиальная схема анализатора спектра звукового сигнала очень проста и условно ее можно разделить на цифровую часть и аналоговую.

Цифровая часть образована микроконтроллером и подключенным к нему ЖК индикатором. Микроконтроллер тактируется от кварцевого резонатора 16 МГц, в качестве опорного напряжения для АЦП микроконтроллера используется напряжение питания +5 В.
Шина данных ЖК индикатора подключена к порту C микроконтроллера (линии ввода/вывода PC0-PC3), шина управления подключена к порту D(PD5, PD6) микроконтроллера. Индикатор работает в 4-битном режиме. Переменный резистор номиналом 4.7 кОм используется для регулировки контрастности. Для работы с индикатором были созданы пользовательские символы для отображения 8 горизонтальных столбиков анализатора, эти пользовательские символы занимают все 64 Байта ОЗУ ЖК индикатора.

Микроконтроллер работает от внешнего кварцевого резонатора 16 МГц.

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

Алгоритм ДПФ несколько медленнее в сравнении с быстрым преобразованием Фурье. Но наш анализатор спектра не требует высокой скорости, и если он способен обеспечить скорость обновления около 30 кадров в секунду, этого будет более чем достаточно для визуализации спектра звукового сигнала. В любом случае, в нашем варианте возможно достичь скорости 100 кадров в секунду, но это уже слишком высокое значение параметра для двухстрочного символьного ЖК индикатора и оно не рекомендуется. Частота дискретизации равна 20 кГц для 32 точечного дискретного преобразования Фурье и поскольку результат преобразования симметричен, нам нужно использовать только первую половину, т.е. первые 16 результатов. Следовательно, мы можем отображать частотный спектр в диапазоне до 10 кГц и разрешение анализатора составляет 10 кГц/16 = 625 Гц.

Автором конструкции были предприняты попытки увеличения скорости вычисления ДПФ. Если это преобразование имеет N точек, то мы должны найти N2/2 значений синуса и косинуса. Для нашего 32 точечного преобразования необходимо найти 512 значений синуса и косинуса. Но, прежде чем найти их нам необходимо вычислить угол (градусы), что займет некторое процессорное время, поэтому было решено использовать для этих вычислений таблицы значений. При расчетах в программе микроконтроллера не используются вычисления с плавающей точкой и числа двойной точности (double), так как это займет больше времени на обработку на 8-разрядном микроконтроллере. Вместо этого значения в таблицах поиска используются 16-разрядные данные целочисленного типа (integer), умноженные на 10000. Затем после выполнения преобразования результаты делятся на 10000. При таком подходе имеется возможность выполнять 120 32-точечных преобразований в секунду, что более чем достаточно для нашего устройства.

Демонстрация работы анализатора спектра на микроконтроллере ATmega32

Загрузки

Исходный код (программа микроконтроллера, таблицы данных синуса, косинуса и угла) -

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться .

  • Понятно, что на АВР-ке дальше светомузыки сложно уехать, не те параметры. Но 120 32-точечных преобразований в секунду для большинства задач может быть достаточно. А выборку 625Гц, можно конечно и другую взять, по точнее потеряв частоту обновления. Стоит отметить, что МК будет себя плохо чувствовать, в плане производительности мало что на него еще навешаешь. Но тут можно же организовать выдачу результата по аппаратным методам передачи данных. Тогда это будет вспомогательный МК, а основной будет только принимать с него данный и обрабатывать совместимо с другими процессами. По большому счету все же в частоту проца упирается. Когда-то получалось разгонять мегу выше 20 МГц, но для этих задач наверно получим только глюки на высоких частотах. Идея хороша, только бы больше мат части расписано было бы... именно ее реализация на МК
  • я и поинтересней анализаторы делал: You Tube или вариант на цветном ЖКИ: You Tube в основе знаменитая библиотека Чена:)
  • "нам необходимо вычислить угол (градусы)" А может кто-нибудь подробнее рассказать как рассчитываются значения для этих таблиц?
  • С таблицей синусов и косинусов все понятно. Не понятно как рассчитываются значения в таблице degree_lookup?
  • Звук
  • Как вы думаете, что делают девушки, когда собираются вместе? Идут по магазинам, фотографируются, ходят по салонам красоты? Да, так и есть, но так делают далеко не все. В данной статье пойдёт речь о том, как две девушки решили собрать радиоэлектронное устройство своими руками.

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

    Ведь программных решений данной задачи довольно много и вариантов аппаратной реализации так же немало. Во-первых, очень хотелось поработать с большим количеством светодиодов (т.к. мы уже собирали 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 шт. (Для корпуса)


    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: