First of all, what's a proper range in dB for a volume control? I was thinking about -70 dB, which for a 24 step attenuator gives 3 dB per step. Is that reasonable, or should I go for 2 or 2.5 dB per step?
Next, consider the following balanced volume control (one channel shown), where + and - represent the non-inverted and inverted signals:
(I believe I first saw this in a post by Peter Daniel.)
If the two fixed resistors are 1K each, and the attenuator between them is x ohms, then how would I calculate the proper resistances for each step if I want to get the usual constant dB attenuation per step? Here's what I did, and I'm asking if it looks OK: output voltage is input voltage times x/(x+2000). Since I want dB, I have attenuation a=20*log_10(x/x+2000). Solving for x, x=(-2000*10^(a/20))/(10^(a/20)-1) (^ means exponentiation). Since 0 dB is not possible in this scheme (resistance would need to be infinite), starting from -0.1 dB in 3 dB increments towards -69.1 dB, I get resistances (to three significant digits) of 173K, 4.6K, 1.96K.....1.40, 0.991, 0.702 ohms. The last two being below 1 ohm would probably be hard to find. So I don't know if I should use smaller steps and thus smaller range.
Finally, I'm using this as a volume control directly after a voltage output DAC chip, so it needs to be buffered, as in this diagram:
There is a voltage drop from the buffer, so I'm not sure how that affects the calculation. Also, the input from the left has a DC offset, but I don't see that it would change anything since only the voltage between + and - matters.
Actually in the simulation the first few resistances I calculated give me more than 3 dB steps, but then it approaches 3 dB for later numbers. What am I missing in my calculation?