Solved

Digital vs. Analog Filter

Posted on 2012-03-29
6
720 Views
Last Modified: 2012-04-03
I need help deciding on whether to use a digital or analog filtering design. I have a 100 uV signal that I need to amplify 10,000x and bandpass filter for 500-5,000 Hz. I want to sample this signal with a SoC or microcontroller at a rate of at least 10 kHz and send the data to a PC. Power and size are of major concern in this design.


My thoughts are as follows, but may be incorrect:

If I use a digital filter, I could implement the bandpass filtering on the PC to conserve space and power. I would still need to amplify and perform anti-aliasing filtering on the circuit. Would this really conserve any space?

Any thoughts from the more experiences people here?
0
Comment
Question by:jramshur
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 27

Expert Comment

by:aburr
ID: 37785444
"Would this really conserve any space?"
yes
whether you use analog or digital you will need to amplify. If you use digital elsewhere you will save space and power.
A lot depends on your specifications. rough filtering is easy with analog. Really good filtering is best done digitally.
I am most familiar with radio receivers which need good filtering. the modern (best) way is digital.
0
 
LVL 3

Accepted Solution

by:
algorith earned 500 total points
ID: 37785893
As you mention, you need to perform anti-aliasing on the input signal to the D/A, which of course cannot be done digitally.

A second consideration is the dynamic range of the amplifier - if the out-of-band noise is substantially larger than your 100 uV signal, it will seriously reduce the useful gain the amplifier can provide. I.e. if the input noise is sufficient to pin the output of the G=10000 amplifier, it will not be possible to accurately filter the output and still recover a faithful reproduction of the input signal.  So I would say it is extremely useful to band-limit the signal on the input to the amplifier.

I have used a Sallen-Key filter for this (3d circuit here), with the filter also providing the first gain stage. It is possible to build this 2-pole filter with one op-amp and reasonable tolerances on the components.   This will go a long way toward mitigating the requirements for the amplifier stage. This opamp needs to be reasonably low-noise.

Also, some high-pass filtering is definitely called for on the input, for essentially the same reason. There are lots of sources of low-frequency noise, like 60 Hz line noise, or amplifier 1/f noise, or vibration causing piezo-electrically induced currents in the components. So because of the low input level, it is best to keep these out of the amplifier as well.

After this, depending on how sharp your target bandwidth cutoffs are, it may still be necessary to do digital filtering as well.
0
 

Author Comment

by:jramshur
ID: 37789049
I plan to AC couple the signal...so I could choose a capacitor size to take care of 60Hz noise (low frequency). The AC coupling combined with the anti-aliasing filter would somewhat band limit the signal.  Would it be acceptable to do the anti-aliasing and 10,000x gain in a single opamp stage?

My current test design has the following order of operations: buffer > multiple feedback HPF > multiple feedback LFP > Voltage offset adjustment > PGA (within SoC) > ADC (within SoC). The HPF and LPF filters each have a gain of 30.3 and the voltage adjustment stage has gain of 3. The PGA of coarse has variable gain. This design requires 4 opamps (or 1 quad). This is not very space conserving design.
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 3

Expert Comment

by:algorith
ID: 37789787
This sounds about right. In my experience I would put the low-pass filter first - but without knowing the noise environment, it is hard to know if it should come before or after the high-pass.  Also, one more thing to worry about is that having high gain in these multiple feedback filters sometimes makes the response very sensitive to variation in component values.

Second, depending on the source impedance, I would tend to forego the input buffer if possible, since it will just be an extra noise source.

G=10000 is always fun and full of surprises :-) .  But unless you have a very controlled environment what you have described is about the minimum I would start with, having done this a few times.
0
 

Author Comment

by:jramshur
ID: 37793665
The input impedance will be between 0.4-0.6 MOhms. Would you still suggest not using the buffer?
0
 
LVL 3

Expert Comment

by:algorith
ID: 37793704
I guess you have to.    This is usually a hard problem - good luck!  

Other thoughts, possibly obvious: a 50 pF capacitor to ground at the buffer input may help ?  (-> ~5 kHz cutoff)  And you can limit the buffer's frequency response, too.  And if it applies to your situation, keep in mind that coax has a capacitance of about 100 pF / meter.  Some of the Ph.D. physicists in our lab tend to forget this.
0

Featured Post

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is about my first experience with programming Arduino.
Moving your enterprise fax infrastructure from in-house fax machines and servers to the cloud makes sense — from both an efficiency and productivity standpoint. But does migrating to a cloud fax solution mean you will no longer be able to send or re…
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question