![]() |
![]() |
|||||||||||||||
USB ЦАП на PCM2705 c дистанционным управлением плеером
Автор: WiseLord, wiselord1983@gmail.com Статья предназначена для тех, кому интересно было бы собрать внешний 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. Для этого нужно проделать несколько действий.
Микроконтроллер тактируется от встроенного RC-генератора частотой 1МГц. Поэтому, в принципе, "заводские" FUSE-биты можно не трогать вообще, прошивая только FLASH (pcm2705.hex). EEPROM (eeprom.bin) можно не прошивать, так как в нём записаны только "стандартные" RC5-коды, а обучить или переобучить устройство новым, более удобным для себя, кодам можно в любой момент. Но вообще полезным будет включить бит EESAVE=0 (чтобы при перепрошивке EEPROM не стирался), и бит BODEN=0 (сброс при понижении питания МК до 2.7В, бит BODLEVEL=1). Остальное оставляем как есть. Калькулятор FUSE-битов для "галочек". На этом, пожалуй, и всё. Надеюсь, ЦАП в таком исполнении покажется кому-то интересным.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |