Constant impedance relay-resistor logarithmic attenuator

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
To moderators - I am not completely sure where is the best place for this one. If it is wrong place here, please feel free to tell me off :) and move it.

Hi all!

I post here the circuit I've designed about 2 years ago for Creek Audio Limited and (with permission from the company) did publish it in an article on different kinds of remotely controlled volume attenuators in Russian-language magazine "Radiohobby" No 2, 2002. Obviously, this idea and this circuit is copyright of Creek Audio Limited, however it is already in a public domain for more than a year and half.

Here it is - as a scanned extract of my article in RadioHobby with a (hopefully) clear enough diagram:

This circuit has several important advantages over existing variants:

1) It provides completely constant input impedance independant of the attenuation position.

2) It gives absolutely precise logarithmic curve - the only limiting factor here is the tolerance of resistors. For 0.1% resistors the maximum error would be less that 0.02 dB over most of the attenuation range.

3) It uses only one switchover relay contact for each of the binary bits, so a full stereo single-ended (or mono balanced) attenuator with 64 dB range could be build with only 6 relays (you may need one more for a complete mute) . You can have a 0.5 dB steps with one more relay and so on. Multichannel attenuators could be easily made this way.

4) It has reasonably low output impedance (not more than a usual potentiometer type volume control)

5) It controlled by a simple parallel binary code, so a simplest control circuit could be designed from a couple of CMOS chips - as I did for a very first prototype.

The idea in this circuit is very simple:

Each part of the attenuator (when engaged) always presents the same load to the previous segments and also needs to be loaded onto a same load - on the diagram it is 10 kOhm, however it is easy to change this to any reasonable value. The only requirement is that the eventual load, i.e. amplifier input, should present the same load as well. This way the attenuation of each segment does not depend on the position of any of them. Something similar is used in RF attenuators for constant input-ouput impedance attenuation. However the usual "RF" approach requires at least 3 resistors and two switchover contacts per segment. My version is much cheaper and simpler.

I hope you'll enjoy it.

Alex Nikitin (x-pro)
 

Attachments

  • att_small.gif
    att_small.gif
    54.8 KB · Views: 11,525
Wow, after looking over it for a while it seems pretty nice indeed. I've been seriously thinking of a relay based volume control, just wasn't sure which route to take. Thanks alot because I really think I'll go this route.

I just don't get how you can do stereo single-ended with only 6 relays? I see you doing 128 steps with 6 relays per channel, yes, but not stereo...
 
If you don't want balance adjustments, use DPDT relays ?

And I agree; it is indeed a very nice design!

It's getting harder to hold out for Wayne's! :bawling:

mlloyd1

Originally posted by JoeBob Wow, after looking over it for a while it seems pretty nice indeed.....
I just don't get how you can do stereo single-ended with only 6 relays? ....
 
Funny as it is, I have implemented almost the same circuit in my preamp, without knowing about your development. Didn't realize it was different from what was posted on the net already. :cool: I'm using Takamisawa relais (DPDT) to make it balanced. Two seperate PCBs per channel.
 
X-pro, you could also use T-link or Pi-link to get 1 dB, 2 dB, 4 dB etc or whatever step you choose.

Have you tested T-link?
Did your attenuator "click"(I mean electrically :D ) when it was operated? Did you have to trim the turn-off times for the relays(using special coil arrangements)?

Did you have a microcontroller or did you use a simple counter with a demultiplexor for the control?

How about the frequency response when you used 10 kohms impedance?

x-pro, do you have a nice formula for calculating a link?

Fred, you don't have worry. I'm only curious. :nod:

Check this out!
http://www.diyaudio.com/forums/showthread.php?s=&threadid=13632


As I understand T-link is good for little attenuation and and PI-link is better for much attenuation? Is that right?
 
x-pro said:


Yes - DPDT relays (like Omron G6K I've used) will do stereo w/o balance. Channel crosstalk was below -100 dB up to 20 kHz with these relays and a careful layout.
I made long time ago a T-link attenuator with 600 ohms impedance and it worked high up in frequency, don't remember the number but I think it was towards 1 MHz for low attenuation. I never came the control section.... but the pcb's are nice. I have the somewhere in my junkbox.
 
janneman said:


No, thank YOU!

Alex, how do you proceed to calculate this? You select a load impedance first, then work backwards towards the input? I would be intrested in this with different values etc.

Jan Didden

Calculations are simple enough, however you can just change values from the diagram proportionally for any other impedance than 10 K


peranders said:
X-pro, you could also use T-link or Pi-link to get 1 dB, 2 dB, 4 dB etc or whatever step you choose.

Have you tested T-link?
Did your attenuator "click"(I mean electrically :D ) when it was operated? Did you have to trim the turn-off times for the relays(using special coil arrangements)?

Did you have a microcontroller or did you use a simple counter with a demultiplexor for the control?

How about the frequency response when you used 10 kohms impedance?

x-pro, do you have a nice formula for calculating a link?

Fred, you don't have worry. I'm only curious. :nod:

Check this out!
http://www.diyaudio.com/forums/showthread.php?s=&threadid=13632


As I understand T-link is good for little attenuation and and PI-link is better for much attenuation? Is that right?

T and P - links require twice as many contact groups and more precision resistors :) . I did mentioned these in my article, thought.

There are some ways to illiminate "clicks" without doing anything special to the relays :) . I had the production version controlled by PIC which did NOT produce any audible clicks. Couple of early prototypes used just a counter and demultiplexor and worked fine, thought with some clicks.

Frequency response for 10K version was well over 100 kHz and depended mostly on the load capacitance. In a worst case the ouput impedance of the attenuator is about 2.5K and it can take quite a lot of capacitive load.

There is a formula to calculate links, however I'll leave it to you guys to work it out ;) . That is DIY after all - it shouldn't be too easy...

Cheers

Alex (x-pro)
 
x-pro said:
There are some ways to illiminate "clicks" without doing anything special to the relays :) . I had the production version controlled by PIC which did NOT produce any audible clicks. Couple of early prototypes used just a counter and demultiplexor and worked fine, thought with some clicks.



Did you "tune" in any way the turn-on and turn-off times for the relays.

Did you use zero-crossing detection?
 
peranders said:


Did you "tune" in any way the turn-on and turn-off times for the relays.

Did you use zero-crossing detection?


Zero-crossing is quite useless with relays - they're too slow for that. However it is possible to make the switching in a particular order which reduces the clicks down to inaudible level. Hint - "timing is everything" :) .

Alex (x-pro)
 
Clickless relay attenuator

Most elegant and most expensive attenuator based on T or Pi you can do with " two ways " of signal trace : you have two identical attenuators in each cannel and in output of both you have relay, which is switched on way, which is not at this moment switched, while switched is other " way ". If there is switching stoped, relay switch on this way and switching goes on second etc.
 
Re: Clickless relay attenuator

Upupa Epops said:
Most elegant and most expensive attenuator based on T or Pi you can do with " two ways " of signal trace : you have two identical attenuators in each cannel and in output of both you have relay, which is switched on way, which is not at this moment switched, while switched is other " way ". If there is switching stoped, relay switch on this way and switching goes on second etc.

It is not really nesessary - with the right relay switching sequence the clicks are inaudible. Even if you supply relays drivers directly from a CMOS counter you will have only an occasional click and I personally can live with this. A microprocessor control could be a bigger problem, unless you kill the clock completely when it is not required.

Alex (x-pro)
 
x-pro said:


Here it is - as a scanned extract of my article in RadioHobby with a (hopefully) clear enough diagram:

Alex Nikitin (x-pro)

Thanks a million.

x-pro said:


1) It provides completely constant input impedance independant of the attenuation position.

Alex Nikitin (x-pro)

Really important.

x-pro said:


2) It gives absolutely precise logarithmic curve - the only limiting factor here is the tolerance of resistors. For 0.1% resistors the maximum error would be less that 0.02 dB over most of the attenuation range.

Alex Nikitin (x-pro)

Since I finally learned the math of db, I now see the importance of an audio pot being log. An example of my 256 linear step module going from 0/255 (-infinity db) to 1/255, it's already at -48db. :( That's if I did the math right.

------------------------------------------------------------------
a volume of 0 = ' 20*log( 0/255) ' = -(infinity) db.
a volume of 1 = ' 20*log( 1/255) ' = -48 db.
... ... ... ... ... ... ... ... ... ... ... ... ... ...
a volume of 254 = ' 20*log(254/255) ' = -0.03 db.
a volume of 255 = ' 20*log(255/255) ' = -0 db.
------------------------------------------------------------------

x-pro said:


3) It uses only one switchover relay contact for each of the binary bits, so a full stereo single-ended (or mono balanced) attenuator with 64 dB range could be build with only 6 relays (you may need one more for a complete mute) . You can have a 0.5 dB steps with one more relay and so on. Multichannel attenuators could be easily made this way.

Alex Nikitin (x-pro)

-When you say 6 relays, you mean, 64db range, inside 64 x 1db steps?
-When you say adding 1 relay, it will now give us still a 64db range, but, with 128 x 0.5db steps? What if we want a 128db range with 128 x 1db steps?

x-pro said:


4) It has reasonably low output impedance (not more than a usual potentiometer type volume control)

Alex Nikitin (x-pro)

In the magazine schematic, your input impedance is listed with 10k input impedance. Does this mean I should drive the attenuator with a 0 ohm drive & expect the load of the attenuator to be 10kohm?

x-pro said:


Each part of the attenuator (when engaged) always presents the same load to the previous segments and also needs to be loaded onto a same load - on the diagram it is 10 kOhm, however it is easy to change this to any reasonable value. The only requirement is that the eventual load, i.e. amplifier input, should present the same load as well. This way the attenuation of each segment does not depend on the position of any of them.

Alex Nikitin (x-pro)

What's the level of affect on this attenuator as the output load changes? For example, if I make 2 driving 2 amps, and 1 amp has a load of 10.1k, and the other 9.9k, how messed up will the balance be?
I guess if the output load is unknown, this circuit should have an added output buffer. Sort of kills the ability to use this circuit externally as a passive device.


x-pro said:


Something similar is used in RF attenuators for constant input-ouput impedance attenuation. However the usual "RF" approach requires at least 3 resistors and two switchover contacts per segment. My version is much cheaper and simpler.

Alex Nikitin (x-pro)

RF guys done this to match signal lengths & number of resistive elements as the relays are switched.

This is the 1 main beef I have about this circuit.

In my attenuator, the signal being fed through always appears to have 8 switches closed & another 8 open, it also appears that there are always 8 resistors in the signal path.

My final schematic makes this fairly easy to see:
http://pages.infinit.net/helloftp/attschemnew.png
Except now, I need to work out a log version. :(
 
Thew diagram does show 128 steps of 1db, I do believe (I've been known to be wrong ;) ). If you wanted 128 steps of 0.5dB you would remove the 64dB relay and resistors and add a relay on the side of the 1dB relay and set the resistor values to attenuate 0.5dB.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.