View Full Version : How to reduce noise from ADC?

07-11-2016, 05:55 PM
Hello, im sending audio from the ADC to the DAC directly and im having a bit of background noise. Its not to loud to make unusable, but loud enough to notice when there is no audio.

Its been a couple of day since im trying to reduce it with no success.
My signal chain is:
Guitar -> opamp buffer -> RC LP filter (3.3k, 3.3nF) -> opamp inverter stage, unity gain ( rin = 100k, rfeedback = 100k) -> RC LP filter (3.3k, 3.3nF) -> 3.3uF cap -> ADC (with adc bias as per the audio GUI example on adc). Both my AGND and DGND are tied together. Already tried to untied them with no reduction of noise.

The opamp is a TL072, im taking the supply from the 3.3v reference.
I already tried to eliminate the signal conditioner stage (all the signal chain stated earlier), to see if it wasn't the 3.3v being noisy, but the noise still persist.

What caught my attention was that connecting the ADC input directly to ground, made the noise a lot more quieter.

Im alright with having 12 bits of resolution if that keep out the noise. Where should i mod the code to do that? I looked at https://github.com/PaulStoffregen/Audio/blob/master/input_adc.cpp but im not sure where to mod.
Im thinking something like ADCvalue = ADCvalue & 0x0000111111111111 or ADCvalue = ADCvalue>>4

07-12-2016, 05:51 AM
Hmmmmmm... <jk>

If fiddling with ground connections changes the noise in any way, your problem is likely related to ground loops.

This kind of noise can leak into your signal from any nearby digital or analog source, both through direct connections and through inductive or capacitive coupling. When there is no ground loop, the noise doesn't change circuit voltages enough to become detectable, but when there's a ground loop there will be enough current flow to permit voltage variation that becomes extra signal (noise) mixed in on top of the signal you want.

Changing ADC resolution will not help with this. If you're using Teensy or Zero/Due you would change ADC bit depth by changing the value of "analogReadResolution" but again, that's not going to make any difference whatsoever for the kind of noise that reduces when you ground your input directly.

To prove that it's a ground loop, plug the output of your device into an isolation transformer before it goes to your outboard amplifier. Ground loop noise will go away. I have found the inexpensive EBTech Hum Eliminator to be highly effective, but there are many different brands available at many different prices :)

Once you have proven that ground loops are the cause, you can either keep an isolation transformer in your signal chain or you can work to eliminate the ground loops from your environment. Lots of guidance on ground loops if you google.

07-19-2016, 03:50 PM
More oversampling usually helps with the number of bits from the ADC. Also disconnect the USB.

07-23-2016, 11:06 PM
Yup, first thing to check is ground loops.

The easiest way to diagnose (not necessarily solve, but diagnose) ground loops is by temporarily powering every part from separate battery. If digital power currents are flowing through sensitive analog grounds, usually powering only from isolated batteries prevents the problem. It's not a practical solution, but it is an easy way to diagnose if this (or something else) is the cause of your troubles.