Electronic – ADC anti-aliasing filter

adcaliasingfilter

I bought a 16bit, 250kSPS AD7689 ADC. The circuit I am designing will amplify voltage (from 300uV up to 300mV) across a current-sense resistor (by 13x) to match 4.096V reference and feed this into an ADC. Measured voltage will either be DC or <1kHz square wave.

Do I need an anti-aliasing filter before ADC even tho I am just interested in "static DC voltage" (I am not interested in transient voltage)? If so, what should the cut-off frequency be (higher than 1kHz because of odd harmonics?)? Also what filter order should I use? 1st order seems enough to me, as 1kHz is way below half of Nyquist frequency.

Best Answer

You need to make sure that noise from aliasing is low enough one way or another.

You mention the signal being 1 kHz square wave, but then say you are only interested in "static DC voltage". Those together make no sense. I'll assume you want to measure the top and bottom levels of this square wave.

The first thing to do is decide how fast you can sample. Aliasing problems reduce with higher sample rate. You say the A/D can do 250 kHz sample rate, but you haven't said if the system it is connected to can do that. In any case, that is way more than you need.

Try two poles of ordinary R,C filtering at maybe 10 kHz or so. If you sample at 250 kHz, then the only signals above 125 kHz will cause aliasing. Those will be attenuated by about 12.52 = 156.

Only you can answer how much frequency content there will be above 125 kHz, and whether attenuating that by 156 (44 dB) is good enough. From your description, I'm guessing it is. If you're not sure, throw another pole at 10 kHz or so at it.

In general, you want to do only enough filtering in analog to reduce aliasing noise to acceptable levels. If you want to find some "average" or whatever, do that digitally after sampling. Digital filters don't suffer from inaccuracies due to part variations, temperature, or non-linear behavior of parts.

For the digital filter, you have to decide what settling time you want. Filter the sample stream so that a step still settles to within your maximum allowed time to within your maximum allowed error.