1
\$\begingroup\$

I have an ADC that is capable of a 25kHz sample rate and I have a sensor whose bandwidth is 200kHz that I'd like to hook up to. This is a current sensor. Nyquist tells me that I need to limit the bandwidth of the sensor to 12.5kHz in order to be able to reconstruct a signal (and avoid aliasing). However I'm wondering if this is the right thing to do? In some sense I don't want to limit the sensor's bandwidth for applications like a peak detector where I want to measure peak sensor values and I might miss peaks if I filter them out..

Can I run the 200kHz signal directly into the ADC? In what cases should the nyquist criterion not be followed?

Thanks

\$\endgroup\$
2
  • \$\begingroup\$ What content in your ADC input is there to be aliased? \$\endgroup\$ Dec 13, 2018 at 18:37
  • \$\begingroup\$ You will never be able to reconstruct the original signal after DAC unless you attenuate all spectrum >= Fs/2 below the ADC resolution. Any residual signal >=Fs/2 reduces your SNR. e.g. signals at 25k, 50k,75k....200k become DC errors. etc. A practical solution is a Bessel 8th order filter at Fs/3 if you want error < 0.1% If the HF spectrum is that important, you must use another technique. like measure Peak as DC and RMS or average \$\endgroup\$ Dec 13, 2018 at 19:11

3 Answers 3

3
\$\begingroup\$

Nyquist tells me that I need to limit the bandwidth of the sensor to 12.5kHz in order to be able to reconstruct a signal (and avoid aliasing).

Nyquist does not tell you that. What Nyquist-Shannon sampling theorem states is:

if you have a signal that is perfectly band limited to a bandwidth of f0 then you can collect all the information there is in that signal by sampling it at discrete times, as long as your sample rate is greater than 2f0

The key piece that almost everyone overlooks is perfectly band limited. This is an acausal filter and can be realised when post-processing data and you apply a sinc pulse which is the same length as your data.
This cannot be done in realtime but can be (poorly) approximated via a Cascaded Integral Comb filter but this still is not perfectly band limited

Nyquist theorem does not say to sample at 100Hz because you are interested in 50Hz main. If you sample at twice the frequency of interest you may have some information that a component exists, but you will not be able to reconstruct it

enter image description here

A reasonable rule of thumb is acquire 10x that of the frequency you are really interested in. This will result in ~ 99.5% of the amplitude and a 5deg phase shift (quantisation aside for now...). The key is to determine the maximum frequency you are interested in acting upon.

In your example

Sensor (200kHz) -> ADC (25kHz). This tells me that you are really not interested in signals above 2.5kHz and by interested I mean really make use of (control, react etc...). If that is acceptable so be it. so an anti-aliasing filter around 12.5kHz would be fine

But what about aliasing? if you feed a sensor with a bandwidth of 200kHz into an ADC sampling at 25kHz you are going to unwanted signals as aliasing could occur. It is advisable to have a LPF in front of the ADC to act as an Anti-Alias filter, now the sensors output being band limited could have served this purpose IF your ADC was being sampled at say 400kHz, but that isn't the case. It would be advisable if you put a LPF in front of the ADC to roll off any components that could be aliased by the ADC

  1. http://www.ni.com/white-paper/2709/en/
  2. http://www.wescottdesign.com/articles/Sampling/sampling.pdf
  3. http://www.ti.com/lit/an/slyt626/slyt626.pdf
\$\endgroup\$
2
\$\begingroup\$

It's an either/or situation: either apply the right anti-alias filter to measure the signal content in the 12.5 kHz baseband correctly or, don't apply an anti-alias filter and measure peak values but have no simulataneous ability to make sense of the baseband signal. Providing you don't want to do both together you can implement a filter that is switch-in/outable and maybe controlled by an IO line from your CPU.

\$\endgroup\$
2
  • 3
    \$\begingroup\$ Not filtering also won't GUARANTEE that you'll pick up every peak. The best answer, of course, is to sample fast enough to capture the events you need to capture, and filter appropriately. \$\endgroup\$ Dec 13, 2018 at 19:48
  • 1
    \$\begingroup\$ Or use a separate peak detector you can periodically sample, if you don't have to react to the peaks in real time. \$\endgroup\$ Dec 13, 2018 at 20:00
0
\$\begingroup\$

I want to measure peak sensor values and I might miss peaks if I filter them out

I think it's impossible to not to miss peaks even in case of no LPF. If peak is narrow enough (it's possible due to high bandwidth of the sensor) then it's not likely, that sampling moment will occur exactly on the peak. But if it will occur before or after the peak you'll get wrong 'peak' amplitude.

So, either analog signal have to be 'distorted' (in well controlled way) by LPF to make it possible for ADC to catch all the information left in filtered signal, or it will be distorted (in uncontrolled way) by inappropriate sampling rate.

\$\endgroup\$

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.