audiophile preamp + i/o selector (LCD, IR, relays)

presenting the amb/linuxworks alpha 10 audio preamp:

some inside shots:

earlier prototype in smaller box and in passive-mode (not using an active line-stage buffer):

the heart of the system is what we call the LCDuino. its at version one so its the LCDuino-1. project page for it:

I've been working with AMB labs on this project for well over a year, now. we have a backpack LCD/IR/motor pot module (LCDuino), a relay R/2R volume control (stepped attenuator) called the Delta1 and an 8port i/o selector called the Delta2. recently we created a motherboard for this to hold a 5v reg board, a dual 12v analog reg board, 2 JISBOS unity gain discrete analog line drivers and the stack of D1/D2 boards and their controllers.

there's even a basic online web GUI to calculate the R values for the resistor/relay stepper:

older shot of a few relay attenuator boards and their controller halves:

CAD image of the top and bottom of the LCDuino:

the board has molex header support for:

  • analog 'resistor' buttons
  • RTC via ds1302 and supercap backup
  • LCD display via mcp23008 PE
  • IR input via vishay IR module (learning)
  • IR out via IR blaster
  • motor-pot via h-bridge l293d
  • i2c used for relay and inter-module comms
  • config button for programming
  • amplifier switched ('blue wire') out for remote power

I'm finishing up the firmware now (last count was 15k lines of C code) and will post links when its ready for testing. I've been using this as my main home stereo controller and preamp during the last year or so and its been great fun replacing my yamaha and other commercial gear with all DIY stuff.

my partner ( will have bare pc boards on his website when the software is ready to be released. we plan to sell circuit boards and possibly kits.

Wow :o looks gorgeous! Great work!

wow! looks realy good :)

but what does it do?

its general job in life is to do volume control and input/output selection for stereo systems. (this is pre- home theater; back when audio meant 2 channels) ;)

the volume control is quite extensive. it starts with a motorized pot (single black knob on far right) and an IR receiver (small hole to the left of the knob) and any old IR remote you have on hand. the preamp system uses learning IR on the receive side and the LCD display, during config-time, prompts you to enter each special key on your chosen remote and it stores that code in a jump-table for each major function. after learn is done (and saved in EEPROM) your remote is functional ;) you then use vol-up and vol-down (and a LOT of other functions, too) to control the thing. when you use vol-up, the volume goes up, the motor pot scoots over to the 'right' position and stops. it does audio preamp style functions like selection 1-of-n for inputs (currently set up for 4 inputs) and m-of-n for outputs (also set to 4). inputs are always radio-button and outputs are configable (at runtime) to be radio-button behavior or toggle-button behavior. (idea is that you may want to switch on/off some amps at the same time, maybe a main amp and a sub) or you may want radio button style (a headphone amp and a speaker amp, only 1 at a time).

there is scalable volume via simple window clipping. you get to set what 'lock to lock' means on your volume pot. ie, you go into a config mode and you define what 'all the way left' means on the pot (maybe -80db) and what 'all the way right' means (often its 0db but it could be other values). maybe its late at night and you want to limit the volume, so you set the max at -10 instead of 0. or maybe you listen thru headphones and that amp is too sensitive, so you set the max value to be -20. then when you turn the knob, a full rotation is from -80 to -20 and you can change that on the fly.

oh, there's also a sleep timer, too (lol). first feature I added, actually.

the volume 'engine' is the other half of this project, really. it consists of an R/2R resistor ladder network and binary values to get 1,2,4,8 (etc) db from each relay. dial in the value you want for db, throw that binary value at the relay controllers (with a twist; we're using latching relays so they have to be pulsed) and you get the volume setting you want.

the i/o selector has 8 ports and you can jumper set the nature of each port, one by one. what happens is you are 'punching down' that port to 1 of 2 busses, an in and an out bus. punch down to the input bus and you are an input port. tell the system which bus you are on and now the arduino will send the radio button code or toggle button code (logical ORing them to share the same 8bit relay controller) to set the in and out ports.

Can you say what type of relays are you using?

that should have the schematics for the relay modules and their controllers.

Excuse me for being so boring, but can you reveal the concrete model? :-[ Nice work, I love audio too, but currently I still dont have the knowledge to make some DIY audio stuff with quality.

Wow Great works...

concrete model? what do you mean by that?

I do plan to release code but its going thru some major reorg right now and its not releasable quality yet. will be soon, though, as the hardware is all done and we're just waiting on the code, now ;)

You have said that you are using a latching relay, but I know that there are many different models and makers of latching relays, I just want to know what is the model(ie part number and maker) of your relays, if possible of course ;)

i have never seen such a robust build quality for a diy project

Way to go LinuxWorks! I have been a follower of your arduino projects for about 2 years now after that first head-fi post.

I have been out of the audio game for a while (at least for posting). It is great that you guys are offering up a Stepper, since the TPA Joshua Tree has been the only thing out for a while and yours seems to have more to interface to? Gotta love the Sigma22 PSU, it is such a beast!

BTW guys, the AMB boards are TOP NOTCH! I have built a few of his designs including the venerable Beta22.

In the furture it might be nice to offer up a GLCD LCDuino. I ended up not going with an LCDuino because I wanted it to make analog meters on the display as well as system information. The Topway LM12864LDW works pretty darn well and isn't too expensive, but it does use a lot of I/O (which is why the Mega might be a better choice).

Also, it would be pretty sweet to make a ATTINY based SMD Potentiometer w/ 64 steps. This would be a cheap volume controller for small portable amplifiers or MilletMax. You could probably fit it in the space of a normal Alps Blue spot and just put some Voltage and ISP headers on there for re-programming. Then give people the choice of using the mono cheapo potentiometer of their choice for control (including the little slider ones... want for my stamp-amp smd op-amp based about the size of a stamp 3.3v).

All the best and GREAT WORK!

Amazing! I love how simple and fresh it looks. Keep up the good work!

I'm using these relays: G6JU-2P-Y DC4.5

4.5v works well from usb power supply. if you have your own 5v supply and its a clean 5.0 v or better (even 5.3 is fine) then 5v relays are ok.

single coil latching. you pulse them one way, let go and they hold. pulse them the other polarity (switch leads) and they swap and hold the other way. neat little buggers ;)

slight tweak, today.

I had an extra prototype box (heh, who am I kidding, they are ALL prototype looking boxes) and I needed a way to control my subwoofer so I built another relay attenuator but set the dB spacing to be 0.1dB instead of half dB. its 8 relays = 8 bits = 255 and so 255 / .1 = 25.5dB as the max range. more than enough to 'fine tune' a powered subwoofer's input level.

now I can sit on the couch and isolate the sub or the main speakers and set their level controls to half a db or even .1 db.