Плата управления (ЦАП ч.4)

СВК
Published

Плата управления, по задумке, должна обеспечивать:

  • Переключение режимов работы модулей
  • Отображение режимов работы
  • Отображение статусов работы модулей
  • Анализатор спектра выходного сигнала

В качестве основы взята Arduino nano (atmega 328p), для отображения разного взяты два ЖК экрана 1602 (один сервисный, второй для анализатора спектра).

Схема простая. Аналоговые входы А0 и А1 используются для обработки аудио-сигнала, для получения спектра, сигнал заводится через разделительные конденсаторы С3 и С4. Входы - А4 и А5 для подключения экранов по I2C. Цифровые входы D2, D3 и D4 для подключения кнопок управления ("меню" и "действие"), D6-D9 для управления реле (включение и отключение питания модулей, переключение Аудио-выхода), D10-D13 - используются как входы для получения сигналов от модулей (статусы работы) через плату опто-развязок. Так как о режимах работы модулей, что S/P-DIF что Bluetooth, сигнализируют соответствующие светодиоды на каждом из модулей, то решено было просто подключиться вместо этих светодиодов, и завести эти "сигналы" через опто-развязки на ардуину. Т.е. загорелся, к примеру, светодиод Coaxial на s/p-dif плате и на экране появится соответствующая надпись. На s/p-dif плате вместо светодиодов запаял разъемы, на bluetooth подпаялся прям к светодиоду.

Резисторы R3, R4, R5 образуют делитель напряжения (для уменьшения опорного напряжения до 1,1В) для реализации спектро-анализатора. Резисторы R1, R2 и конденсаторы С1, С2 для избавления от дребезга контактов кнопок.

Схема:

control-panel-scheme.png

Плата:

control-panel-pcb.png

Изготавливал при помощи ЛУТа, по традиции.

control-panel-pcb1.png

Даже с "шелкографией":

control-panel-pcb-silk1.png

control-panel-pcb-silk.png

Собранная плата, надо отметить, что это первая версия, на картинках выше (с чертежом платы) уже вторая которая и пошла в работу.

control-panel-pcb-assembly.png

Исходники схемы и платы лежат тут.

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