My Preamp Project: Arduino, I2C, relay selector+attenuator, tube stage

I thought I would detail my preamp project. I've had this idea for a while but only recently got around to starting it. Seen a couple of threads previously with similar intentions but looks like they never got finished…

I’m going to use an Arduino for control because I really like open source hardware and its so easy to work with. The Arduino will control a passive, relay-based input selector and Attenuator via I2C using a rotary encoder/buttons/remote. Not sure if I’ll use an LCD display in the final design but I have one at the moment anyway. Not sure about the tube stage yet but I’m thinking a Low Voltage Aikido (Aikido LV)

Attached is a diagram showing the general layout.
 

Attachments

  • layout.png
    layout.png
    81.8 KB · Views: 5,958
I think it's unnecessary complicated with tubes and relay-based Attenuator.You can take an Op-amp and pga2310 instead and it will cost less and make better sound.
I know some people want something extravagant and very expensive, but it sounds not better then "cheap" things.
 
Yeah I was very undecided about using the PGA2310 vs relay attenuator for volume control but decided on the relay attenuator purely because it was more interesting to build.

But I think quite a few people would disagree with you about a PGA2310 and opamp sounding better than tube stage and pot!
 
I recomend this here RelaiXed -- Balanced pre-amplifier
if you want something special.

Yeah I've seen this design, its very good. My attenuator is pretty much the same schematic (also same as the Joshua Tree and Jos van Eijndhoven's work) except mine has double the amount of steps and its not balanced. I don't have any balanced equipment and I've never had any hum or interference so I don't really see the point of it. Mine also uses smaller relays and all SMD parts. I'll post schematics and layout soon!
 
Some of the features are:
I2C controlled using an MCP23008
The I2C address can be set using small DIP switches
Surface mount components for shortest possible signal path
PCBs are small (100 x 50 mm) and stackable
Should work as single ended or balanced (need to one per channel)
Omron G6K relays - High quality, low power, very compact with gold alloy contacts
The input selector has 5 inputs and 1 output relay for muting to stop preamp pop or thump etc.
The attenuator has 128 steps + mute.

Here is a pic of the bottom of the attenuator board
 

Attachments

  • IMG_6235.JPG
    IMG_6235.JPG
    89.7 KB · Views: 5,015
watching with interest. so has both attenuator and selector yes? or this is separate functionality from same board? will you have PCBs? I do not need tube stage, only balanced selector and attenuator, with buffer (I will just use IC or discrete diamond buffer)
 
watching with interest. so has both attenuator and selector yes? or this is separate functionality from same board? will you have PCBs? I do not need tube stage, only balanced selector and attenuator, with buffer (I will just use IC or discrete diamond buffer)

A separate board for the attenuator and input selector. Tube stage and control is all separate. I wanted it to be modular so I could change parts later. You could use arduino or PIC or anything that does I2c to control the attenuator and input selector

I already have PCBs! Got quite a few spare (like 8 or so) due to not being able to order low quantities of 1 or 2 from PCB fabricators.
 
Well I've sorted this regarding the software:
- Rotary Encoder for volume
- Button to change Input
- LCD display of Volume and Input
It was much easier than I thought it would be, only took a couple of hours :)
 

Attachments

  • IMG_6246.JPG
    IMG_6246.JPG
    91.4 KB · Views: 3,216
Call me old fashioned but i thought a preamp design begins with the actual preamp circuit/ power supply and generally stuff which relates in some way to the sound and not with the cosmetics. Else it may become a micro project with some analogue functionality :)

You are old fashioned :p

With my current plan I could use the Aikido, a B1, an opamp etc or completely passive and still have remote/input control/attenuation. Basically I want to be able to change it at will but still have these comforts.
 
Sure, here is the basic code using a rotary encoder to control the volume and a button to switch sources. I'll share the rest of the code when its finished.

Thanks Max this is very cool, I have been playing around with an arduino mega and thanks to linux-works I have got it controlling a pga2310 with the help of this post on the arduino website. So far all I have managed to do is get the pga2310 to run in a loop increasing the volume up and down. I would like to use a pga2310 based attenuator in place of your relay volume control. I will build a relay based attenuator eventually, right now I am on low budget and was given a heap of free pha2310's from a work mate. How would I go about converting your marvelous code to do this?
 
Thanks Max this is very cool, I have been playing around with an arduino mega and thanks to linux-works I have got it controlling a pga2310 with the help of this post on the arduino website. So far all I have managed to do is get the pga2310 to run in a loop increasing the volume up and down. I would like to use a pga2310 based attenuator in place of your relay volume control. I will build a relay based attenuator eventually, right now I am on low budget and was given a heap of free pha2310's from a work mate. How would I go about converting your marvelous code to do this?

Have you tried combing my relay attenuator code above using an encoder and the code I posted in the arduino forum? This should get you going with an encoder controlling a PGA.