cancel
Showing results for 
Search instead for 
Did you mean: 

ADC front end design to remove high frequency noise

ADITI
Associate II

Hi everyone

I am working with STM32F429Zi microcontroller on a customized board. I am acquiring the signal shown below (oscilloscope screenshot) with ADC3 at a sampling rate of 300ksps. The input signal is a 10kHz sinusoidal waveform superimposed on a 100Hz triangular waveform.

0690X00000DXP25QAH.png

The signal contains a lot of high frequency noise and I am only interested in a frequency content of less <=10kHz. So I made a 1st order passive RC low pass filter (cut off frequency 172kHz). The output of the filter as seen on Oscilloscope is shown below.

0690X00000DXP2AQAX.png

 I am using 2nF and 1.2 kohms for the low pass RC filter. These values have been calculated considering the minimum RC value needed to settle the ADC input while also band limiting the noise. This is calculated as explained in the Analog Dialouge article “ Front-End Amplifier and RC filter design for a precision SAR Analog-to-Digital Converter�? by Alan Walsh. For 100ksps sampling rate these values were 2nF and 470ohms.

However, as soon as I connect this filter output to ADC3 input I observe that the signal amplitude is completely lost (shown below).

0690X00000DXP2FQAX.png

It would be a great help if I can get to know what else can i do to acquire the signal properly using ADC.

Thanks.

4 REPLIES 4
Ozone
Lead

The last image looks like the scope had no periodic trigger.

Adding a passive RC filter will increase the input impedance, and might "break" the sampling.

Consider a buffer amplifier, or, perhaps better, an active lowpass filter.

RMcCa
Senior II

Since this mainly a software forum, i would try some standard techniques like a moving aveage filter or ​'down sampling' by averaging a fixed number of samples at a time. You are already sampling at more than 10x the theoretically correct rate of 20k, so some simple software filtering should help. Also, a simple rc filter has a very gradual slope. Consider a much lower cutoff, maybe 12k or so?

An active filter (with opamps) of higher order would have a much better noise attenuation, with better impedance properties.

It would allow for a lower sampling rate, and thus relaxed input dynamics requirement (sampling time, channel "drag over", saturation).

Not to speak of the time spent in the averaging code.

Uwe Bonnes
Principal II

Remember that the STM32 ADC input is switching capacitors. If the ADC input only sees the 2 nF, sampling problems arise. Put an active buffer after your filter.

But otherwise, is the noise already in you signal or does it arise from ground differences. In that case, think about a differential mesurement.