Графический спектроанализатор с динамической индикацией на жесткой логике
Когда деревья были большими, а я был юным, но в меру упитанным электронщиком, мне доводилось проектировать весьма немаленькие светодиодные штуковины. Естественно, делалось это все на микроконтроллерах. Старые фотографии одной из таких штуковин навеяли мне идею собрать схему спектроанализатора, но без использования микроконтроллеров.
Я поставил для себя задачу получить схему с функциональностью, аналогичной тому, что показано на видео. Также хотелось сэкономить драгоценные микросхемы LM3914, запасы которых у меня истощились. Для этого решено было делать динамическую индикацию. Да, вам не почудилось, динамическая индикация и ни каких микроконтроллеров. К тому же, динамическая индикация с легкостью позволит решить задачу одновременного отображения столбиков и точек. Количество светодиодных столбиков я решил ограничить до четырех, чтобы не раздувать слишком большую схему.
Как всегда, под катом вас ждет беспощадная схемотехника на основе только жесткой логики и не менее жестких операционниках.
В то время на нашем черноморском побережье только начинали открываться модные ночные клубы с электронной музыкой. Владелец одного из таких клубов обратился к нам с целью украсить интерьер своего заведения. Отмечу, что сам владелец позиционировал себя ди-джеем.
Мне здорово пришлось попыхтеть, я первый раз писал цифровой фильтр для AVR микроконтроллера. Благо, обрабатывать сигналы в реальном времени не требовалось, и в интернете уже были примеры проектов. Контроллер накапливал измерения АЦП в пределах ограниченного окна и затем проводил вычисления, на основе которых формировалась светодиодная анимация.
Естественно, заказчик проект не принял. Буквально заявив, что это не музыка, а какая-то… ерунда. Объяснить ему, что это реальная спектрограмма, не представлялось возможным. Да и, как известно, кто платит, того и танцуют. Мне пришлось взять дополнительное время, и как следует подумать. Решение не заставило себя долго ждать.
Тогда набирал популярность медиаплеер Winamp. Он умел рисовать на экране различную анимацию на основе спектра звукового сигнала. Я некоторое время понаблюдал за тем, как плеер это делает. Тупо нарисовал десятка полтора произвольных огибающих в памяти микроконтроллера. Затем оставил в коде только вычисление низких частот. По пикам низких частот случайным порядком выгружалась одна из имеющихся псевдоогибающих и выполнялась анимация, которая гасила столбики.
При следующей встречи восторгу заказчика не было предела. «Я вижу музыку» — воскликнул он. Я не стал его переубеждать. Просто сказал, что перенастроил фильтры, поэтому в этот раз все получилось как надо.
Главный вывод из этой истории я для себя сделал. Не нужно шокировать заказчика своими новаторствами. Дайте заказчику ровно то, к чему он привык.
Конечно, сейчас при обилии китайских светодиодных экранов таким никого не удивишь. Но на тот момент китайские экраны в Россию еще не привозили.
❯ Разработка электрической схемы
Рассмотрим общий принцип работы спектроанализатора. Схема предназначена для графического отображения соотношения спектра сигнала по четырем полосам: 500Гц, 1кГц, 4кГц, 8кГц. Для отображения уровня сигнала используется светодиодная шкала из четырех столбцов по 20 светодиодов в каждом. Каждый столбик светодиодов отображает спектральную плотность для своей полосы частот: слева — нижние частоты, справа — верхние.
Заполнение столбца светодиодов производится снизу вверх пропорционально пиковому значению сигнала в соответствующем диапазоне частот. Полное время убывания столбца составляет примерно 50 мс. В каждом столбце отдельной точкой отмечается пик с временем убывания примерно 1с.
Предварительный каскад А смешивает стереосигнал в моно. Смеситель А3 не имеет емкостной развязки входов. В моем случае это было не нужно. Но, при необходимости, можно поставить последовательно с входными резисторами по конденсатору примерно по 10 мкФ. Полосовой фильтр А2 ограничивает полосу входного сигнала, это сделано скорее для само успокоения, чем из-за реальной необходимости, все так делают, и я решил не выделяться. А вот повторитель А1 необходим для согласования полосовых фильтров, его следует оставить, даже если вы решите выкинуть входной смеситель и фильтр, иначе внутреннее сопротивление источника сигнала (в нашем случае это фильтр А2) будет оказывать влияние на полосу пропускания фильтров С1 — С4.
Разделение спектра на четыре полосы производится фильтрами С1 — С4. АЧХ фильтров имеет второй порядок, этого вполне достаточно для получения удовлетворительного визуального эффекта, все-таки не измерительный прибор делаю.
Усилители С5 — С8 позволяют получить сбалансированное отображение спектра для улучшения визуального эффекта. Регулируя их коэффициенты усиления нужно добиться того, чтобы столбики светодиодов как можно чаще «добивали» до максимума.
Пиковые детекторы С5.1, С6.1, С7.1, С8.1 предназначены для формирования уровней заполнения светодиодных столбиков для динамической индикации. Время полного убывания сигнала для них составляет примерно 50 мс, это снижает мерцание индикации и позволяет формировать отдельно различимые кадры спектра сигнала. Если это время уменьшить, то светодиоды будут слишком навязчиво «мельтешить». Это время тоже можно подстроить на свой вкус в зависимости от размеров светодиодных индикаторов и личных предпочтений. Но для этого придётся менять резисторы.
Пиковые детекторы С5.2, С6.2, С7.2, С8.2 выполняют аналогичные функции и используются для определения уровня индикации точек. Время полного убывания сигнала на них составляет примерно 1с. За счет этого точки на спектроанализаторе спускаются медленнее и более продолжительное время хранят пиковые значения по частотам.
В основе схемы используется интегральный индикатор уровня LM3914 (D4 на схеме). Схема индикации построена по динамическому принципу. Генератор D1 определяет частоту развертки изображения. Счетчик D2 управляет дешифратором D5 и аналоговым мультиплексором D3. Схема поочередно выводит уровни с пиковых детекторов на индикатор уровня D4, а транзисторные ключи подключают соответствующий столбик линейного светодиодного индикатора.
Схема динамической индикации и формирования уровней устроены таким образом, что сперва последовательно отображается один кадр с заполнением столбцов, а затем кадр с точками. Для этого пиковые детекторы столбцов С5.1, С6.1, С7.1 и С8.1 подключены к младшей тетраде входов аналогового мультиплексора D3, а пиковые детекторы точек С5.2, С6.2, С7.2 и С8.2 — к старшей тетраде.
Счетчик D2 одновременно формирует двоичный адрес для подключения одного из восьми входов мультиплексора, а также для дешифратора D5, который выбирает один из столбцов линейного светодиодного индикатора. Для управления мультиплексором D3 использованы три двоичных выхода счетчика, а для дешифратора D5 — только два его младших разряда.
Когда входы мультиплексора переключаются от 0-ого до 3-его, выходы дешифратора по очереди подключают столбцы с нулевого по третий. Затем, когда выходы мультиплексора продолжают переключаться от 4-ого по 7-ой, выходы дешифратора повторно подключают столбцы с нулевого по третий.
Старший задействованный выходной бит счетчика D2 также управляет выбором режима работы индикатора уровня LM3914 «столбец/точка».
За счет высокой скорости переключения столбцов в кадре и кадров со столбцами и точками, создается иллюзия одновременного отображения на индикаторе спектрограммы с быстро перемещающимися столбцами и медленно спускающимися точками.
Пиковый детектор В1 формирует опорное напряжение для индикатора уровня D4. За счет этого не зависимо от громкости звукового сигнала заполнение столбиков светодиодной индикации всегда производится практически на всю их высоту.
Компаратор В2 отключает индикацию при отсутствии входного сигнала. Иначе пиковый детектор В1 настроит схему под уровень входной помехи, и светодиодный индикатор будет практически полностью светиться. Минимально различимый уровень входного сигнала можно подстроить опорным делителем напряжения.
На питании схемы подробно останавливаться не буду. Отмечу только, что оно двух полярное не более ±6В, а лучше ±5В. При необходимости можно перейти на однополярное питание, для этого в схеме понадобится искусственная средняя точка, и обязательно нужно будет развязать входы схемы с помощью конденсаторов.
❯ Сборка макета
После того, как схема была разработана и отлажена, можно приступать к ее изготовлению. Печатная плата была вырезана на ЧПУ. Подробнее о том, как я это делаю, можно посмотреть по ссылке.
К моменту сборки у меня возник некоторый дефицит микросхем LM3914. В целях экономии решил ставить их через панельки. И при установке микросхемы в панельку одним неловким движением был обломлен драгоценный вывод. Пришлось имплантировать его от другой микросхемы. Сточил край корпуса надфилем, чтобы добраться до основания обломленного вывода, и подпаялся к нему.
В общем, как и ожидалось, схема заработала сразу после сборки. Изображение на видео немного мельтешит из-за того, что камера различает динамическую развертку. В реальности все работает ровно. И светодиодные индикаторы остались только двухцветные, а я сразу не обратил на это внимание.
Конечно же я не удержался и заказал печатную плату в зеленке. Посадочные места сразу были предусмотрены под индикаторы и под планарные светодиодики. С этим я не прогадал, так как индикаторы закончились при сборке прототипа. Пришлось паять SMD.
Если вам понравилась эта статья, то вы можете посмотреть другие мои проекты:
1. Простая схема динамических указателей поворотов, и никаких микроконтроллеров
2. Светодиодная шкала для переменного резистора на «рассыпухе»
3. Светофор на логике со схемотехникой в стиле Beatles. Как электроника вновь стала моим хобби
4. Профессиональные методы прототипирования печатных плат. Распечатать на принтере или фрезеровать, ни слова про утюг
5. Бирдекель или арифметический детектив на операционных усилителях
6. Электронная игра «лабиринт» на сервоприводах. Никаких arduino, только жесткая логика
7. Велосипедный фонарь с динамическими поворотами. Зачем покупать на AliExpress, если можно сделать самому?
8. LPKF ProtoMat S63. Мыши плакали, кололись, но… продолжали фрезеровать печатные платы
9. Звуковой усилитель на драйвере шагового двигателя L298 и таймере 555. Да, 555-й может и спеть