maxssau

Несложный ЦАП на AK4490

110 posts in this topic

aitras    1545
4 часа назад, maxssau сказал:

- кол-во слоёв платы

- наличие генераторов на плате. Нужно, не нужно? какие генераторы? Гашение питания или выхода?

- входной разъем I2S, какая распиновка? кто какие транспорты использует? нужна ли плис на входе, если несколько входов I2S?

Если есть возможность, то 4 слоя лучше.

Можно сделать как у Андронникова в Lynx OSC77. Выходы генераторов пустить через буферы с 3 состояниями, и также отключать питание. Максимально универсальный вариант для любых генераторов.

У изделий от Energy Audio два стандарта - от aal, и от Lynx. Можно привязаться и к Amanero. Я вот себе взял за основу Lynx'a. Тут зависит от того, с каким транспортом хотите использовать ЦАП. Если несколько входов, их нужно как-то коммутировать, ПЛИС-кой проще всего.

Share this post


Link to post
Share on other sites
kdas    72

Китайцы их практически стандартизовали :crazy: Называется, найди отличия здесь и здесь

Но мне без разницы. Мне кажется, всё проводками можно попереткнуть как надо кому.

Share this post


Link to post
Share on other sites

Вебинар «Тонкости применения транзисторов CoolMOS серии P7»

13 июня компания КОМПЭЛ приглашает вас принять участие в вебинаре, посвященном особенностям и тонкостям применения транзисторов компании INFINEON из серии CoolMOS, имеющих малые размеры кристаллов. Речь пойдёт о тепловом поведении транзисторов, об энергии лавинного пробоя и многом другом

Подробнее...

BARS_    968
Только что, maxssau сказал:

наличие генераторов на плате. Нужно, не нужно?

Не просто нужно, а обязательно. Именно от них должен тактироваться транспорт.

 

Только что, maxssau сказал:

входной разъем I2S, какая распиновка

Без разницы.

 

Только что, maxssau сказал:

наличие контроллера на плате? что должен выполнять?должен ли выполнять управление всем ЦАП'ом (индикация, кнопки и т.п.)

Лично по моему мнению (ориентируюсь на плату, которая у меня) он должен управлять ЦАПом (переключать фильтры и т.п.), переключать генераторы для соблюдения разрядной сетки (транспорты, обычно, умеют выдавать сигнал для этого), управлять MUTE (желательно, чтобы выход ЦАП сажался на землю, поможет избежать щелчков. Можно и разрывать цепь выхода, но тогда к реле будут несколько иные требования). Индикацию на нем делать бессмысленно, т.к. для каждого к ней свои требования, проще сделать ее отдельно, тем более, что все необходимые сигналы для ее реализации выдает транспорт. 

 

Можно сразу на плате поставить гальваноразвязку I2S и служебных выводов, которые идут на МК (для этих можно оптопары). Мастерклок с ЦАП тоже требует развязки.

Share this post


Link to post
Share on other sites
Vector-A    291

И ещё, ведь не одним USB жив ЦАП. Как пример идеи: Digital-Receiver 
Внешняя плата для тех у кого есть  Аманеро, тут и селектор входов и индикация. 

2 часа назад, BARS_ сказал:

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

Тоже так думаю. Реализацию индикатора себе уже заложил.:)

 

Share this post


Link to post
Share on other sites

Управляемый свет интернета вещей: Philips и протокол DALI 2.0

Полностью программируемые драйверы Philips Xitanium поддерживают все варианты регулировки яркости света и силы тока. Надежность системы значительно повышается при интеллектуальном мониторинге температуры светодиодного источника света. Разнообразие моделей в семействе обеспечивает максимальную гибкость в настройке рабочих параметров.

Подробнее...

maxssau    29
[mention=193590]maxssau[/mention]  Надеюсь, что это пока пилотка, потому как желтоголовая многослойная керамика там вообще не в тему........ Про контроллер рядом с микрухой ЦАПА - это явно на любителя экстрима.
Естественно пилотка. Для сбора рекомендации выложил, опыта проектирования подобных вещей мало.

Фото сразу после сборки. Номиналы фильтра сейчас другие, поставил wima fkp2, посадочные площадки как раз под них и сделаны.

Чем контроллер не угодил? При желании его можно вообще в сон отправить и будить только при изменении состояния ног (если конечно не ошибаюсь)

Share this post


Link to post
Share on other sites
maxssau    29

Подводя итог всего вышесказанного:

- питание, как у Дмитрия Андронникова

- генераторы на борту с отключением питания и буферными элементами

- плата 4 слоя

- I2S с изоляцией + простенькая изоляция для сигналов управления (44/48, MUTE, DSD_EN, F0-F4 для выбора фильтра)

- контроллер простой, для управления режимами работы ИМС ЦАП

- MUTE реле

Всё правильно понимаю? Про выхлоп нет ничего, всех всё устраивает?

Share this post


Link to post
Share on other sites
kdas    72

Опция внешнее/внутреннее тактирование. Но это потребует две МС изолятора... 

Голые выходы с ЦАП (через 1-2кОм) для внешнего выхлопа. Еще панельки для ОУ выхлопа просили вроде под DIP. Мне кажется, что это уже стандарт "де факто".

Share this post


Link to post
Share on other sites
Vector-A    291

- питание, Вам решать.
- отключение питания генераторов и буферные элементы это больше для универсальности, под разные типы генераторов. 
- на плате с 4-мя слоями легче развести земли секторально, что в системах со смешанными сигналами очень полезно. Главное сделать грамотно.
- изоляторы для шины и управления нужны для пользователей Аманеро и XMOS, на транспортах Энергетика всё это есть.
- контроллер простой.
- MUTE реле, 2 штуки. На каждый канал своя.
- выхлоп для успокоения буферизировать.
И в итоге получится примерно как у BARSa :).  Ну а по большому счёту, если делать для себя любимого, то остановился бы только на 4-х слойной плате. По цене не сильно дороже двух, а пользы много.  Всё остальное исключительно под имеющиеся в наличии комплектующие и желаемый транспорт. 
 

Share this post


Link to post
Share on other sites
kdas    72
37 минут назад, klaid1971 сказал:

к чему двойной мудрежь

Ну не все-же покупают платы у Энергетика. Эта плата -  конструктор, в котором можно опции выбрать. Не запаивать изолятор и поставить разъём напрямую. Или наоборот.
Китайский транспорт стоит 1500-2500 рублей. Сравнимо? Я просто не знаю цены на платы Энергетика.

Кстати, хороший пример, как такие платы конструировать и продавать у Джона Броски на tubecad.com. По максимуму опций в зависимости от желаний и способностей кармана. И продаёт от голой платы до практически полного набора ключевых компонентов.  При этом все схемы и описания в открытом доступе - бери и делай. Не знаю, насколько это выгодно и насколько выгоден может быть такой подход для обсуждаемой платы. Я ни разу бизнесом не занимался. Просто идеи.

Share this post


Link to post
Share on other sites
maxssau    29

Я основной ориентир делаю скорее на SPDIF, т.к. меня данный интерфейс не привязывает длиной провода, да и вообще не привязывает к компьютеру. Но в то же для время игнорировать популярные интерфейсы не буду. Поэтому на плате попробую уместить опять 2 разъема, распиновка Lynx и изолированный I2S для своего транспорта или плат вроде аманеро, xmos, cm6631a

Share this post


Link to post
Share on other sites
MaratAM    29
21 час назад, kdas сказал:

Я просто не знаю цены на платы Энергетика.

3500, а китайский с изоляторами как раз столько и будет. Плюс Болеро кроме частоты еще и битность потока выдает. Ну и бонусом можно потоки отдельно по каналам выдавать, левый и правый.

Edited by MaratAM

Share this post


Link to post
Share on other sites
kdas    72

Кстати, ещё простую опцию забыли - Перевод выходного ОУ в "А" класс (подтяжкой к минусу или плюсу питания). Дополнительный резистор на выходе не сильно усложнит разводку, т.е. цена вопроса небольшая. Илья и Alex так делают. Посмотрите на обсуждение. LME в А классе звучат лучше.

Edited by kdas

Share this post


Link to post
Share on other sites
maxssau    29

Я пробовал такое с CS4398, ни на слух ни на графиках разницы нет. В каком цап'е Алекс перевёл выходной каскад в класс А? На моей памяти он использует первый ОУ полностью дифференциальный, в котором 2 вывод (Vocm) подключен к VCML выводу ЦАП' ы, соответственно задающий напряжение смещения 2.67 вольта. У меня тоже так сделано, для этого на плате стоит ОУ NE5532 в качестве повторителя. Сумматор у Алекса без подтяжки.

Добавить резистор не проблема, будет ли толк в этом, кроме нагрева ОУ

Share this post


Link to post
Share on other sites
kdas    72

Да, перечитал по-внимательнее описание ADAC-10. У него все ОУ КРОМЕ выходного в классе А. А вот Илья и выходной сделал. Мне кажется, одно место для smd в выходном ОУ не сильно всё усложнит. Ух у всех разный, да CS4398, возможно, не имеет того потенциала, что AK4490. Но решать Вам.

Share this post


Link to post
Share on other sites
maxssau    29

Кстати, дайте пожалуйста ссылку на описание ЦАП Ильи, не читал

Share this post


Link to post
Share on other sites
kdas    72

Это не ЦАП Ильи, это твик китайского кита на AK4399. Но какая разница, по сути. 

Интересно, что перечислены все изменения в схеме, которые существенно влияют на качество.

Насколько я понимаю, Илья сделал и свою плату, но я не видел отдельного описания - не весь форум прошерстил еще.

Edited by kdas

Share this post


Link to post
Share on other sites
kdas    72

Немного Offtopic для оживления темы:

Потвикал немного свою платку из Китая, которую раньше показывал:

  • Сделал питание 5В ИОН+ФНЧ+ОУ раздельное для левого и правого канала
  • Заменил стоковую AD827 на LME49720

Ну конечно звук по-лучше стал. Стоковый как-то странно вообще звучал.

Планирую еще китайские "ничиконы", "эльны" и "филипсы" заменить на что-то по-приличней. Да и еще с цифровым питанием разобраться надо. Там от одного LT1085-3.3 питается и аудио, и цифра. Правда надо заметить они какую-то из них блокирующей индуктивностью отделили от другой. Думаю, что надо неиспользуемый LT1085-5 заменить на 3.3 и запитать цифру отдельно.

Но в целом играет как-то интереснее CS4398, который есть у меня. Сравнение, конечно, не совсем корректное. Выхлопы принципиально разные. И его тоже надо твикнуть по-нормальному.

IMG_20180425_120647.thumb.jpg.5cfe57b9c9926bce9c36f518e937150e.jpg

Share this post


Link to post
Share on other sites
Vector-A    291
1 час назад, kdas сказал:

Выхлопы принципиально разные. И его тоже надо твикнуть по-нормальному.

Если есть возможность, то схему выхлопа из поста 1 попробуйте, на диф.ОУ. Да и Ваш ламповый может тоже ...:)

Share this post


Link to post
Share on other sites
maxssau    29

Циррусовский преобразователь звучит не так детально как АКМ. При правильном приготовлении звук отличного качества, не с проста циррусы стоят во многих аппаратах с не скромным ценником. Достать бы сэмпл CS4399, но циррус давно не хочет высылать в Россию.

Share this post


Link to post
Share on other sites
kdas    72
1 час назад, maxssau сказал:

Достать бы сэмпл CS4399

Его ж паять неудобно. Либо BGA, либо QFN.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By IgnatiusF
      Не могу настроить таймер 0 на работу, и даже не получается понять в чем проблема. Делаю в Proteus, так как это быстрее и нагляднее.
      Пробовал и просто по переполнению делать прерывание (WGM[1..0]  00) и по совпадению (WGM[1..0]  10; OCR0A = 0 - 255), однако прерываний нет. Перед циклом ставлю TCNT0 = 0;
      Тактирование выставляю TCCR0B (CS[2..0] 001, 100, 101).
      Прерывания TIMSK0 (OCIE0A, TOIE0) выставляю, не вызываются. Даже принудительным заносом значения в регистр TIFR0 (OCF0A, TOV0).
      Прерывание пытаюсь выполнить таким образом:
      #include <avr/interrupt.h> volatile unsigned int A = 0; ISR(TIMER0_OVF_vect) { A = 1; } ... while(1) { if (A == 1) PORTB |= (1<<0); } Proteus показывает, что вывод настроен как выход, но всегда 0;
      Конкретный код привести не могу, так как у меня не заработало совсем ничего.
      Внизу я сделал вырезку из даташита на ATMEGA328 по 0 таймеру 8-бит, и занес в один PDF файл.
      ATmega328-106-112.pdf
      Прошу помочь разобраться с таймером и прерываниями для него.
    • By maxssau
      День добрый!
      Сегодня хотелось бы раcсказать о своей разработке - АЦП AD-01 на преобразователе от Cirrus Logic CS5381.
      Целью данной разработки было получение близких к даташитным параметрам характеристики АЦП, при этом плату имеющeю не высокую стоимость и универсальность.
      На данный момент это уже третья версия платы. Первая версия была сделана ЛУТом, для отработки схемотехники АЦП. Далее последовала вторая версия на заводских платах:

      Схемотехника была взята полностью из даташитов. Стандартное включение CS5381, стабилизаторы питания в цифровой части AMS1117-3.3, в аналоговой из серии TPS7A.
      Схемотехника входного буфера взята из даташита на OPA1632.
      После опробования данной платы, были выявлены некоторые недочеты и разработана третья версия версия:

       
      Входной буфер сделан для 2х вариантов: с конденсатором и без, для чего на ПП предусмотрены соответствующие площадки.

      Топология такого буфера позволяет без переделок проводить замеры/запись как балансного сигнала так и не балансного, достаточно вывод 3 посадить на землю (2). Это достаточно удобно, для различных типов сигнала достаточно иметь 2 пары кабелей с различной распайкой.
      Питание аналоговой части сделано на малошумящих стабилизатора TPS7A4901 и TPS7A3001.

      Питание цифровой части на 2х AMS1117-3.3В, схему нет смысла приводить, она из даташита на стабилизаторы.
      На плате всего 1 генератор на 512fs (24.576 Мгц). Такая частота выбрана не случайно, для работы SPDIF передатчика необходимо иметь частоту мастерклока не ниже 256fs для работы на частоте 96к, я использую передатчик на WM8805 (о этой плате чуть ниже). В качестве интерфейса на компьютере я использую ЗК E-MU 0404 PCIe.
      Полная схема преобразователя:

      На плате присутствует место под DIP переключатель, для настройки режимов работы АЦП. Выход АЦП - I2S, уровни 3.3В.
      Для соединения с компьютером была разработана плата SPDIF интерфейса SI-01.

      Схему приводить особого смысла нет, она повторяет даташитную для WM8805 включенным в HW режиме. В этом режиме есть определенные ограничения, связанные с работой PLL, поэтому максимальная частота приёма/передачи ограничена в 96к. WM8805 позволяет работать как в Master режиме, так и в Slave, что очень удобно. Выбор режима осуществляется установкой джампера. Так же на плате присутствуют джамперы выбора питания, от ЦАП или АЦП. В качестве выходного буфера для передатчика используется 1G125.
       
      Шумовая полка:

      В качестве источника питания пара трансформаторов с стабилизаторами 317/337, даже имея ёмкости в 10000 мкФ полностью подавть 50Гц и гармоники пока не удалось, возможно проблема в корпусе и компоновке.
      Замер моего ЦАПа на 4490, к сожалению не обошлось без земляных петель, поэтому присутствует шум на уровне -125дБ и ниже.

       
      Есть определенные особенности применения ИМС CS5381, скупо описанные в App Notes, позволяющие реализовать данную ИМС в двойном моно и теоретическим уровнем THD+N в -123дБ, что позволит производить оценку и замеры искажений у большинства современных ИМС ЦАП без режекторов.
      В проекте плата с 2мя генераторам на сетки частот 44.1 кГц и 48 кГц, АЦП включенным в моно режимах и DSP процессором ADAU1452.
      Подробную инструкцию с описание на текущую схемы и платы прикладываю.
      инструкция.pdf
    • By forestdozor
      Здравствуйте!

      Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328.
      Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается.
      Подскажите пожалуйста, что делать?
      Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль.
      Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается...
      Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать.
       
       
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H = 0x00;
      TCNT1L = 0x00;
      }
      // Timer1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
       
             TCNT1H = 0x00;
             TCNT1L = 0x00;           // Это уже уровень танцев с бубном "авось поможет" - не помогает.
         
              current_timp++;          // Все упрощено до максимума. Мне бы он хоть количество периодов для начала...
              
        //  }
      }
      // Прерывание по переполнению первого таймера
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      {
      // Обнуление счетного регистра.
      TCNT0=0x00;

          
          counter ++;
          if (counter > 10)
          {
                  lcd_clear();
                  sprintf(buffer,"%d us", current_timp);
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                  counter = 0;
          }
          
          
      }

      // Главный цикл программы
      void main(void)
      {

      #pragma optsize-
      CLKPR=(1<<CLKPCE);
      CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif

      // Port B initialization
      // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
      // Port C initialization
      // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
      DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
      // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
      PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
      // Port D initialization
      // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее.
      TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
      TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;
       
      // Настройка таймера 1
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      // Разрешение прерывания по переполнению таймера 0
      TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
      // Timer/Counter 1 Interrupt(s) initialization
      TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
    • By getshket
      Продам ПУСТЫЕ печатные платы для гальваноразвязки под amanero для этого цапа.  Автор не я, проект тут.
      Цена 300 рублей.


    • By getshket
      Продам ПУСТЫЕ платы для сборки цапа на AK4490. Автор плат не я, ссылка на проект. Размер ПП 100*67 мм. Цена одной платы 300 рублей. Территориально - Уфа. Отправлю почтой.