-1
\$\begingroup\$

I'm building a device to control the level of an audio signal with a digital potentiometer controlled by a microcontroller. The digipot I started with is a Microchip MCP4251.

The problem is that when the level is being changed rapidly, a zipper-like noise can be heard. I haven't been able to establish whether this is a true zipper noise arising from discontinuities in the audio signal, or whether it stems from another source.

Rapid level change is an important feature of the design.

I have already eliminated a lot of noise that was coming from a constantly bouncing chip select pin (by leaving it permanently selected). I'm a little sceptical about implementing zero - crossing detection myself because it relies on toggling the chip select.

I'm considering replacing the MCP4251 with a Maxim DS1882, which has internal zero-crossing detection.

Is this avenue worth pursuing? Any others I should be considering?

\$\endgroup\$
1
  • \$\begingroup\$ by the way that zipper-like noise has a name, and you guessed it. \$\endgroup\$ Jan 28, 2020 at 8:19

3 Answers 3

2
\$\begingroup\$

I would just go with some THAT corp VCAs, like the dual-channel THAT2162. Look at the datasheet for example schematics. They're pretty simple to use. You can also parallel VCAs to get a bit better signal to noise ratio.

Use a DAC, like a 12bit dual DAC from microchip for the control voltage of the VCA. I used a quad I2C DAC from microchip in my project. THAT corp has a bunch of great application notes on their site, one even about controlling VCAs with DACs for volume control. You should filter the output of the DAC when going into the VCA CV pin.

This is what I did eventually for my project as the digi pots weren't working out.

\$\endgroup\$
1
  • \$\begingroup\$ I eventually got around to trying a VCA - in my case an SSI2164. Works much much better than the digipot. Also much better than the optoFETs I also tried. Thanks! \$\endgroup\$ Mar 16, 2021 at 0:43
1
\$\begingroup\$

Digital pots cause zipper noise, the only cure is to change the volume during periods of silence.

Zero crossing won't work because the slope of the signal changes if you tweak the pot at zero cross and that can be heard.

Using a pot with more steps will result in quieter transitions.

you may be able to disguise the noise by ramdomizing the steps

\$\endgroup\$
3
  • \$\begingroup\$ Could you explain what you mean by "randomising the steps"? \$\endgroup\$ Jan 29, 2020 at 7:33
  • \$\begingroup\$ space the steps randomly in time so the noise becomes stochastic instead of regular. \$\endgroup\$ Jan 30, 2020 at 5:02
  • \$\begingroup\$ Ah, makes sense. Unfortunately I need to change to volume rapidly (e.g. around 30dB in 0.1s), so I don't have much time to play with. \$\endgroup\$ Feb 15, 2020 at 6:04
0
\$\begingroup\$

Indeed the fix is to wait for zero crossings to update the volume. A simple digipot just may not be the right part for continuous volume control. Specific chips for controlling audio volume exists that perform this task automatically, and some of them even have the ability to slowly ramp the volume up/down to the target volume set by the MCU.

\$\endgroup\$
3
  • \$\begingroup\$ Could you give an example? \$\endgroup\$ Jan 29, 2020 at 7:32
  • \$\begingroup\$ Do you get examples if you put "audio volume control chip" into your favourite web search engine? \$\endgroup\$
    – Justme
    Jan 29, 2020 at 8:59
  • \$\begingroup\$ Yes, there are results. For example from TI. I've done some research on TI's offerings and found indications that it's also subject to zipper noise. e2e.ti.com/support/audio/f/6/t/… \$\endgroup\$ Feb 15, 2020 at 5:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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