Thanks in advance!

I am building an headphone amplifier with PCM1794A, OPA1612, and OPA1622. Where would be the best placement of the logarithmic potentiometer for volume control without decreasing the bandwidth and without introducing a lot of distortion and noise?

My best solution was to add a small value potmeter at the output at VF3. Left channel below:

Left channel amplification

  • \$\begingroup\$ Odd circuit. If you need balanced in, the standard single differential opamp (i.e. U3) is usually OK. If you really anticipate serious interference (so the input impedance should be well balanced) two inverting stages, one summing the ouptut of the other, is better. Either choice has an unbal out and that's where you want you volume pot. Pro tip : don't use a log pot. Use a 10k lin with 1k4 wiper to ground. It approximates log law well enough, but has better matching between gangs and wears better. Or if you want proper hifi bragging rights, design a stepped attenuator. ;-) \$\endgroup\$ – danmcb Mar 22 at 13:39
  • \$\begingroup\$ a very good overview of balancing audio signals : douglas-self.com/ampins/balanced/balanced.htm \$\endgroup\$ – danmcb Mar 22 at 13:49

In general, putting the volume control as late as possible in the signal chain maximises the resultant signal to noise ratio. As the volume is turned down the noise is too. This works well if the system input signal level is always within limits.

In cases where the input signal might exceed the range of the amplifier it would be common to add one at the input to allow attenuation of the incoming signal. Using this as a volume control would result in the unattenuated noise of your circuit being fed to the following stage.

VF3 is the place to put it. Check for DC offset at the output. If there is any you should add a DC blocking capacitor or an offset adjust to eliminate the offset.

  • \$\begingroup\$ Thank you for great info! \$\endgroup\$ – Jakim Mar 22 at 12:42
  • \$\begingroup\$ The DC blocking capacitors calculated are: C=1/(2 x pi x Ztot x f) = 150µF. (Ztot = (OPA1622 output impedance = 10ohm) + (Headphone impedance = 60ohm)) Ztot = 70ohm f= 15Hz For example: no.rs-online.com/web/p/tantalum-capacitors/1737221 Can this be correct?? \$\endgroup\$ – Jakim Mar 23 at 12:40
  • \$\begingroup\$ Unless the potmeter value of 10k (in this case) has to be added to the impedance. Which will give a capacitor value of approx. 1.05µF (1.2µF). \$\endgroup\$ – Jakim Mar 23 at 12:47

Before U3 the signal is differential, so you can't add a volume pot there. It would have to be a 4-way pot and the channel imbalance would mess up the common mode rejection of the differential amp around U3 anyway.

So it will have to be at the output of U3.

Which means you need another amp/buffer to drive the headphones. It is advisable to AC-couple the pot wiper unless the output offset of U3 is really tiny, otherwise you will hear scratching when turning the pot as the contact resistance modulates the DC as the pot wiper turns.

Note the resistor values on the OPA1622 are pretty low, they're going to load the outputs of the OPA1612 quite a bit. You'll probably get less distortion with higher resistor values.

Also, if you use a PCM1794 I guess you're not going to use that with cheap earbuds, rather a nice pair of headphones with 600R input impedance, which means this circuit may not have enough output voltage unless you tweak the resistor values. In fact you may also run out of supply voltage headroom to drive the headphones, and I have doubts about the input voltage range of the opamps. There is not much margin between your 2.68V reference and the maximum input voltage of OPA1622.

Another simpler option is to just use digital volume control.

  • \$\begingroup\$ Thank you for great info! As you can tell I am newbie, and I am planning it to be a performance/cost balanced solution. Will test with Koss KSC75i (60ohm). And will consider digital volume control IC. \$\endgroup\$ – Jakim Mar 22 at 12:49
  • \$\begingroup\$ OK! What are you using as a source for the I2S signals? \$\endgroup\$ – bobflux Mar 22 at 15:06
  • \$\begingroup\$ Chose to go analog! But PC USB -> STM32F302C6 (USB-to-I2S) -> PCM1749A. \$\endgroup\$ – Jakim Mar 22 at 19:10
  • \$\begingroup\$ OK! I was wondering about clock jitter which is a problem if you use SPDIF. So you generate the clock on your board with usb asynchronous mode? \$\endgroup\$ – bobflux Mar 22 at 19:24
  • \$\begingroup\$ Not quite sure yet, but I was planning on using an audio crystal (MK2705) for the I2S_CLKIN. \$\endgroup\$ – Jakim Mar 22 at 19:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.