Привет, датагорцы! Вы уже собрали, сожгли, повторили один-в-один за автором или даташитом простенький ЦАП? А более сложный?
Доработали имеющийся самодельный или купленный? Результат, независимо от результата, вас порадовал?
Услышали разницу между мультибитом и дельтасигмой? Поменяли ОУ, БП, конденсаторы, резисторы, разъемы?
Тогда, я думаю, пора уже сделать следующий шаг. Очередной или последний, как штрих на картине мастера.
Содержание статьи / Table Of Contents
Сложность устройства растёт, а качественные показатели остаются на прежнем уровне. Ведь как не крути по плате корпуса и компоненты, в результате всё равно получится тот же паровоз, только немного другой формы. По сути, изготовленная на коленке по технологии ЛУТ плата, никогда не сравнится по качеству с заводской. Есть конечно уникальные люди, что делают и металлизацию и паяльную маску на коленке дома, но, при всём моем глубоком к ним уважении, повторить это дома невозможно в принципе.
Зато, если заказать изготовление платы на заводе, то получим что-то подобное:
А вот его спектр, измеренный на коленке побитым молью Creative Sound Blaster X-Fi HD:
Даже, с учётом моих кривых рук, уже заметен некий прогресс в качестве. Конечно, с 2% THD и -60dB noise level лампового hiend-а это не сравнить, но уже немного поинтереснее, чем у меня было измерено ранее на моих прежних поделках.
Но сейчас речь пойдёт не о нём, а о несколько другом девайсе, по характеристикам ничем не уступающим этому.
А об упомянутом я немного расскажу ближе к концу статьи.
↑ Вступление
Все началось почти случайно, когда я искал какую-то железку на Алиэкспрессе и мне у одного продавца попался лот, где предлагалось изготовление плат на заказ. Сумма была указана (хе-хе) в один американский доллар. Меня это заинтересовало, и я решил написать письмо с просьбой разъяснить, что требуется от меня, а что взамен мне даст он.Оказалось всё относительно просто. От меня нужен gerber файл моей платы, а от него расчёт суммы, конечно же отличающейся от одного доллара.
И тут начался долгий путь по граблям и лопатам. На рынке встретились два дурака. Я никогда не работал с Gerber, он плохо понимал по английски.
После мучительной переписки выяснилось, что китаец вполне может сделать мне плату прямо из файла в lay6. Нет, дело не в том, что у меня нечем изготовить Gerber—файл, а в том, что я не был уверен, что все слои будут выданы правильно и как нужно мне.
Кто-то скажет, выкинь этот Sprint Layout! Есть же Diptrace, Eagle, и даже Altium. Но на данный момент у меня были готовые платы, даже пока еще не двухсторонние, а тратить время на изучение мощного CAD мне не хотелось. Если получится — тогда можно начать.
Для пробы я решил заказать отработанную конструкцию БП. И небольшой размер, и проверенная плата, и напильником можно доработать, если что... Когда пришёл заказ, я был приятно удивлён качеством.
После такой платы нет желания смотреть в сторону ЛУТ, как это не печально.
Естественно, воодушевлённого Остапа понесло.
И я на радостях заказал конструкцию из прошлой части, доработав рашпилем макеты плат под двухсторонний дизайн.
Инвайт от pcbway! Регистрируйтесь по ссылке, получите приветственные $5 (10 плат 100×100 мм). Всё по-русски.
Собрал, запустил. Но настоящего удовлетворения я не получил. Ведь это, по сути, был проект под ЛУТ и выводные компоненты, просто изготовленный на заводе. Да, он работал с первого включения, работал как надо, но ощущение «пива без водки» не покидало меня с самого начала...
Надо было что-то поменять или в консерватории или в обсерватории. Вот тут началось самое сложное. Нужно было в корне менять всё то, к чему я привык.
Всегда по-доброму завидуешь людям, чья работа связана с разработкой. Тебе дают инструменты и знания. Твоя задача — использовать данное.
Мне пришлось в который раз начинать сначала. А именно – переносить все активные компоненты на верхний слой, а нижний использовать как экран и питание. Использовать везде новые для меня компоненты SMD 0603. Поэтому, вполне естественно, первый реальный комплект плат был использован мной, как тренировочный полигон для пайки SMD мелочевки разными флюсами.
Но я даже паять его не начал… А всё потому, что я забыл отзеркалить EPM240, при переносе ее со слоя «bottom» на «top».
Вот всех отзеркалил, а её нет. А там 100 ног!..
Только предлагать перевернуть и отформовать выводы ПЛИС из-за кривой платы не нужно — и так иногда плохо сплю, а тут и подавно не будет покоя...
Во второй конструкции я забыл провести несколько управляющих линий до ПЛИС. Пришлось колхозить проволокой...
Но зато результат порадовал!
На радостях я даже достал из коробки давно выброшенный на свалку истории снятый с работы комплект РСМ58 и запилил несложный ЦАП на них.
А когда отрегулировал оба канала, то результат был для меня несколько неожиданным...
Это для РСМ58!
Это на столе, без корпуса, поэтому 50/100 Гц вылезло сразу.
Но зато стало ясно –
На этом вступление
↑ Где схемы? Где описания?
Ну а теперь то, ради чего мы все здесь собрались.Читатель наверное уже давно желает спросить, ну и что ты тут накидал? Где схемы? Где описания? Что за рекламная кампания?
И ведь если спросит будет прав!
Сразу покаюсь. Когда я наконец оттормозился и посмотрел на гору изготовленных новых и разобранных старых ЦАПов, то вспомнил, что схем-то я не рисовал!
Ну, реально. Просто не до них было. Ведь большинство узлов так или иначе уже мной описывались и использовались в предыдущих конструкциях. Нужно было только их доработать под SMD, расположить на плате и написать прошивки под ПЛИС и контроллеры.
Но на полке стояло еще пара ЦАП, которые я хотел переработать и изготовить на новых платах. Поэтому я начал... рисовать схему...
Сначала открыл Splan. Подумал. Закрыл. И пошёл качать Altium. Для ознакомления.
Когда перед тобой лежит на столе рабочий ЦАП, можно расслабиться и отвлечься на изучение чего то нового.
Почему не DipTrace, спросите вы. Ну не понравился он мне. Именно редактор печатных плат. Слишком много надо кастомизировать. А резисторы «зигзагом» - это на любителя журналов по электронике 50-х годов. Мнение мое личное, так что любители не обижайтесь, первое впечатление отрицательное...
Altium тоже хорош. Если делать сквозной проект, то первое, на что натыкаешься — это полное отсутствие библиотек под АКМ. Да и под половину применённых компонентов их просто нет. А значит надо их делать самому, привязывать к физической модели, описывать. Ради одной платы?
Нет, будем рисовать схему!
Снова небольшое отступление. В принципе, если не заниматься профессионально разработкой электронных устройств — то мне вполне хватает Sprint Layout и Splan.
Потому как даже на 23 дюймовом мониторе мне не хватило места для комфортной работы в Altium, не говоря уже о серьёзных требованиях к железу. Поэтому не спешите, если оно реально вам не нужно.
Подопытным кроликом у меня будет последняя на момент написания конструкция ЦАП на SRC АК4137 и DAC АК4490. Управление от контроллера STM32F103CBT6 с TFT дисплеем на ILI9341. Всего три блока. Блок питания на уже набившей оскомину FSFR1700, блок управления режимами ЦАП и ресемплера + индикатор условного уровня сигнала, и непосредственно сам ЦАП, где можно применить как АК4490, так и АК4497, модуль ЦАП сменный, в прошивке добавляется несколько строк (без добавления не будет работать DSD и 5й фильтр).
↑ Начнём с БП
Схема ничем новым не отличается, разве что с применением SMD плата стала сильно меньше.
Как с ним бороться, я уже рассказывал. Но если собрать по схеме и намотать как надо – бороться не нужно. Их у меня работает штук пятнадцать и ни одного сбоя.
↑ Более интересен блок управления
Изначально я проводил вполне успешные эксперименты с готовыми модулями типа MapleMini на базе STM32. Но в данном проекте количество управляющих ног несколько увеличилось, что потребовало применение контроллера в чистом виде.
К тому же сбылась моя давняя мечта, и у меня наконец то появился показомер. Все благодаря трудам моего коллеги программиста, что смог адаптировать код управления АЦП для визуализации аналогового сигнала. В проекте еще анализатор спектра, но он пока сырой, и в работу не запущен. Зато обычные линейки с фиксацией пиковых значений вполне нормально работают.
Сам контроллер STM32F103CBT6 включён по схеме из ДШ. Встроенный АЦП запитан через отдельный фильтр L2C10C12. Из стандартной периферии используется только SPI. SPI1 рулит дисплеем, SPI2 программирует ЦАП, ресемплер и электронный регулятор громкости на потенциометрах МСР41. Перед АЦП находится усилитель, а точнее буфер на ОУ DA1.
Напрямую подать сигнал на вход контроллера нельзя, АЦП жестко ограничен уровнем 3,3В, поэтому после ОУ стоит делитель R11R12 R17R18. ОУ работает от 5В однополярного питания. Детектирование сигнала не предусматривалось, так как планировался анализатор спектра, а ему нужен именно сигнал, а не его среднеквадратичный уровень. Также буфер отвязывает выход ЦАП от цифровой части устройства.
Программирование контроллера через адаптер Stlink. Так как пришлось отказаться от USB и RS232, по умолчанию включённых в устройствах Arduino, были внесены изменения в исходники и в прошивку. Освободившиеся ноги стало возможно использовать как GPIO. В результате получился вот такой модуль.
На заднем плане – дисплей. Впаивается последним с обратной стороны. Там же кнопки и подсветка.
Подсветка нужна для того, чтоб при ночном релаксе не потерять сам ЦАП и не нажать случайно не ту кнопку.
С дизайном у меня как обычно напряг, но для информации вполне достаточно.
Кнопки:
IN – выбор рабочего входа по кольцу (I2S-Spdif Coaxial-Spdif Optical-I2S и т.д.)
SR – Sample Rate после SRC. То есть принимая поток 44,1кГц, на ЦАП я могу подать его же, но уже в 176,4кГц. Переключение по кольцу (44,1-88,2-176,4 и т.д.)
PCM DSD – режим работы SRC. Четыре режима для РСМ (PCM-PCM, PCM-DSD, DoP – PCM, DoP- DSD). Два последних работают аналогично двум первым.
Два режима для DSD (DSD-PCM, DSD-DSD). Переключение по кольцу.
FR – Filter Responce – режим работы ЦФ ЦАП. Для PCM и для DSD отдельно.
Все параметры, заданные кнопками, пишутся в память. После включения питания устанавливается последняя рабочая конфигурация.
Громкость — при нажатии и удержании кнопки Vol+ происходит увеличение громкости, при нажатии Vol- уменьшение. Отпускание – текущее значение остаётся и записывается в память.
Крайние значения – 0% и 99%. (для 100% нужно уже три знакоместа, что не лезет по ширине окна, да и стар я уже, чтоб слушать на 100% громкости!).
Индикация уровня сигнала – диапазон около 40dB, можно расширить немного, но так как измеряется не постоянная составляющая, а мгновенная, то вылезают неточности в работе АЦП на малых уровнях, что вызывает мерцание первого сегмента в паузах.
Кратковременное запоминание пиковых значений сигналов (диапазон настраивается программно). Можно задать пики на всю шкалу – но тогда на малых значениях получается каша из пиков и полезного сигнала. В прошивке установлено от 25го сегмента из 48.
Запоминание пикового значения настраивается программно – по умолчанию 1000мс.
Измерение частоты семплов – в реальном времени. Сделан «коридор» для погрешности измерения (например от 43900Гц до 44300Гц выводит на экран 44,1). При отклонении от заданного коридором значения – выводит 0,0 и включает реле, блокируя выход ЦАП.
Значение после SRC фиксированное, так как оно уже заранее известно.
Как подружить Arduino и STM32 — я уже писал, ну или можно почитать Arduino_STM32/wiki (En.).
↑ Теперь самое главное – ЦАП
Так как лист большой, внизу доступен для скачивания в PDF.
Данный ЦАП — сборная солянка из светлых идей, даташитных рекомендаций и оттестированных в других конструкциях модулей.
Так как я не бросил идею использовать патчкорды CAT7 для связи моих XMOS источников I2S и ЦАП, то имеем три входа – I2S, Spdif коаксиальный и оптический.
В качестве приёмника SPDIF служит проверенная временем АК4113 (DD3) в типовом включении с хардварным управлением. Управления там не много – переключение входов и смена режима PLL в зависимости от частоты семплов поступающего потока. На дисплее выводится захват PLL как индикация.
Селектором входов выступает ПЛИС Altera EPM3064 (DD5). На ней же реализован делитель частоты для частотомера и селектор потоков для вывода DSD или PCM на входы АК4137 (DD7). Там же находится переключатель режимов master/slave. Как бороться с ПЛИС — я писал ранее.
Входная часть гальванически изолирована от источника через развязку IL715 (DD2), вывод MCLK на источник через ADUM1100 (DD1), а также управление режимами ЦАП через оптопары РС817 (VT16-VT19). Если ничего не подключать ко входам через RG45, ЦАП будет находиться в режиме slave для приёма потока РСМ через вход I2S.
Можно не использовать RG45 – на плате предусмотрено место под гребенку, куда выведены все входные сигналы.
Цифровая часть питается от линии цифрового питания БП. Все основные узлы запитаны от отдельных стабилизаторов.
Сама микросхема ЦАП вынесена на съемный модуль, для возможности использования вместо АК4490 более современную и дорогую АК4497.
Питание ЦАП от отдельный источников, построенных по схеме ИОН-Фильтр-ОУ, с успехом применяемой у многих гуру цапостроения. В качестве ИОН применены обычные стабилитроны. На схеме не указаны номиналы резисторов, так как для разных стабилитронов они буду отличаться. Соотношение резисторов легко посчитать для конкретного типа стабилитрона. Для снижения падения напряжения на стабилизаторах питания ЦАП и уменьшения рассеиваемого тепла перед стабилизаторами установлен дополнительный стабилизатор DA2, понижающий входное напряжение до +9В.
Питание выходной части также организовано от отдельных стабилизаторов той же системы. Только здесь каждый канал запитан от отдельного стабилизатора. Здесь я указал стабилитроны на 6,8В, поэтому резисторы будут одинакового номинала и на выходе получается +/-13,6В, что вполне достаточно для большинства ОУ.
Выходной фильтр-вычитатель, по мотивам Lynx D60. Для экономии места и оптимизации топологии в фильтрах применены сдвоенные ОУ, в вычитателе – одиночные. Есть вариант разводки под soic, там вообще красиво все и все ОУ сдвоенные, но я пока не стал ставить точку в типе применяемых ОУ, поэтому пока DIP.
В качестве контрольного усилителя или усилителя для наушников применён проверенный временем BU634 (DA20-DA21) в паре с ОУ (DA19) по стандартной схеме.
Питание от отдельной группы стабилизаторов (DA7-DA8).
Регулятор громкости – электронные потенциометры МСР41HVX104 (DA17-DA18), которые я до этого с успехом применял в предварительном усилителе. Они дешевле, чем PGA2320 при схожих ТТХ. Выход при смене режимов работы блокирует реле, чтоб избежать щелчков при смене форматов или режимов работы.
ЦАП и контроллер соединены плоскими шлейфами с одноименными названиями выводов на обоих концах. То есть сигнал, например pdndac на модуле управления и на модуле ЦАП — это один и тот же человек.
Еще заметил одну закономерность в первых версиях – статика. Зимой, когда диэлектрическая проницаемость обуви растёт, да и шерстяных изделий одевается больше, чем летом, при касании корпуса ЦАП иногда начисто слетают настройки регистров, причём только у ЦАП. Потенциометры от этого не страдают. Поэтому на линию SPI навешаны резисторы R171-R177. Летом проблемы не бывает, но осадочек остаётся.
При разработке платы стояла у меня перед самим собой стояла задача – запихать все с ногами в спичечный коробок, максимально оптимизировать дизайн и размер платы, поэтому получилось очень компактно. Это вызывает сложности при сборке. Например, сначала надо запаять ВСЕ smd-компоненты, пассивные и активные, проверить наличие «соплей» и непропаев, а уже потом паять все выводное.
При этом проверить работу я могу только после полной сборки, что внушает некий страх и дискомфорт – вдруг что-то не заработает, и придётся отпаивать и впаивать заново какой то компонент. К счастью, всё работает с первого пуска (если собрано как надо). А вот при отладке первой версии я например случайно спалил STM32 на блоке управления – пришлось повозиться с заменой на собранной плате.
Первое включение без ЦАП и ОУ, чтоб минимизировать возможные потери.
Измеряю все напряжения, и если все в норме – прошиваю ПЛИС.
↑ Далее - сменный модуль
Вот его схема.И тоже самое для АК4497.
Вообще АК4497 я выкладываю больше для информации, она у меня одна и работает в другом девайсе, но так как модуль легко заменяется, то пусть будет для ознакомления.
*Фото другого модуля — у меня их несколько.
Дальше втыкаем ОУ, модуль ЦАП, соединительные линии и пробуем взлететь!
Слева лежит «Stlink» для отладки прошивки.
Ещё один момент. Обратите внимание на экранированный кабель от выхода ЦАП. Там их пара. Один идёт на индикатор уровня, второй на разъёмы линейного выхода. Линейный выход получился далеко от выхода вычитателя, поэтому пришлось тянуть кабелем, чтоб не нахватать помех на плате.
Подаём сигнал с источника и на экране и на выходе будет результат работы.
Транспаранты SPDIF и SRC – двух цветов. Красный – «не готов/нет сигнала», зеленый – «готов/норма». SRC не поднимается, если нет сигнала PCM/DSD на его входах или сигнал неверного формата. Остальное – индикация текущих режимов работы. То есть сейчас работаем от входа I2S, входной поток 88200 Гц, конверсия в DSD 64 срез фильтра DSD – 50кГц, громкость в наушниках – 18% по линейной шкале от максимума. Градуировать в dB можно, но от чего отталкиваться, что брать за 0dB, если это выход на наушники? Поэтому сделал в процентах.
Теперь настало время чем-нибудь померятся. Хоть эта процедура и не обязательна, все равно линейка подуставшая, но наглядный пример это лучше тысячи слов о том «как оно звучит».
↑ Лирическое отступление о копчёном Саундбластере
Мне везёт на изделия от Cirrus Logic. Это наверное мне наказание за то, что я когда то давно купил пару CS4398+CS8416. Смысл этого поступка я не могу себе объяснить до сих пор, но они так и лежат уже лет семь в заводской упаковке.Поэтому в качестве АЦП для измериловки мне достался CS5361 в составе карточки Creative Sound Blaster X-Fi HD. Ее владелец слегка её «подпалил» при попытке измерить THD усилителя мощности. Так она оказалась у меня, с выжженным входным коммутатором и глючным DC/DC по шине -5В.
DC/DC я восстановил, а вот коммутатор пришлось выкорчевать и подать сигнал прямо на ОУ входного фильтра АЦП через переменник. На функционале это не сказалось, ну отвалился микрофон и теперь у меня вечный Line IN, но зато тракт заметно укоротился.
Но дело не в этом, дело в частоколе гармоник, которые показывает этот девайс при измерении по кольцу.
Вот тут они вокруг основного тона. Когда уровень основного тона выводим до 0dB, то частокол растёт до -40 -50dB, что визуально портит всю картину. Если уровень понижать, то эти пики спадают, но в какой то момент начинает расти значение THD. Поэтому приходится работать примерно посередине. Этот эффект — искажения АЦП. Если потрогать ручонкой плату возле АЦП, то уровень их меняется, но не исчезает совсем.
Аналогичный эффект я наблюдал и на звуковухе Asus Xonar U7. И там тоже в АЦП изделие от CS, как бы не точно такое же...
Поэтому наша задача получить результат не хуже.
Режим измерения — 24бит 48кГц. У Creative нет сетки 44,1. Вообще.
Подключаем наш ЦАП и вот результат.
Вполне закономерный результат: почти нет различий, но общий уровень лучше измерительной карточки. Насколько — я не могу сказать.
↑ Несколько слов про ЦАП на самом первом фото
Этот ЦАП является прародителем описанного здесь устройства. Там модуль управления более простой, с применением готовой демоплаты на STM32F103C8T6, немного другой схемой ушного усилителя и отсутствием SRC.Аналоговая часть, как и ее питание — осталось без изменений и перенесена в текущую конструкцию. Схемы под этот ЦАП нет, но есть прошивки и рисунки плат. Зато конструкция в железе отработана на 100% и не содержит ошибок.
Мой коллега проводил сравнительное прослушивание с привлечением независимых экспертов, а точнее просто друзей. Единодушно эта версия на АК4490 переиграла встроенный ЦАП в Marantz PM-6005, чем сильно огорчила его владельца.
И на нем я проводил первичное тестирование загадочной и неоправданно дорогой АК4497, где она и осталась работать по сей день.
В связи с этим могу сказать одно — отличий на слух от АК4490 не замечено. Измеряется немного лучше. Скорее всего это улучшенная версия АК4490 с возможностью умощнения выхода (она может работать прямо на наушники и снизу у нее металлическая пластина).
Регистр HLOAD не задействовался. Programmable FIR filter отсутствует. Особое внимание следует обратить на регистр DSDPATH — я потерял час времени, пока разобрался. В целом, кроме цены, минусов не замечено.
↑ Общие рекомендации по применению АК4490
Не жалейте емкостей по аналоговому питанию. Ощутимое отличие по воспроизведению НЧ на емкостях в 470мкф и 2200мкф.Качественное питание — залог успеха. А звуком она порадует, несмотря на невысокую цену!
↑ О цене работы
Отдельно хочется заметить про финансовую сторону вопроса. Я не считал и не смогу сейчас посчитать, сколько стоила разработка. И сколько было затрачено времени и денег на нее. Но дофига и того и другого. Если вам предложат неподъемную сумму за разработку, то не думайте, что этот человек барыга.Разработка — это реально затратный и трудоёмкий процесс. Поэтому — или китайский тяп-ляп по цене ниже цены компонентов, или выстраданный многими часами оригинальный девайс «ручной» работы. Выбор всегда за вами.
↑ Резюме
СНа это есть ряд причин, и одна из основных — здравый смысл.
Я свою задачу выполнил. Источник сигнала у меня выше по уровню, чем несколько топовых аудиокарт, но, самое главное, я не слышу разницы в звучании последних поделок. Поэтому не вижу смысла тратить время и деньги на разработку очередного «паровоза» или давно изобретенного велосипеда.
Из того, что изготовлено в цикле статей, 100% разобрано, и переделано, и, реально, работают три последних ЦАПа дома и два на работе.
Можно сделать что-то еще лучше, можно попробовать другие модели, тот же ESS90*, можно подождать АК4493, и получить результат, который на слух не отличат 99,9% слушателей. Можно прикрутить лампы к выхлопу, послушать шум, поглядеть на красивый свет стеклянных баллонов и… положить на полку или разобрать. Или можно слушать и искать что-то новое.
Мне пока достаточно того, что сделано, да и сменить профиль не помешает. Например заинтересовал меня класс D.
Дойдут руки — обязательно пощупаю, и наверное выложу лабораторную работу.
Ну а пока все.
↑ Файлы
🎁 Платы, схемы 404.39 Kb ⇣ 253🎁 Прошивки 465.07 Kb ⇣ 207
🎁 Прочее 539.9 Kb ⇣ 223
Спасибо за внимание!
Алексей
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.