Наверх

Матричный релейный аудио коммутатор Helvetios | Гельветиос

18 июня 2021 г.

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

Техническое задание

К коммутатору я предъявил следующие требования:

  1. Должен иметь релейную матрицу коммутации 6 на 6 (количество разъемов ограничено размерами старого корпуса).
  2. Должен уметь подключать любой свой вход к любому количеству своих выходов.
  3. Должен уметь приглушать любой из своих выходов, а также все выходы разом.
  4. Должен иметь несколько фиксированных настроек (пресетов) для возможности быстрого выбора.
  5. Должен иметь удобный интерфейс управления и понятную индикацию.
  6. Должен вносить минимальное количество искажений в коммутируемый сигнал.
  7. Должен иметь гальванически развязанный интерфейс связи с компьютером для обновления ПО и управления.

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

Дисплей

В прошлом варианте я применял дисплей HCMS-2915, но сразу стало ясно, что в этот раз его применить не получится, т.к. из-за размера и количества знакомест его информативность будет невысокой. Конечно, можно было бы поставить их штуки 4, в два ряда (благо есть в наличии), но этот вариант тоже мне показался не особо удачным. Хотя, оглядываясь назад, такой двухстрочный дисплей тоже позволил бы все нужное уместить, правда выглядел бы все равно менее информативно. Кроме того, такой дисплей стоит неадекватных (на мой взгляд) денег (порядка 1500..2000 р), что снижает вероятность повторения моего устройства кем-либо еще. Значит нужно искать более доступные варианты дисплеев.

Я как обычно хотел прикрыть дисплей затемненным стеклышком, поэтому ЖК-дисплеи мне не подходили из-за своей недостаточной яркости. Поэтому решил обратить внимание на рынок OLED-дисплеев, которые ранее нигде не применял. Купив на пробу несколько штук и поэкспериментировав, я пришел к выводу, что самые дешевые варианты мне не подходят из-за своих небольших размеров, а более крупные варианты, конечно, имеют достаточно места, но все равно получаются довольно дорогими. Также их яркость уступает светодиодным дисплеям, и на статичных картинках они подвержены выгоранию.

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

Здесь применены 6 (по количеству выходов) семисегментных зеленых индикаторов с высотой символа 0,36 дюйма (9,1 мм), которые символизируют каждый имеющийся выход. Они отображают номер подключенного к ним входа. Прочерк означает, что никакого входа не подключено. Под каждым выходом стоит красный 2 мм светодиод, отображающий режим Mute для выходов.

Также по просьбе товарища я в коде программы реализовал возможность отображать состояние устройства на стандартной светодиодной матрице 8 на 8 точек. Выглядеть будет так:

Органы управления

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

  1. Выбор входа для выхода/выходов.
  2. Включение mute для выхода/выходов.
  3. Выбор и сохранение фиксированных настроек.

Слева находится блок кнопок для выбора подключения входов к выходам. Слева - блок фиксированных настроек (для товарища предусмотрел еще 2 пресета). Между блоками - дополнительные кнопки для управления режимом Mute и яркостью дисплея. Сценарии работы такие:

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

Кнопка DISPLAY коротким нажатием позволяет переключаться между тремя режимами яркости. Длительное нажатие позволяет переключиться между режимами фиксированной и автоматической яркости дисплея.

Задняя панель

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

Таким образом я пришел к такому дизайну. Здесь показано два варианта - в светлом и темном исполнении:

Было принято решение сделать четыре платы - основную, плату дисплея, плату клавиатуры и блок питания.

Плата дисплея

На плате дисплея кроме самого дисплея расположены также кнопка включения, индикатор дежурного режима и фотодиод. Размеры платы 35 на 100 мм.

Схема довольно простая. Индикация дисплея динамическая, поэтому применены всего два регистра - 74HC595 для управления сегментами и его мощный аналог с выходами с открытым стоком STPIC6C595 для управления разрядами. Регистры соединены каскадно, а их входы управления выведены на разъем и c микроконтроллером связаны по SPI. Светодиод, фотодиод и кнопка POWER выведены в разъем напрямую. Погашенные участки схемы относятся к вышеупомянутой светодиодной матрице и на данной плате не реализованы.

Плата клавиатуры

Плата клавиатуры по устройству еще проще. Количество кнопок 14, поэтому для экономии выводов микроконтроллера, кнопки объединены в матрицу. Размеры платы 35 на 100 мм.

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

Блок питания

Блок питания должен формировать три напряжения: +5В для питания цифровой части устройства, и двухполярное напряжение +/-12В для питания аналоговой части. Специально для этого был заказан трансформатор с необходимыми обмотками на базе ТП-331. Справа и слева от трансформатора в плате сделаны сужения и оставлены контактные площадки для возможности установить экран, если потребуется. Размеры платы 100 на 37 мм.

Кроме типовых схем стабилизаторов на 7805 для цифрового питания и малошумящей пары 4901/3001 серии TPS7A для аналогового питания здесь реализована схема слежения за наличием сетевого напряжения на транзисторе VT1. Если сетевое напряжение на входах ACL и ACN присутствует, на выходе AC_GOOD имеются прямоугольные импульсы частотой 100 Гц. При пропадании напряжения, импульсы пропадают, что отслеживает микроконтроллер и принудительно через отдельный блок реле (о чем пойдет речь далее) включает MUTE всех выходов. Это сделано для устранения щелчков в подключенных оконечных устройствах при включении и выключении питания коммутатора. Конечно, при пропадании сетевого напряжения пропадает и питание +5В, но МК сохраняет работоспособность до 2,7В и на остатке заряда в емкостях выпрямителя успевает обнаружить пропадание импульсов и выполнить необходимые действия, прежде чем схема Brown-Out его отключит.

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

Основная плата

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

Общая принципиальная схема показана ниже.

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

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

После матрицы на каждом выходе стоит также по повторителю, разделительному конденсатору и защитному резистору.

Далее сигнал перед подачей на выходные разъемы попадает на еще одну группу из 6 реле, которые выполняют функцию отключения оконечных устройств в дежурном режиме и при нештатных ситуациях. Они включены параллельно и управляются одним сигналом. Так как эти реле также применены бистабильные, для их включения и отключения нужно было сформировать биполярный импульсный сигнал из одного управляющего униполярного сигнала из микроконтроллера (банально закончились доступные порты). Для этого у OMRON была найдена следующая схема:

Здесь импульс включения формируется в момент подачи напряжения на вход IN и заряда емкости C через D1 и D2. По окончании заряда напряжение на реле отсутствует. Отрицательный импульс отключения формируется в момент снятия сигнала IN - транзистор открывается и емкость C через него разряжается.

Я эту схему испытал и адаптировал под свои нужды. Роль сигнала IN и диода D1 теперь выполняет ключ на полевом транзисторе. В моем случае нагрузка получается довольно низкой - порядка 40 Ом, и для надежного включения всех реле пришлось поставить довольно ощутимую емкость 2000 мкФ.

В качестве интерфейса связи с компьютером в схеме имеется микросхема CH340G, представляющую собой микросхему, реализующую COM-порт через интерфейс USB. Со стороны микроконтроллера у нее обычный UART. Для гальванической развязки применена микросхема ADuM1201 - это двунаправленный приемопередатчик, входы и выходы которого изолированы друг от друга. Диодная сборка USB6B1 служит для защиты CH340G от статического напряжения с разъема USB.

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

ПО для управления с ПК в процессе написания...

Конструкция панелей

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

Лицевая панель - алюминиевая с затемненным оргстеклом и гравировкой.

Измерения

В одном из пунктов ТЗ было требование к нелинейным искажениям. Привожу графики замеров:

Итоговое исполнение

В итоге получилось очень удобное, функциональное и красивое устройство. Я доволен проделанной работой.

Немного фото реальных плат:

Краткий обзор функционала

Материалы для самостоятельной сборки

Скачать схемы, платы и перечни компонентов (ZIP) | Скачать 3D-модели плат в формате STEP (ZIP)
Скачать чертежи передней панели (ZIP) | Скачать прошивку МК (ZIP)