0
\$\begingroup\$

I have a question regarding the design of anti-aliasing filter in feedback control system.
The application is a mechanical control system that the controller compute torque command with position and torque sensor data. The ADC is neccessary for torque data acquisition.

Anti-aliasing filter must be necessary for the ADC. My question is regarding the design of the filter. Here are some specifications regarding the signal.

  • disturbance torque 1: < 0.5 Hz
  • disturbance torque 2: < 2 Hz
  • disturbance torque 3: < 180 Hz
  • motor torque: < 1000 Hz (control loop frequency)

The torque sensor basically sense the motor torque + disturbance torque. The frequency of the control loop is 1000 Hz, which means the torque from the motor have 0~1000Hz information.

Clearly the data rate of the ADC should be 1000 Hz, since the controller loop time is 1000 Hz. According the Nyquist Theorem, all the signal above 500 Hz would cause aliasing and degrade the signal quality, right? This means in order to prevent the aliasing, the stop band of anti-aliasing filter should start from 500 Hz.

Now, considering the practical filter system, setting the stop band -40 dB. By employing 6th order filter one could get -3dB pass band around 220Hz.

Is it natural to design anti-aliasing filter like this, only utilizing data about 1/5th of controller band width, or is there any misconceptions? Please enlighten me.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ It all depends on your requirements, but one thing is sure, if your signal has frequencies up to 1000 Hz and you want to measure up to 1000 Hz, you need at least 2000 Hz sampling, preferably more, depending on how accurately you want to measure the 1000 Hz. And to prevent aliasing, the filter must not start at the frequency of your sampling rate, it must start earlier so that there is enough attenuation at the sampling rate. \$\endgroup\$
    – Justme
    Mar 27, 2022 at 8:23

2 Answers 2

1
\$\begingroup\$

What's your control loop bandwidth? Do you want the loop to suppress the disturbance at 180 Hz? If so, then you already have a marginal control loop design. Getting control at 20% of your sampling frequency will be just possible without the latency of an AA filter in the loop. Using a 6th order one will introduce a huge group delay around 180 Hz, and make it impossible to stablise your loop.

Even in the 'control the 180 Hz' case, you don't need the AA filter to be down by 500 Hz, you only need it down by 820 Hz, the alias frequency of 180 Hz.

Why have you chosen -40 dB for the stopband depth? It sounds like a PIDOOMA.

I would recommend building the loop with a single RC pole at 200 Hz or so, and seeing if you can get the loop stable. Then see if it meets your noise and other requirements. Only if it doesn't should you try to increase the AA filter order.

Do remember that your control loop itself acts as a lowpass filter.

In the event that the loop bandwidth is only enough for controlling your 2Hz disturbance, then it all becomes enormously simpler.

To do a proper design of the loop, including any AA filtering that's required, you need to specify what attenuations are needed for the various disturbances.

\$\endgroup\$
2
  • \$\begingroup\$ First of all, it really is the first time for me to build this kind of system, there must be quite a lot of things PIDOOMA :). -40dB comes from the intension to keep signal accuracy greater than 1%. < 180 Hz is referring 2nd harmonic of reducer torque ripple at maximum motor speed 5000 rpm(167 Hz). So far 167 Hz is the highest frequency signal of interest. So, you mean if 180 Hz is the upper bound of the signal of interest, 500 ~ 820(1000-180) Hz signal will cause aliasing, but in 180~500 Hz, therefore acceptable right?? \$\endgroup\$ Mar 27, 2022 at 9:53
  • \$\begingroup\$ Also, in general cutoff frequency of AAF should be around the frequency which cause aliasing in the range of interest, not half of data rate of the sensor right? \$\endgroup\$ Mar 27, 2022 at 9:57
0
\$\begingroup\$

TL;DR: Last thing you want to be doing is designing complex anti-alias filters when you can just emulate one numerically - and even better if someone has already done it for you :)

Sampling at 1000Hz is slow - too slow to be practical, because sharp-rolloff antialiasing filters are best implemented digitally. So you should be oversampling. So it's best to use an A/D converter that oversamples a whole lot, like thousands of times per each decimated output sample. Then the analog anti-alias filter can be usually 1st order, followed by a high order digital anti-alias filter integrated within the ADC proper.

For torque sensing, you'd be typically using a heavily oversampled sigma-delta ADC. For 1000Hz data rate, the sampling frequency should be in the 1-64MHz range. The analog antialias filter is a single RC stage. The digital filter response and decimation rate is usually adjustable to an extent via the configuration register settings. The available options depend on the chip you end up using.

And many such ADCs are sensitive enough to require no external amplification between the sensor and the ADC. Win-win!

I have now a very old multi-channel torque sensing system - from over 2 decades ago - that also had 1kHz output data rate. The SAR ADC ran at 12kHz per each channel. The anti-alias filter was electronic analogue 300Hz 2nd order, plus an equivalent of a 2nd order 80Hz lowpass due to purely mechanical response of the system, plus a digital 32-tap FIR filter. It worked a treat, and was the last design I did that used a SAR converter. Sigma-deltas became easier and cheaper to apply these days, and there's a whole lot of them to choose from.

\$\endgroup\$
1
  • \$\begingroup\$ "sharp-rolloff antialiasing filters are best implemented digitally." - Depends on what you mean by "best". I've seen quite a few CD player circuits with 7th-order brickwall circuits produced with fairly standard Rs and Cs. \$\endgroup\$ Mar 29, 2022 at 0:21

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.