РадиоКот :: USB ЦАП на PCM2705 c дистанционным управлением плеером
Например TDA7294

РадиоКот >Схемы >Аудио >Разное >

Теги статьи: Добавить тег

USB ЦАП на PCM2705 c дистанционным управлением плеером

Автор: WiseLord, wiselord1983@gmail.com
Опубликовано 31.08.2015
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2015!"

Статья предназначена для тех, кому интересно было бы собрать внешний USB ЦАП с возможностью управления плеером на компьютере. Будучи подключено по USB к ПК или ноутбуку, данное устройство работает как внешняя звуковая карта, дополнительно позволяя управлять аудиоплеером на компьютере с помощью кнопок на своём корпусе или с помощью ИК-пульта по протоколу RC5.

Готовое устройство может выглядеть как-то так:

История этого проекта началась где-то год назад, когда я в сети наткнулся на описание внешнего USB ЦАП на PCM2705. Схема из даташита выглядит следующим образом:

Интересной "фишкой", которая и сподвигла тут же заказать PCM2705 в Китае на aliexpress, показалась возможность управления громкостью с помощью трёх кнопок, подключаемых к ЦАП. Но уже когда микросхемы были заказаны и летели самолётами ко мне домой, я вдруг понял, что эти волшебные кнопки можно использовать только на PCM2704, во всём остальном полностью аналогичной. А PCM2705 на их месте имеет что-то вроде SPI шины.

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

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

Курение даташита на PCM2705 выявило, что если разобраться с её SPI протоколом, можно даже "переплюнуть" PCM2704 - выдавать не только команды управления громкостью (VOLUME_UP, VOLUME_DOWN, MUTE), но и плеером (NEXT, PREV, STOP, PLAY). Но почему-то никто из авторов статей в сети не рассматривал этот вопрос подробнее.

Дело оставалось за малым - прицепить к ЦАП-у микроконтроллер. Для начала была собрана "референсная" схема и подключена к Arduino Leonardo:

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

После некоторой отладки кода на прототипе было решено переделывать всё в нормальное одноплатное устройство на ATmega8. Этот МК был выбран ввиду его популярности, но, главным образом, ввиду наличия в закромах.

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

Корпус с вытравленной платой (мегапопулярный ЛУТ плюс лужение в сплаве РОЗЕ) выглядит так:

А вот схема, срисованная из разводки платы:

Можно видеть, что особых отличий от референсной схемы нет. Некоторые выводы PCM2705 подключены к контроллеру для управления, а также несколько увеличены (с 1мкф до 2.2мкф) конденсаторы на выводах ЦАП. В остальном никаких особых изменений.

Хотя PCM2705 и питается от USB с напряжением 5В, но она имеет внутри встроенные стабилизаторы напряжения на 3.3В и прочие источники опорных напряжений для ЦАП (от них-то и выведены упомянутые выше конденсаторы). То есть, внутренняя логика её питается от 3.3В, а поскольку выводы SPI не указаны как толерантные к 5В, то микроконтроллер тоже запитан от 3.3В с помощью стабилизатора (IC1 на схеме).

Помимо кнопок, к микроконтроллеру подключен ИК-приёмник вроде TSOP4836, а также выведен на будущее UART. Возможно, позднее закажу в Китае bluetooth модули, и тогда может дополнительная возможность в виде управления ещё и со смартфона по Bluetooth.

Плата с "микроконтроллерной" стороны:

И с другой стороны с ЦАП-ом:

Сложновато было сделать - всё-таки шаг выводов 0,65мм для ЛУТ-а уже на пределе возможностей, но получилось вполне неплохо - ни перетравов, ни недотравов не наблюдалось.

Вот как выглядит собранное устройство в корпусе:

Посмотреть, как это работает вживую, можно в видеоролике (82,1 МиБ). Позже здесь ролик на Youtube, пока же, чтобы себя не раскрывать, пусть будет в виде ссылки.

Теперь немного о работе с устройством.

При подключении к ноутбуку оно определяется как составное устройство: собственно ЦАП + HID-устройство. Первая часть реализует главную функцию - передачу цифрового потока на ЦАП, вторая - отсылку кодов мультимедийных клавиш.

Каждое нажатие кнопки - аппаратной или с пульта - посылает соответствующую команду. При этом однократно мигает светодиод. "Чужие" RC5-команды игнорируются и светодиод не загорается. В общем, пользоваться проще некуда.

Устройство можно обучить под любой пульт, работающий по протоколу RC5. Для этого нужно проделать несколько действий.

  1. Подаём питание, подключившись по USB к ноутбуку.
  2. Нажимаем одновременно кнопки MUTE, VOL_UP, VOL_DN и удерживаем около секунды. Трёхкратное мигание светодиода индицирует вход в режим обучения.
  3. Нажимаем требуемую кнопку на пульте (например, Громкость+). При этом однократно мигает светодиод, индицируя факт приёма команды с пульта.
  4. Коротко нажимаем кнопку на устройстве (VOL_UP). Двухкратное мигание светодиода индицирует, что для данной кнопки пульта в EEPROM запомнена соответствующая функция.
  5. Проделываем пункты 3-4 для остальных 6 кнопок.
  6. Как и в п. 2, снова нажимаем и удерживаем одновременно кнопки MUTE, VOL_UP, VOL_DN. Трёхкратное мигание светодиода индицирует выход из режима обучения в рабочий режим.
  7. Profit!

Микроконтроллер тактируется от встроенного RC-генератора частотой 1МГц. Поэтому, в принципе, "заводские" FUSE-биты можно не трогать вообще, прошивая только FLASH (pcm2705.hex). EEPROM (eeprom.bin) можно не прошивать, так как в нём записаны только "стандартные" RC5-коды, а обучить или переобучить устройство новым, более удобным для себя, кодам можно в любой момент. Но вообще полезным будет включить бит EESAVE=0 (чтобы при перепрошивке EEPROM не стирался), и бит BODEN=0 (сброс при понижении питания МК до 2.7В, бит BODLEVEL=1). Остальное оставляем как есть. Калькулятор FUSE-битов для "галочек".

На этом, пожалуй, и всё. Надеюсь, ЦАП в таком исполнении покажется кому-то интересным.


Файлы:
Файлы прошивки
Печатная плата
Исходники


Все вопросы в Форум.




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

Заработало ли это устройство у вас?

74 13 0
1 0 0