This is the home page for the ArDAM1021 Project, an attempt at controlling the Soekris dam1021 Sign Magnitude R-2R DAC by an Arduino.
First, a little background info.
It supports three digital inputs (Coax & Optical S/PDIF and I2S), high precision digital volume control and the uploading of user-generated filters. It is possible to access these features by using the dam’s built-in serial port. However, IMHO connecting a computer and typing at a keyboard is not the most practical approach for controlling a DAC, so I decided to make a “dam1021 edition” of my TFT HiFiDuino code.
The code is currently at a Beta stage, meaning that it is functional but not complete. Still, it performs the basics:
- Controls the volume.
- Switches between the two supported s/pdif inputs, as well as the I2S input. Also enables auto source selection.
- Switches between the four supported filters.
- Displays incoming signal sampling rate and type.
- Supports full IR remote control functionality. Supports a large range of remote manufacturers.
- Minimal display mode as default. Goes into full display when changes are to be made to parameters.
- Full graphics support in the minimal display.
- Supports either white text & graphics on black background or black text & graphics on white background.
- Option to set 0db as default (power-on) volume for connection to a preamp.
- Remote power on/off functionality (or always on – configurable in the code).
Currently the code is at v0.74: ArDAM1021 Code (1376 downloads)
- UTFT Library
- UTFL_DLB library
- Adafruit MCP23008 library
- Arduino-IRremote-Due library
- RotaryEncoder library
- Fonts (included in the ZIP file)
- Graphics (included in the ZIP file)
Basic Hardware Requirements:
- Arduino Due
- 3.2″ TFT with resolution of 240 x 400, compatible with the UTFT library
- Rotary Encoder
- IR Receiver
- Compatible IR remote control (Apple Remote or other)
The fonts should go into your UTFT & UTFT_DLB directories, usually found in the Windows user’s Documents folders (for example, here: c:\Users\<user name>\Documents\Arduino\libraries\UTFT_DLB\).
The bitmaps should go into your sketch’s folder.
You should keep in mind that this code is designed to be used with the Universal shield that I have developed for this purpose. The shield has its own page: Universal Signal Isolator shield for the Arduino DUE
However, this shield is only really necessary if you need filter selection memory (the code saves the selected filter / input to the EEPROM). This new Universal shield will also take care of the serial connection to the dam (with isolation) but that can be done easily without a shield (if you don’t want galvanic isolation): just connect three wires from the DUE to the isolated serial port of the DAM (enabled since firmware v0.99). You need to connect the DUE’s TX3 and RX3 respectively to the DAM’s “ISO RXD IN” and “ISO TXD OUT” pins. You also need a wire connecting the DUE’s GND to one of the DAM’s “ISO GND” pins.
Here is the revision history:
- Changed the rotary encoder code. Now it works exactly as it should.
- Various serious bugs fixed (vol control etc).
- New status: Beta
- Added support for white text on black background. Added the necessary graphics.
- Added code to support selection of the 4 available filters (via remote or rot/enc).
- Changed the number of inputs to the built-in 3 (plus Auto).
- Some code cleanup. Still very Alpha..
- Code cleanup. Still in Alpha condition.. Preview release for dimdim.gr.
- Added code to select inputs. Last choice is the Auto Detection function.
- Added code to read from Serial and display sampling rate.
- Tested with actual DAC. Confirmed proper operation of volume control.
- Serial out through Serial3 implemented. Outputs volume control codes. Not tested with actual DAC.