Pop/click free HW-based relay attenuator V3

really nice project!

@Neutrality, is it possible to control left and right channels independently?

That is not possible.

It would require that I implemented the relay control in SW insetad of the current HW version and it would also require a significant change in the overall design and layout.

Too time consuming and I dont do SW anyway so never going to happen. ;)
 
Implementing a Balance-control would be the greatest !!
It could be done on the analog- side but difficult due to the pos. feedback to the potentiometer, or digitally (hey nerds-some new stuff todo ) not easy add one Bit then subtract one, then the next etc to avoid 2 bit.steps . 4 Bits would be enough ( plus-minus)

Any idea?
chers Ingo
 
Some more info on how the attenuator works, from the V2 thread :

Simple really. If you were to control the realys without the Flip-flops you might risk having no attenuation at times when changing volume. Remember, when the realys are not turned on you have maximum attenuation, so when you turn up the volume you turn relays on and some off, but when you reach full volume, no attenuation, all relays are on. The problem is that realys do not make or break instantly, as an example, the realys I used has a make or break time of 3ms max, but it could be anywhere between ~1.5-3ms according to the datasheet.

Worst case is going from 1000000 to 0111111 where you might risk turning on all the LSB relays before you turn the MSB relay off. Basically you could risk it going from 1000000 to an intermediate value of 1111111 before you end up at your desired value of 0111111. 1111111 would be the same as no attenuation at all, not good.

By using 2 x octal flip-flops with their outputs fed into quad dual input and gates you can now control when the relays turn on and off.

Using the same example as above, you will now go from 1000000 to an intermediate value of 0000000 and end up at the final value of 0111111. Here 0000000 being full attenuation.

It is all about timing, you first take the realys that need to be turned off and turn them off and then 5ms after you turn on the relays that needs to be turned on. A full cycle take 10ms.


And :

Another thing that is unavoidable is what I call "temporary DC". This is because there is no zero-crossing detection and since you can't implement zero-crossing detection when using relays you have to live with the fact that the relays might switch ON at the peak of the waveform, which is going to sound like a very small pop. This is something that all attenuators based on relays have, even expensive high end commercial offerings with built in R-2R attenuators. Even my own attenuator sesign has that "feature".
I am interested in this relays switching for a gain stepper in a microphone amplifier. I am using a rotary 24 position switch with serie resistors.
How does it compare with the relays solution, pop wise ?
Using the same example as above, you will now go from 1000000 to an intermediate value of 0000000 and end up at the final value of 0111111. Here 0000000 being full attenuation.
For this gain step, the relays solution pops more than the rotary switch. They both pop because of not switching at zero crossing, but the former pops more than the later because going throught a minimum gain setting that lasts 5 mS. Is my understanding correct ?
OTOH. The relays solution gives more steps and is less expensive than the rotary switch that is pretty pricy.
 
Last edited:
Well I have been using my attenuator with a headphone amp, with both 250 and 37 ohm headphones and I havent noticed any issues.

No one who has built V1/2/3 of my attenuator has noticed any issues with popping. Not to my knowledge anyway.

In theory it could be an issue but in practice it does not seem to be.

An explanation could be that the minimum gain duration is short enough that it isnt really noticable.
 
Last edited:
So I get a PM from someone here on this forum and to make it short he is saying that the title of my desing and claims are false.

Furthermore he tried to explain to me that they way I thought the whole digital logic part in my design worked, wasnt actually correct. He argued that a 1 microsecond delay in setting/resetting the relays wasnt enough. :eek:

I do not know where he got the 1 microsecond delay from since an OFF cycle of the relays takes 5ms and an ON cycle of the relays takes 5ms as well for a full OFF/ON cycle of 10ms. :confused:

But imagine that, I have been using this same way of resetting/setting the relays for the last five years, through V1, V2 and V3 of my board and I did not know how it really worked. I even had a respected engineer(through PM, I was a trainee at his company some years ago) give me a few tips on improvements/bugfixes for my design, which I implemeneted in V3 and he saw no issues with my OFF/ON cycle.

But I am glad some stranger came here and set me straight. :rolleyes:

Does this mean that my circuit is 110% perfect?

No way, there is still some slight pops/clicks at times, mostly sounding like static and this is due to there not being any zero crossing detection in my circuit since it is almost impossbile to do with relays. But this is something I have been 110% upfront and honest about since I sold the first V1 boards and this is something you cant really get rid off, since switching in relays at the top of a waveform does create some form of pop/click/static. A term I coined "temporary DC", and it has been mentioned a few times in my attenuator threads.

Besides, I am now on V3 and I have never heard any complaints from those who have bought and built my boards. Not 1 single person out of the total of 30 or so combined who have bought V1, V2 or V3.

One person has actually bought both V1, V2 and V3 of my boards, several of each in fact and no complaints whatsoever.

Maybe it could be because that I have always been totally honest about the limitations about my design and the persons buying them are also aware of the limitations of my design and similar attenuators based on relays?

Or maybe its just me. :confused:

End rant.
 
Last edited:
You have a delay of 3..6 ms plus bouncing with relay. That's fast enough. I have a similar circuit that is pop free. It is often said you have to switch at zero crossing. I don't do that because it is not necessary. If it pops, then not by the relay, but by a wrong analog circuit or a wrong grounding.
 
Last edited:
Someone asked for the Gerber for the paste layer.

Attached is the Gerber files for both the mainboard paste layer and the expansion board paste layer.

One thing to be aware of is that there is no thermal reliefs on the boards. It is not a design error or anything, it is on purpose.

The boards where meant to be hand soldered and in that case thermal reliefs are not really needed. I had no problem assembling the board with a decent soldering iron.

But when doing reflow soldering it could lead to "tombstoning" of some of the smaller components.
 

Attachments

  • Paste Layers.zip
    17.7 KB · Views: 112
come in a little late... but i wish to know if the attenuator.. terminated on 10k is suitable to directly drive an amp with an input impedance on 10k.

and also... i imagine the input impedance will change as well. so is not best practise to make a buffer pre- and post- this attenuator ?
 
come in a little late... but i wish to know if the attenuator.. terminated on 10k is suitable to directly drive an amp with an input impedance on 10k.

and also... i imagine the input impedance will change as well. so is not best practise to make a buffer pre- and post- this attenuator ?


If the amp has an input impedance of 10K, you do not need any other 10K termination, but connecting it directly to an amp input might not be the best idea.

You do not really need a buffer in front of the attenuator, it will present a load of 10K to any source attached to the attenuator.

The only thing what will change is the output resistance, which will change between 0 and 5K.

However, if there are long cables between the output of the attenuator and the amp inpout it might be a good idea to have a buffer after the attenuator.

Otherwise the varying output resistance of the attenuator coupled with cable capacitance might affect the high frequency response.

The same goes for any capacitance in RC filters on the amp input, those will react with the varying output impedance as well.

So to make it short, a PRE-buffer is not really needed if your source can drive a 10K load, but in a majority of cases it might be a really godd idea to add a POST-buffer after the attenuator.

It might be based on relays and a bunch of resistors, but the end result is an attenuator that works more or less like a regular volume pot and as such you have to take the same precautions. :)
 
Last edited:
You have a delay of 3..6 ms plus bouncing with relay. That's fast enough.
No it is damn slow. Have you ever looked at relay contact bounces with a scope ?
I have a similar circuit that is pop free.
It cannot be pop free.
It is often said you have to switch at zero crossing. I don't do that because it is not necessary.
You don't switch at zero crossing because it cannot be done with relays that are way too slow.
This can be done with FET switches like done in a THAT 5173, FET switching is typically 10 Nanosecond.
If it pops, then not by the relay, but by a wrong analog circuit or a wrong grounding.
It pops because relays are way too slow, contacts they do not all fly at the same speed and bounce.