Electronic – Recommendation for ADC noise filtering

adcfilterpassive-networksremote control

I'm using an ADC (adc081c021) with a pretty noisy input:

There is also a 5-second video here:
http://tinypic.com/player.php?v=2ue47cm&s=5

The objective is to detect the two peaks. How could I smooth this input in order to have better ADC readings? Is there a better option than a LC filter? Any recommended values?

Best Answer

Since you have an example of the signal on your scope, the best thing to do is capture the data and transfer it to a PC. Then use a tool like Matlab or Octave to simulate the effect of different filters.

You are looking for a filter, just defined in terms of poles (and maybe zeros) that minimizes the noise, without disturbing the desired features of the signal.

When you have a filter definition, then worry about how to build it.

If a single-pole filter is adequate, a simple RC circuit solves your problem.

For a two-pole filter, the Sallen-Key op-amp circuit is known for having relatively good tolerance for changes in the component values. An LC combination is also possible.

For higher-order filters (which I doubt you need), a cascade of Sallen-Key filters is preferable to a ladder of LC stages, because the op-amp provides buffering that prevents component value shifts in one stage from affecting the characteristics of other stages.

Edit In reply to your comment, I'm not a DSP guy, but here's how I'd work out the equivalent continuous time filter:

Your filter function in discrete time is

\$y_n = a x_n + (1-a) y_{n-1}\$

Given an impulse input, the time constant is the time it takes to decay to \$e^{-1}\$ of the value of \$y_0\$.

This is given by

\$(1-0.025)^n = e^{-1}\$

Solving this, n is about 39 samples, or 156 us.

So you want to choose R low enough that the input impedance of the ADC doesn't affect the filter performance much, then choose C to give RC = 156 us.