diyAudio

diyAudio (http://www.diyaudio.com/forums/)
-   Digital Line Level (http://www.diyaudio.com/forums/digital-line-level/)
-   -   ES9018 I2C controller (http://www.diyaudio.com/forums/digital-line-level/221559-es9018-i2c-controller.html)

Corpius 14th October 2012 09:11 PM

ES9018 I2C controller
 
I'm currently designing a controller module for my ES9018 DAC (Buffalo from TPA), but it can be used with any ES9018 DAC when there is I2S access to it.
It will be based around an Atmel Atmega644 with a highly modified Hifiduino version running on it, so there is input selection, volume control and all settings (filters, quantizer, oversampling and more) can be modified.

UPDATE: 2013-01-2013

Version 1.1 is up and running :spin:

These are the features I have added to it.
  • Logic level converter (5V to 3.3V) (ADuM1250)
  • DS1307 - Real Time Clock
  • MCP42010 digital pot for LCD backlight brighness adjustment
  • IR receiver
  • Separate board with up to 9 Tactile push buttons or one rotary encoder that can be used with or without the hardware debouce circuit
  • Temperature sensor
  • Some logic outputs for switching between my PCM and S/SPDIF sources
  • Pot for LCD contrast adjustment
  • I2C Isolator between controller and DAC (ADuM1250)
  • LD1086 5V low drop voltage regulator.
  • Resettable fuse for some extra protection.
  • DIP switch (3 positions) for locking some settings
  • PCF8574AT port expander for driving an LCD, OLED or VFD
  • LD1117 3.3v low drop voltage regulator

A complete overview of it's features can be found on my website

Link to the article: CE644 - The ES9018 I2C controller
link to the product: Assembled & Tested : CE644 Controller v1.1

EDIT: update history
- 2012-10-15: Separate board for rotary encoder
- 2012-10-15: Added I2C isolator
- 2012-10-17: IR teach function
- 2012-10-19: Decided to use the Atmega644 instead of the 328
- 2012-10-19: Removed the port expander, because of the extra IO's that come with the 644
- 2012-11-07: LT1086 low drop voltage regulator + resettable fuse added to the design
- 2012-11-11: Added a DIP switch to allow manual control over stereo/dual mono and volume control on/off
- 2012-12-28: Brought the port expender back to the design, because I could use some extra I/O's
- 2012-12-28: Added the LD1117 LDO 3.3v voltage regulator to the design to add an 3.3v breakout.
- 2013-01-31: Version 1.1 is up and running

glt 15th October 2012 02:11 AM

Hey Corpius, that would be a nice project! :-)

Some ideas:

1- Adum I2C isolator which does isolation and level conversion at the same time.
2- Rotary encoder with space for debouncing capacitors
3- Pot for LCD contrast adjustment (you only do this once)
4- I2C FRAM (FRAM is a fast EEPROM accessed through I2C. The built in EEPROM in ARduino is slow and has limited life)

syklab 15th October 2012 03:48 AM

Hi,
I just started to learn about the Arduino and your project sounds like a lot of fun to follow.

qusp 15th October 2012 05:54 AM

is there any reason you stuck to arduino? wouldnt some more powerful sort of Cortex/ARM/Raspberry device that speaks i2c, USB, wifi etc be more suitable? or is it simply because so many of the required instruction sets/codes are in existence for arduino->ESS

nice project regardless

nattonrice 15th October 2012 06:11 AM

Arduino can communicate on all of those and is very easy to get off the ground using existing shields and repositories.
Unless you plan to do some form of dsp or fifo then you really don't need anything else.

hochopeper 15th October 2012 06:26 AM

yeah qusp, it is just a whole lot easier to write the code for arduino and get something that works, reliably.

I am having some hassles getting i2c from default beagle bone linux os at the moment (also got smashed by work and didn't look at it for a few months). I am proceeding with arm based board because I want it to be independent of the computer and just stream from the networked storage. I also want mine to be network controllable eventually. The networking side is the more expensive part to get working with an arduino as the wifi/ethernet sheilds are expensive/bulky and drivers for a fat/fat32 fiilesystem to store graphics etc can take up a lot of the atmel microcontrollers memory.

qusp 15th October 2012 07:31 AM

yeah I just gathered since there was a PCB being designed there was some need to do something different/powerful. I know all that stuff can be catered for with add on modules and add on code, but my impression is that its very slow and limited by way of expansion/bandwidth, so could easily get unwieldy in both code and hardware

basically

Quote:

Originally Posted by hochopeper
The networking side is the more expensive part to get working with an arduino as the wifi/ethernet sheilds are expensive/bulky and drivers for a fat/fat32 fiilesystem to store graphics etc can take up a lot of the atmel microcontrollers memory.

this^^

if I was doing something along these lines network access would be essential, but if thats not important sure

Corpius 15th October 2012 03:24 PM

To make some things clear. I will use the same chip as the Arduino does, but not the Arduino itself. Therefore no shields could be added, at least not in the same way as with the Arduino.

Quote:

Originally Posted by glt (Post 3201919)
Hey Corpius, that would be a nice project! :-)

Some ideas:

1- Adum I2C isolator which does isolation and level conversion at the same time.
2- Rotary encoder with space for debouncing capacitors
3- Pot for LCD contrast adjustment (you only do this once)
4- I2C FRAM (FRAM is a fast EEPROM accessed through I2C. The built in EEPROM in ARduino is slow and has limited life)

1. The Adum I2C isolator is indeed a very useful component. I will add this to the list.
2. I can make some connections for a small separate PCB that houses the rotary encoder and debounce capacitors. This way there two possibilities for control, push buttons or rotary encoder. Good idea!
3. This is already incorporated into the design, but forgot to add it to the list.
4. Looks nice, but I'm not convinced that it is needed. How limited is the EEPROM lifetime of the Atmega328?

Quote:

Originally Posted by qusp (Post 3202044)
is there any reason you stuck to arduino? wouldnt some more powerful sort of Cortex/ARM/Raspberry device that speaks i2c, USB, wifi etc be more suitable? or is it simply because so many of the required instruction sets/codes are in existence for arduino->ESS

nice project regardless

The Atmega328 is powerful enough for this project. Like hochopeper said, it is much easier to write the code for it and get something that works reliable. I already have an Arduino that is currently the control unit of my DAC, but I think that its design is too limited for what I want. I can add some shields of course, but then it becomes to bulky to fit inside my DAC. For that same reason I have already designed a shield that more or less fits my needs: Buffalo shield. The shield is nice, but is still a bit limited for what I want.

merlin el mago 15th October 2012 03:40 PM

Suscribed!

CeeVee 15th October 2012 03:57 PM

Very Interested...:cool:


All times are GMT. The time now is 02:26 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio


Content Relevant URLs by vBSEO 3.3.2