Простой аудио ЦАП с подключением по USB (звуковая карта)



Как оказалось, сделать внешнюю USB звуковую карту несложно и недорого. В этой статье расскажу как ее делал я.

Предыстория:


Пару лет назад в интернете на одном из форумов мне на глаза попалась тема про аудио ЦАПы. Я очень сильно загорелся идеей спаять аудиокарту(!) и с большим интересом начал читать описания различных конструкций. От их повторения меня отталкивали сложные (я не представлял, откуда буду вытаскивать «квадратную шину» I2C на компьютере или где взять S/PDIF) схемы и дорогие (это было самым веским аргументом) компоненты. Материала по данной тематике на русском языке и сейчас очень мало…
Через пару месяцев я нашел простую конструкцию на чипе PCM2702 и, самое главное, с подключением к компьютеру по USB. Я не испугался SSOP корпуса микросхемы, но испугался цены — более 500 рублей за штуку. Также я боялся испортить такую дорогую микросхему своей неопытностью (перегрев, статика… мало ли?). Стал искать другие решения. И наткнулся на конструкцию на PCM2705. Это тоже USB-кодек, но с более низкими характеристиками, по сравнению с PCM2702-й.
Микросхему нашел в толкучке на одном из форумов. Заказал себе и другу по одной. Не помню точно по какой цене, но не более 150р за штуку.

Схема:


Схему повторил почти один-в-один с первоисточником. А у него там почти чистый даташит.


Плата:


Сделал свой вариант печатной платы. ЛУТ я тогда уже освоил.



Первый запуск:


Запаял (думал не смогу запаять пятимиллиметровым жалом, но спасибо DI-HALT'у за идею с микроволной).


Дрожащими руками подключил к компьютеру… ОС обнаружила новое устройство. Установила драйвера. Подключил наушники — поёт! Да и притом ничуть не хуже, чем встроенная в ноут звуковуха. А даже лучше! По крайней мере, я услышал разницу на НЧ. На ВЧ не заметил. Но и наушники у меня не лучшего качества.
Другу тоже спаял, подключил и… не работает. Менял конденсаторы в обвязке кварца — не помогло, поменял сам кварц — заработало!



Пользуешься?


Пользуюсь. Иногда включаю его, когда хочется более качественного звука. Включал бы почаще, но неудобно пользоваться им — корпус так и не сделал, ноут туда-сюда таскаю…

Модернизация:


Если применить внешний блок питания с малошумящими стабилизаторами, звучание станет лучше, т.к. питание на шине USB содержит в себе очень много различных помех. Также можно поэкспериментировать с резисторами R7, R8 — поставить меньше и увеличить конденсаторы C12, C13 — улучшится передача низких частот.
Еще можно было вывести S/PDIF, но мне некуда было приткнуть дорожку на печатной плате, да и не нужен он был мне тогда. А так, на 5-ом выводе микросхемы он находится.
Двухсторонняя, грамотно спроектированная печатная плата была бы не во вред данной конструкции. Так как под «землю» будет отведен целый слой меди — это сократит пути возвратного тока и уменьшит уровень помех. На данный момент, если рядом с этим ЦАПом лежит мобильник и принимает входящий вызов или сообщение, то в наушниках хорошо слышны всем знакомые «ты-ты-ты-ты… ты-ты-ты-ты… ты-ы-ы-ы-ы.....».

Не могу найти PCM2705...


Аналогами PCM2705 является линейка PCM2704-2707. Кратко о них:
PCM2704: 28-Pin SSOP, Headphone and S/PDIF Output, External ROM Interface
PCM2705: 28-Pin SSOP, Headphone and S/PDIF Output, Serial Programming Interface
PCM2706: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, External ROM Interface
PCM2707: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, Serial Programming Interface

Можно использовать любую из них, по качеству они одинаковы.
Даташит прилагаю в архиве вместе со схемой и платой (открывать в Sprint Layout 5).

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 52

    0
    Упоминал, что разница заметна на НЧ?
    глянь на встроенную звуковуху, посмотри какой там кондер на выходе, замени на больший по емкости и разница исчезнет.
      +7
      Понимаю. Не хочу лезть в ноутбук.
      +2
        +4
        Понятное дело. Там тоже я публиковался.
          +1
          Кросспост нехорошо. Но за материал почитать — спасибо. Жаль, что нет фото в процессе изготовления.
            +3
            Понимаю, что не хорошо.
            Первоначально и не думал писать на Хабр. Но потом все же решил поделиться с вами. И, как видно по рейтингу статьи, людям нравится.

            Когда делал, не думал, что буду потом статью катать. Поэтому и нет фото.
        0
        А что-нибудь с возможностью подключения микрофона есть? А то у меня на днях сдох кабель от гарнитуры и таким образом появилась возможность перепаять её на USB.
          +3
          Есть.
          Например, PCM2912: один микрофонный вход, один стерео-выход. Подключение по USB.
            +1
            Шикарно! Премного благодарен!
          0
          Вопрос с OSX дружит такой звук?
            +1
            В документации на микросхему написано: No Need of Dedicated Device Driver.
            По-русски говоря, нет необходимости в специальных драйверах.
              0
              good
            • UFO just landed and posted this here
                0
                Сегодня наткнулся на скриншоты, сделанные из под Mac, настроек звуковой карты на PCM2906.
                Так что серии PCM27xx и PCM29xx работают без проблем.

                0
                то что описывается в этой статье, относится к этому девайсу? я недавно себе заказал на одном из китайских сайтов по 60рублей за штуку
                USB 2.0 to 3D 5.1ch Audio Sound Card Microphone Adapter for PC

                www.tinydeal.com/ru/usb-20-to-3d-51ch-audio-sound-card-microphone-adapter-for-pc-laptop-csouad01-p-2434.html?dp=U0102

                сама фотка
                img1.tinydeal.com/images/27/35/2735_442750_CSOUAD01.jpg
                  0
                  Нет.
                    0
                    Говоря нет, я имею ввиду, что то устройство построено на более дешевом и менее качественном чипе.
                    Вы про это спрашивали?
                      0
                      Он спрашивает про схему.

                      Да там аналогичная схема. Как то интересовался и подрывался такое спаять, но понял, что дешевле 2 бакса потратить, чем пытаться паять самому… А работает уже более года карта.
                  0
                  честно в этом не разбираюсь, но я с вами соглашусь, явно за 60р. нормально не сделают. Внешний источник удобно для ноутбуков(если родная перестанет работать), а то в в моём нетбуке походу погорела плата что к звуку относится когда подключал мощную аккустику гдето 300ват.
                    0
                    Сама идея — спаять звуковую карту — уже чудесная, к тому же успешно реализованная. Конечно, из соображений практичности проще приобрести несколько китайских usb-брелоков, о которых писали выше. Но ваш подход вдохновляет на размышления: наверняка есть аналогичные м/с с цифровым выходом (S/PDIF, например), на который можно подключить уже качественный ЦАП с качественной же обвязкой.
                      0
                      Спасибо.
                      Да уже и в этом чипе есть S/PDIF выход. Но он не самого лучшего качества. Максимум позволяет гнать 16-битный звуковой поток с частотой дискретизации 48 кГц. Но для большинства записей этого достаточно.
                        0
                        Хотелось бы 24бит/96 кГц. Какой из чипов посоветуете? Хочу для работы замутить такой в одном корпусе с USB-хабом, думаю, компактно выйдет, да и запитаться от него же можно… Готовые с такими характеристиками дороговаты, так что вспомнить годы увлечения радиоэлектроникой…
                    +6
                    По поводу низких частот.
                    Вы можете оценить реактивное сопротивление конденсатора на определенной частоте по формуле Rc = 1/(2*3.14*f*C).
                    Долю сигнала (по напряжению), приходящую в нагрузку (ну то есть после конденсатора в Ваши наушники), можете оценить по формуле
                    Rn/sqrt(Rn^2+Rc^2)

                    В Вашем случае конденсатор емкостью 100 микрофарад имеет сопротивление примерно 15 Ом на частоте 100Гц и 30 Ом — на частоте 50Гц.
                    Если считать сопротивление наушников 32 Ом, то в нагрузку приходит соответственно примерно 90% амплитуды сигнала 100Гц и 72% амплитуды 50Гц.
                    Имхо с этим можно смириться. Но в нетбуке запросто стоИт кондесатор 10мкФ, а то и 1мкФ, со всем вытекающими последствиями для басов в наушниках.

                    Еще момент — насчет Вашего предположения о том, что
                    Если применить внешний блок питания с малошумящими стабилизаторами, звучание станет лучше, т.к. питание на шине USB содержит в себе очень много различных помех.
                    Питание на USB действительно очень «грязное», но обращу внимание на наличие в цепи питания стабилизатора LM1117.
                    Согласно документации на сей девайс, уровень подавления пульсаций (Ripple rejection) на небольшом токе составляет от 68 до 80dB в зависимости от частоты. Для наглядности: 68db — это примерно 2500раз, то есть пульсации уровнем в 0,1 Вольт (а это очень много) дадут вам в цепи питания DAC пульсацию уровнем менее 40 микровольт, на что смело можно плюнуть.
                    Другое дело, если Вы все же слышите гулы там какие-то абстрактные, мышку слышно, то у Вас открыт какой-то вход: линейный, микрофонный, etc. Попробуйте отключить все входы и послушать.
                      0
                      Спасибо за ликбез.
                      По поводу внешнего питания: сам не пробовал, не знаю, но на форумах говорят, что звук меняется в лучшую сторону. Не знаю, может это специфическая особенность таких микросхем…
                      Плюс к этому, разделяют питание для цифровой и аналоговой частей ЦАПа.
                        0
                        Это не конкретная особенность данных микросхем, а общая закономерность. Питание по USB грязное как правило, содержит массу шумов и не совсем может быть стабильным. Всё это не лучшим образом сказывается на линейности ц/а преобразования. И совершенно верно — далее разделяют питание аналоговой и цифровой части, дабы обеспечить еще большую чистоту питания.
                        Но естественно, что есть предел любой системы, определяемый самым узким звеном. Это может быть например и м/с ЦАП, или наушники, или питание и т.д.
                        Потенциал у 2702 не очень велик, но если не лень, то почему бы не поэкспериментировать с хорошим питанием.
                          0
                          Согласен с вышесказанным, но замечу, что речь идет не о 2702, а о 2705 :)
                          2702 по качеству стоит на ступеньке повыше, чем 2705.
                            +1
                            В данном случае это не принципиально 2702 или 2705. В принципе, разница с питанием уже хорошо заметна при использовании PCM 1794 — 1798, но usb-ресивер соответственно надо тоже искать, хотя на самом деле это тоже не проблема. А если дальше копать, то выяснится, что у USB-протокола есть свои нюансы и заставить работать корректно для вывода аудио — нетривиальная задача.
                            Как итог лично я отказался от USB в пользу SPDIF, что подразумевает необходимость приобретения также качественного транспорта…
                            Ну вот, опять Остапа понесло)
                              0
                              Если несложно, поясните в чем заключается нетривиальность реализации корректного вывода аудио с помощью протокола USB.
                                0
                                У USB как известно имеется 4 класса оконечных устройств: поточные/синхронные, управляющие, изохронные и прерывания.
                                Как правило для аудиоустройств используется поточный режим с гарантированной доставкой пакетов, но без гарантии своевременности. Это порождает повышенный джиттер.
                                Правильный режим — изохронный. Однако это естественно предъявляет повышенные требования к качеству передатчика и приемника.
                                Еще одна проблема — фиксированный размер пакета передачи, который может быть не кратен частоте дискретизации, что опять же приведет к увеличению джиттера.
                                  0
                                  У USB как известно имеется 4 класса оконечных устройств...
                                  Все же, словосочетание «оконечное устройство» является не вполне корректным переводом термина «endpoint» из стандарта USB потому, что с точки зрения протокола это никакое не устройство, а всего лишь логический адрес источника или приемника данных в интерфейсе USB устройства. В зависимости от реализации USB контроллера в конкретном устройстве, endpoint'ы могут быть, а могут и не быть реализованы аппаратно. Более корректный перевод предложить не могу. Для себя вообще избегаю перевода подобных терминов.

                                  Кроме того, вы смешали в кучу стандарт USB и спецификацию USB Device Class Definition for Audio Devices.

                                  Стандарт USB определяет четыре типа endpoint: Control, Interrupt, Bulk и Isochronous. При этом в аудиоустройствах для передачи данных используются isochronous endpoint'ы. Заметим, что такие endpoint'ы гарантируют пропускную способность и задержку, но не гарантируют доставку данных.

                                  Как правило для аудиоустройств используется поточный режим с гарантированной доставкой пакетов, но без гарантии своевременности.
                                  Наверное, здесь вы все таки имели в виду bulk-режим. Называть его поточным некорректно.
                                  Я допускаю, что такие устройства есть исходя из теоретической возможности их создания, но мне они не попадались. Если говорить об устройствах не требующих для своей работы отдельных драйверов, то есть об устройствах совместимых с USB Device Class Definition for Audio Devices, то они обязаны использовать isochronous endpoint'ы. Таким образом, ваше утверждение ложно.

                                  Спецификация USB Device Class Definition for Audio Devices определяет три режима синхроницации АЦП и ЦАП с хостом: synchronous(синхронный), adaptive(адаптиный) и asynchronous(асинхронный). Именно выбор режима синхронизации влияет на джиттер. Как именно — я покажу после того как мы дадим определение джиттеру в данном контексте.

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

                                  Вообще, такой джиттер имеет место быть в каждом АЦП или ЦАП, а основной причиной его возникновения является нестабильность тактовых генераторов используемых для тактирования преобразователей. Однако, построить хороший задающий генератор и тем самым свести джиттер к минимуму не так сложно. Проблема заключается в том, что в дешевых аудиоинтерфейсах АЦП и ЦАПы синхронизируются не от встроенного тактового генератора, а либо непосредственно от шины USB, через умножитель частоты на PLL(если конкретнее, то от 1kHz кадрового строба USB) в режиме synchronous, либо содержат дополнительный генератор который подстраевается под частоту 1kHz от USB в режиме adaptive. Нетрудно догадаться, этот однокилогерцовый сигнал в общем случае может быть очень нестабильным. И часто таким и является. Устройства второго типа подвержены влиянию этой нестабильности несколько менее, так как подстройка частоты задающего генератора осуществляется более плавно.

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

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

                                  Еще одна проблема — фиксированный размер пакета передачи, который может быть не кратен частоте дискретизации, что опять же приведет к увеличению джиттера.
                                  Это уже выдумки. Размер пакета передачи USB вообще никогда не кратен частоте дискретизации, если что. Скорее всего, вы хотели сказать что из однокилогерцового фреймового сигнала сложно получить стабильные 44.1kHz? Тогда — да. Но что за формулировка…

                                    0
                                    Всё верно подмечено.
                                    Дело в том, что я всех изложенных подробностей уже не помню, когда изучал данный вопрос, но суть передал.

                                    Что касается последнего на счёт частоты дискретизации, то размер пакета исходя из написанного в вики является константой для конкретного устройства, но только в пределах спецификации. Поэтому почему бы например не быть пакету кратным при частоте дискретизации в 48кГц?
                                      0
                                      Потому что для того чтобы пакету некоторой длины n быть кратным некоторой частоте дискретизации f, должно быть справедливым выражение: n = x*f, где x принадлежит множеству натуральных чисел. Легко видно, что n не может быть меньше f. То есть, термин «кратность» вами употреблен неверно.

                                      Однако частота дискретизации в свою очередь может быть кратной размеру пакета. Только это совсем совсем ни для чего не нужно. До тех пор пока аудиоустройству есть что воспроизводить, а именно его внутреннее FIFO для сэмплов не пустое, данные можно передавать хоть побайтно. А если случилось так, что устройству играть уже нечего, то речь идет уже не о джиттере и рассматривать эту ситуацию с точки зрения оценки искажений бессмысленно. Такой ситуации просто не должно возникать.
                        0
                        Сам подобную шнягу паял 7 лет назад. Почитал, всплакнул…
                          0
                          Ну с выводом звука по USB всё понятно.
                          А варианты с вводом S/PDIF есть?
                            0
                            Ввод S/PDIF по USB? Есть.
                            PCM2902 имеет на борту аналоговые стерео вход/выход, S/PDIF вход/выход.
                              –2
                              В децтве когда Sound Blaster был не по корману, а Doom и W3D хотелось поиграть со звуком не из системника спаивал такую штуку для LPT

                              image
                                0
                                А за что человека минусуют? разве что за неудачный выбор фотохостинга. Covox — это было круто!
                                +1
                                На вашей схеме перепутана полярность конденсаторов C12 и C13. Оба эти конденсатора должны быть подключены плюсовым выводом к микросхеме, а не к нагрузке (см. даташит). Кроме того, кажется немного странным выбор значений емкостей конденсаторов в обвязке линейного стабилизатора DA1: C9 слишком мал, а C10 наоборот, слишком велик.
                                  0
                                  Благодарю, опечатка вышла. Сейчас поправлю.
                                  По поводу обвязки DA1 — согласно даташиту, вы правы. Я не помню, что меня сподвигло поставить такие номиналы… Скорее всего отсутствие опыта.
                                  +3
                                  Отличный опыт. Спасибо, что поделились!
                                  Но обязательно оформите в корпус. Плата, не помещенная в корпус — это как ненапечатанная цифровая фотография;) Устройство должно радовать взгляд.

                                  PS: Не обращайте внимание на брюзжжание некоторых про кросспост. Хотя можно было бы местами поменять текст, с учетом разного уровня подготовленности аудитории…
                                    0
                                    Спасибо!
                                    С корпусом повременю… Есть мысль распаять его и сделать совершеннее, как я писал — заводская ДПП, внешний БП, выход S/PDIF и т.п.
                                    0
                                    Какой интересный опыт!

                                    А никто не подскажет, это будет работать с OpenWRT? А то я уже задолбался искать работающую карточку USB для роутера.
                                    Кстати, может ли быть такое, что usb звуковуха не работает только потому, что роутер wl-600g, а не из других популярных моделей? Хотя модули те же устанавливаются спокойно…
                                      0
                                      Эта OpenWRT вообще звук поддерживает?
                                        0
                                        По идее да, в инете есть примеры превращения роутеров в интернет-радиоприемники
                                          0
                                          Эта корточка использует стандартные дрова ОС на USB. Есть ли такие в роутере, я не знаю.
                                            0
                                            *карточка :)
                                      0
                                      а на базе чего можно сделать АЦП? Хочу USB переходник для гитары сделать (там line-in, насколько я понимаю), а китайские usb звуковые не работают
                                        0
                                        См. ниже.
                                        Я что-то затупил и написал отдельный комментарий, а не ответ на Ваш.
                                        0
                                        Не подскажите кстати где можно найти готовый переходник с s/pdif на обычный аналог ближе чем на ибэе?
                                          0
                                          А тут выше в комментариях я писал:
                                          PCM2902 имеет на борту аналоговые стерео вход/выход, S/PDIF вход/выход.

                                          Only users with full accounts can post comments. Log in, please.