Автор Тема: Управление ES9018 с помощью Ардуино  (Прочитано 115368 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Управление ES9018 с помощью Ардуино
« : 08 Февраля 2016, 11:09:05 »
0
По многочисленным просьбам я решил создать новую ветку на тему разработки программы для управления чипом ЦАПа ES9018. Когда я заказал китайскую плату от Weiliang, оказалась, что, несмотря на примененный в ней продвинутый чип ES9018, в стоковом варианте звук она дает не очень хороший. Из своего опыта могу сказать, что почти все китайские недорогие ЦАПы дают примерно одинаковый пластмассовый звук. Чтобы реализовать заложенный в них потециал, их нужно серьезно доработать. Это касается в первую очередь схемотехники. Оказалось, что некоторые ЦАПы также имеют возможность настройки с помощью програмного обеспечения. ES9018 относится к их числу. 

ES9018 имеет 71 регистр. Не о всех из них можно найти полную информацию, но назначение многих из них можно понять из даташита ES9018. Все регистры Сабри транзиентные. Это значит, что если записать различные значения в регистры, после выключения питания они не сохранятся. При подаче питания на ES9018 регистры получат дефолтные значения. Записывая в них значения, отличные от дефолтных, можно менять характеристики ES9018, например коммутировать каналы, ES9018 является 8-канальным ЦАПом, коммутировать входы, менять различные параметры преобразования, что в конечном итоге влияет на звук. Также можно регулировать громкость, так как ES9018 имеет встроенный регулятор громкости. Менять значения регистров можно с помощью программы, записанной в контроллере. Управляющая программа програмирует регистры по протоколу I2C. В качестве контроллера можно использовать обычную Ардуину. 

Управляющая программа должна выполнять следующие основные функции:

   1. Обрабатывать нажатие на кнопки или работать с энкодером.
   2. Читать значения регистров ES9018.
   3. Выводить информацию на дисплей.
   4. Менять значения регистров.
   5. Сохранять текущие значения регистров в памяти контроллера и восстанавливать их при включении питания.

Около года назад я закончил работу над первой версией такой программы и опубликовал ее в ветке про ЦАП на ES9018. Я решил обсуждение этой программы и всю информацию о ней перенести в эту ветку.

Программа управляет регистрами Сабри по I2C. Она позволяет менять некоторые параметры ES9018, коммутировать входы и регулировать громкость. Все настройки сохраняются в памяти контроллера при выключении питания. Есть возможность сбросить сохраненные настройки и перейти к настройкам по умолчанию.
Программа работает с двухстрочным дисплеем и блоком кнопок, идущими в комплекте с ЦАПом.
Ниже я добавил архив, содержащий исходный код программы.

Это первая версия. Она написана в Atmel Studio 6, которую можно скачать бесплатно по этой ссылке: http://atmel-studio.software.informer.com/6.0/. Для работы также необходимо установить Visual Micro пагин, который можно найти здесь: http://www.visualmicro.com/page/Arduino-Visual-Studio-Downloads.aspx.

Напрашивается вопрос, почему я использовал Atmel Studio. Дело в том, что программа использует классы. Такой подход имеет свои плюсы и минусы. Главный минус в том, что использование классов сильно увеличивает память, которую требует программа. Плюс в том, что это позволяет легко читать и менять код, меняя классы. Скорее всего минусы перевешивают плюсы :D.

Сейчас я работaю над второй версией программы. Пока я отказался от Atmel Studio и перешел в Microsoft Visual Studio. Возможно я откажусь от использования классов.
« Последнее редактирование: 08 Февраля 2016, 11:42:49 от Morpheus123 »

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #1 : 08 Февраля 2016, 11:12:43 »
0
Хм. Говорите, чего надо, что куда писать... Я тут по уши в отладке будущего навороченного пульта, хоть отвлекусь...

Оффлайн 323f

  • Старожил
  • *****
  • Сообщений: 4204
  • Репутация: 25
  • Сергей
  • Поблагодарили: +1901
Re: Управление ES9018 с помощью Ардуино
« Ответ #2 : 08 Февраля 2016, 11:16:09 »
0
О кей! Какой Ардуины достаточно?
Я вчера как раз Мегу спалил, так что, всё равно заказывать.

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #3 : 08 Февраля 2016, 11:37:08 »
0
О кей! Какой Ардуины достаточно?
Я вчера как раз Мегу спалил, так что, всё равно заказывать.

Моя программа может работать на Uno, Nano, Mega. Сейчас я запускаю ее на Uno, но собираюсь перейти на Nano, так как она занимает намного меньше места.


и добавил...
Александр (wuriks), сейчас я собираюсь перейти на Ардуино NANO, так как сейчас у меня много проводов и переодически теряется контакт, что приводит к сбоям. Для этого я воспользовался твоей инструкцией отсюда http://www.diyaudio.ru/forum/index.php?topic=4457.870. Собрал переходник на макетке, вставил туда Ардуино NANO (не припаял, а просто вставил в отверстия макетки), поставил диод, как на этой схеме:
[ Вложение: Вам нельзя просматривать вложения ]
Скажи, какие у тебя напряжения на входе, на шине I2C, 3.3 вольт ил 5 вольт? Думаю, какие меры предосторожности нужно предпринять, чтобы не спалить Сабрю...
« Последнее редактирование: 08 Февраля 2016, 12:00:09 от Morpheus123 »

Оффлайн wuriks

  • Старожил
  • *****
  • Сообщений: 980
  • Репутация: 9
  • Александр
  • Поблагодарили: +7
Re: Управление ES9018 с помощью Ардуино
« Ответ #4 : 08 Февраля 2016, 12:48:10 »
0
какие у тебя напряжения на входе, на шине I2C,
Точно не помню, где то 3,9 вольта. Думаю больше никаких мер не стоит предпринимать, у тебя же и с 5-ю вольтами тыщу лет проработало.

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #5 : 08 Февраля 2016, 13:26:29 »
0
Как ты заливаешь на него программу? Для этого нужно вытащить Ардуино Nano из панельки вместе с переходником, или можно просто отключить контроллер от Сабри, подключить комп к Ардуино через mini USB и залить?

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #6 : 08 Февраля 2016, 13:29:41 »
0
это кому вопрос?

и добавил...
О кей! Какой Ардуины достаточно?
Я вчера как раз Мегу спалил, так что, всё равно заказывать.
Это каким макаром  умудрился?

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #7 : 08 Февраля 2016, 13:32:01 »
0
это кому вопрос?
Вопрос адресован wuriks.

Оффлайн wuriks

  • Старожил
  • *****
  • Сообщений: 980
  • Репутация: 9
  • Александр
  • Поблагодарили: +7
Re: Управление ES9018 с помощью Ардуино
« Ответ #8 : 08 Февраля 2016, 14:41:01 »
0
Для этого нужно вытащить Ардуино Nano из панельки вместе с переходником

Да приходится именно так. Не разбирался что бы узнать что мешает.  :(

зы про исправление что бы экран не гас помнишь?

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #9 : 08 Февраля 2016, 14:45:58 »
0
Я так и думал, что Ардуино нужно извлекать из контроллера для заливки программы.

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

Оффлайн 323f

  • Старожил
  • *****
  • Сообщений: 4204
  • Репутация: 25
  • Сергей
  • Поблагодарили: +1901
Re: Управление ES9018 с помощью Ардуино
« Ответ #10 : 08 Февраля 2016, 15:45:38 »
0
Это каким макаром  умудрился?
Неохота оффтопить. В эмоциях изолью йад.

Оффлайн wuriks

  • Старожил
  • *****
  • Сообщений: 980
  • Репутация: 9
  • Александр
  • Поблагодарили: +7
Re: Управление ES9018 с помощью Ардуино
« Ответ #11 : 08 Февраля 2016, 16:58:00 »
0
Тогда я соберу в этой ветке список всех пожеланий и попробую их реализовать. 
:v:  :yes:

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #12 : 09 Февраля 2016, 14:28:42 »
0
Вчера пытался загрузить программу на Ардуино Nano на Windows 10. Ничего не получилось. Устанавливал разные версии драйверов COM порта, не помогло. Скорее всего на моей Ардуино нет бутлоадера. Кто-нибудь сталкивался с такой проблемой?

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #13 : 09 Февраля 2016, 14:54:02 »
0
Вчера пытался загрузить программу на Ардуино Nano на Windows 10. Ничего не получилось. Устанавливал разные версии драйверов COM порта, не помогло. Скорее всего на моей Ардуино нет бутлоадера. Кто-нибудь сталкивался с такой проблемой?
Внимание, вопрос: а не CH340 там стоит под брюхом?

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #14 : 09 Февраля 2016, 14:58:29 »
0
Ардуино сейчас со мной, но у меня нет увеличительного стекла. Не могу точно рассмотреть маркировку чипа с обратной стороны, но вижу надпись FTDI.

и добавил...
Вчера я устанавливал драйвера отсюда: http://www.ftdichip.com/FTDrivers.htm. Не помогло.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #15 : 09 Февраля 2016, 15:05:05 »
0
Ардуино сейчас со мной, но у меня нет увеличительного стекла. Не могу точно рассмотреть маркировку чипа с обратной стороны, но вижу надпись FTDI.

и добавил...
Вчера я устанавливал драйвера отсюда: http://www.ftdichip.com/FTDrivers.htm. Не помогло.

 как он видится в системе? Интересует HardwareID AKA ИД оборудования в свойствах.
« Последнее редактирование: 09 Февраля 2016, 15:10:13 от Althair »

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #16 : 09 Февраля 2016, 15:44:40 »
0
Вот его HardwareID:
[ Вложение: Вам нельзя просматривать вложения ]

и добавил...
Вот, что я получаю при загрузке:

Compiling 'ES9018_DAC_Controller_Nano' for 'Arduino Nano w/ ATmega328'
Binary sketch size: 15,772 bytes (used 51% of a 30,720 byte maximum) (1.34 secs)
Minimum Memory Usage: 1627 bytes (79% of a 2048 byte maximum)
Uploading to I/O board using 'COM4'
avrdude: stk500_recv(): programmer is not responding


и добавил...
Странно, со второй попытки все загрузилось, причем я не устанавливал никаих драйверов. Это у меня на работе и здесь у меня тоже стоит Windows 10. На домашнем компе ничего не загружается. Значит проблема в драйверах.
« Последнее редактирование: 09 Февраля 2016, 15:59:21 от Morpheus123 »

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #17 : 09 Февраля 2016, 16:15:38 »
0
Не понял... Это Arduino IDE такое докладывает??

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #18 : 09 Февраля 2016, 17:27:06 »
0
Да, Arduino IDE. Я включил опцию Show verbose output.

и добавил...
Странно. Опять не получается загрузить программу в Ардуино.

и добавил...
Решение проблемы найдено. Может кто-нибудь столкнется с этой проблемой... Оказывается сейчас выпускается много Ардуино Нано, у которых стоит фэйковый чип FTDI. Новые драйвера FTDI не работают с этими чипами. Нужно установит старую версию. Здесь можно найти все детали: http://forum.arduino.cc/index.php?topic=375585.0.

и добавил...
Вчера наконец собрал на макетке переходник для Ардуино Нано, который позволяет посадить ее в стоковый контроллер. Спасибо Александру (wuriks) за идею. Все заработало. Единственная проблема связана с тем, что Ардуино я пока не припаял к макетке, а просто вставил в отверстия. Некоторые пины иногда теряют контакт. Видимо придется припаять, но при этом уже не будет доступа к одной из сторон макетки и нельзя будет ничего переделать. 

и добавил...
Подключил вся эту конструкцию к ЦАПу. Все работает.

Посмотрел на эту проблему:
зы про исправление что бы экран не гас помнишь?

Она происходит и у меня. С Ардуино Уно ее не было. Подключил кнопку к 7-му пину вместо 6-го, для этого пришлось делать изменения на макетке. Поменял программу, чтобы она работала с 7-ым пином и все заработало нормально.


и добавил...
wuriks, у тебя Ардуина припаяна к переходнику?

и добавил...
Я нашел в своем коде в SabreManager::StartDac() такую строчку:

   pinMode(6, OUTPUT);             // Controls the brightness of LCD through a transistor

Думаю, она и приводит к тому, что гаснет экран при нажатии на кнопку, подключенную к 6-ому пину.
« Последнее редактирование: 10 Февраля 2016, 17:24:44 от Morpheus123 »

Оффлайн wuriks

  • Старожил
  • *****
  • Сообщений: 980
  • Репутация: 9
  • Александр
  • Поблагодарили: +7
Re: Управление ES9018 с помощью Ардуино
« Ответ #19 : 10 Февраля 2016, 17:27:49 »
0
Да, припаяна.
Я тоже потом увидел эту строчку, но мне проще было перепаять проводок...  ;-[

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #20 : 10 Февраля 2016, 17:33:00 »
0
Мне интересно, как ты перепаял проводок? У меня проводки находятся под Ардуиной, поэтому я ее еще не припаял.
« Последнее редактирование: 10 Февраля 2016, 17:40:54 от Morpheus123 »

Оффлайн 323f

  • Старожил
  • *****
  • Сообщений: 4204
  • Репутация: 25
  • Сергей
  • Поблагодарили: +1901
Re: Управление ES9018 с помощью Ардуино
« Ответ #21 : 10 Февраля 2016, 17:49:33 »
0
Колодочку под Ардуино нужно. Тогда снять/поставить не проблема будет.
Сергей, а кроме регистры ЦАПы что ещё программка умеет? Ну, там, входы перебирать, ПДУ, включать/выключать ...?

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #22 : 10 Февраля 2016, 17:57:21 »
0
Да, программа умеет переключать входы и все настройки (значения регистров) можно менять и сохранять для каждого входа отдельно. Поддержку ПДУ можно добавить. У меня ЦАП стоит рядом на столе и нет необходимости в ПДУ, так как я слушаю через наушники.

и добавил...
Еще она выводит на экран информацию о декодируемом потоке: DSD/PCM, частоту дискретизации...
« Последнее редактирование: 10 Февраля 2016, 17:59:39 от Morpheus123 »

Оффлайн 323f

  • Старожил
  • *****
  • Сообщений: 4204
  • Репутация: 25
  • Сергей
  • Поблагодарили: +1901
Re: Управление ES9018 с помощью Ардуино
« Ответ #23 : 10 Февраля 2016, 18:02:31 »
0
Спасибо, понял. ДУ лучше добавить, конечно. Не у всех На столе стоять будет.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Управление ES9018 с помощью Ардуино
« Ответ #24 : 10 Февраля 2016, 18:05:15 »
0
Колодочку под Ардуино нужно. Тогда снять/поставить не проблема будет.
Отлично подходит панелька DIP40

Оффлайн Morpheus123

  • Старожил
  • *****
  • Сообщений: 1562
  • Репутация: 7
  • Сергей, Тель-Авив
  • Поблагодарили: +4
Re: Управление ES9018 с помощью Ардуино
« Ответ #25 : 10 Февраля 2016, 22:47:47 »
0
Только-что я закончил вживлять Ардуино Нано в контроллер Сабри. Я припаял Ардуину к переходнику и наконец исчезли проблемы плохих контактов и большого количества проводов, теперь вся конструкция занимает мало места.

[ Вложение: Вам нельзя просматривать вложения ]
Самая хорошая новость, что если контроллер с установленной на нем Ардуиной, отключеный от ЦАПа, подключить USB кабелем к компьютеру, то
  • Запускается Ардуино и горит дисплей, правда его яркость ниже обычной, видимо на него попадает пониженное      напряжение.
  • Вшитая в Ардуино программа работает нормально.
  • В Ардуино можно загрузить новую программу.
Это очень удобно, так как можно заливать новую программу и частично отлаживать ее, не вынимаю Ардуино из контроллера. Это экономит много времени.
« Последнее редактирование: 10 Февраля 2016, 22:51:46 от Morpheus123 »

Оффлайн bogi

  • Старожил
  • *****
  • Сообщений: 1046
  • Репутация: 1
  • Сергей
  • Поблагодарили: +11
Re: Управление ES9018 с помощью Ардуино
« Ответ #26 : 12 Февраля 2016, 12:01:50 »
0
на схеме из поста 3 не понятно соответствие большенства выводов ардуино и штатного контролера. стоят просто циферки, а на ардуино каждый вывод подписан фото пост 25. исправьте.

Оффлайн wuriks

  • Старожил
  • *****
  • Сообщений: 980
  • Репутация: 9
  • Александр
  • Поблагодарили: +7
Re: Управление ES9018 с помощью Ардуино
« Ответ #27 : 12 Февраля 2016, 12:44:31 »
0
А типа таблички на схеме в правом нижнем углу не устраивает?

Оффлайн bogi

  • Старожил
  • *****
  • Сообщений: 1046
  • Репутация: 1
  • Сергей
  • Поблагодарили: +11
Re: Управление ES9018 с помощью Ардуино
« Ответ #28 : 12 Февраля 2016, 13:15:18 »
0
а я как раз про нее и писал. понятно только а4 а5 а1 гнд 5в остальное хз. посмотри сам.

Оффлайн boroda

  • Наш человек
  • ****
  • Сообщений: 475
  • Репутация: 8
  • Александр, Шурик, Борода из города Челябинск
  • Поблагодарили: +180
Re: Управление ES9018 с помощью Ардуино
« Ответ #29 : 12 Февраля 2016, 13:43:21 »
0
на схеме из поста 3 не понятно соответствие большенства выводов ардуино и штатного контролера. стоят просто циферки, а на ардуино каждый вывод подписан фото пост 25. исправьте.


 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
4446 Просмотров
Последний ответ 24 Марта 2012, 09:14:01
от ToxiN
163 Ответов
49119 Просмотров
Последний ответ 02 Апреля 2023, 15:20:56
от vadim_phones
2848 Ответов
1136853 Просмотров
Последний ответ 06 Марта 2021, 22:45:16
от Death51
5 Ответов
5377 Просмотров
Последний ответ 26 Ноября 2017, 14:19:51
от Werter
28 Ответов
5599 Просмотров
Последний ответ 07 Июня 2023, 12:59:37
от Злой