Electronic – How to reduce thermal resistor noise in filter circuit

noiseresistors

I'm taking some measurements from a bio-sensor (using an INA) that operates on the a few to \$100\ \mu V\$ scale. Because of 50/60 Hz EMI, I plan to apply a notch filter (NF) of the Twin-T or the Fliege type. However, both these filters are quite sensitive on the component values, so to obtain the Q I need, I'm to be obliged to use (at least) 1-2 resistors in the \$1-4 \ M\Omega\$ range.

The thermal noise for these, as given by:\$V_n = \sqrt{4 k_B T\ R\ \Delta f}\$, then become of the order of >1 μV, which is already at the lower range of my measurements.

  • Is there a way to reduce/cancel thermal noise without reducing R or T?
  • Does the noise depend on the type or material of the resistors used?
  • How does the thermal noise spectrum look at frequencies: 0-300 Hz?

UPDATE: 2019-05-15

An very interesting and related question is actually about how to increase this noise. See:

An interesting solution was proposing to just leave out the filter altogether and just use digital signal processing to do the filtering. However, I feel this goes against my philosophy of always reducing noise as close to the source as possible. In addition it would created bloated raw signal data, which would take more space to save, if needed.


UPDATE-2:

  • I'm not using a DRL. Because it would look something like this:

enter image description here
Photo credit: Wikipedia

Best Answer

While it's certainly possible to build an analog notch filter for 50 Hz, and one for 60Hz:

60 Hz notch as per analog devices app note

you have to realize that all the involved components in the filter branch affect the actual notch frequency (calculator: here).

While large-valued resistors might be easy to get with a 1% (or even less!) accuracy, most capacitors suffer from a tolerance upwards of 10%. That means that after building the circuit, you'll be standing there, calibrating your circuit (hint: build the 10 MΩ - 10 MΩ divider using a potentiometer, so that you get something to adjust; same for the 5 MΩ.); every single circuit. Every now and then, because of thermal properties and potentially aging.

Then you do that for both your notches.

I'd say that's six to eight passive components per notch filter (so, twelve to 16, not counting decoupling the opamp, which you'd need to buffer the output) to worry about.

Compare the situation where you actually just sample your signal as per Nyquist's theorem (i.e. if you need frequency content up to 300 Hz, then sample at > 600 Hz and use a low-pass filter to cut off frequencies above \$\frac{f_\text{sample}}2\$.

So, assuming a very benign sampling rate of 2 kS/s (your microcontroller can most definitely do that without even remotely breaking a sweat), this would be the system description:

  1. You need an analog anti-aliasing filter, no matter whether you do your nothing in digital or analog:
    Passband 0-300 Hz, stopband 1000 Hz+. That can be done with a single Sallen-Key filter followed by an RC and a buffer. I.e., for all your analog filtering needs, you need one dual op-amp. See design below:
    Filter schematic
    Filter frequency response
    Notice how the blue area is the range of abberations from the ideal design using 20% capacitor tolerance.
    Design was done using Analog Device's analog filter design tool, design export here
  2. A digital IIR notch filter executed in your MCU. I went ahead and did a quick example calculation of a high-Q notch filter; a Q of 30 will be hard to achieve with analog components, because none of them are lossless.
    Frequency response of the notch filter
    Notice that this thing needs 6 multiplications and additions per input sample. At a sampling rate of 2 kS/s, that means 12000 multiplications per second. Unless your microcontroller is actually an abacus, that's not going to take any significant amount of time. Even an 8 bit microcontroller running at 8 MHz that needs 28 cycles (that's very slow! But it's roughly the number of unoptimized AVR code for int16 multiplications) for a multiplication will not take more than 42 ms on these computations per second – so, that's a worst-case computational load of ~5% CPU time! An ARM cortex-M, like often found in Bluetooth chips, will basically be bored all the time; these things often come with a single-cycle 32 bit multiplier. Not to mention that the bigger ones (e.g. Cortex-M4F) even come with multiply-accumulate instructions especially designed for filtering applications.
  3. Detect whether you need the 50 or the 60 Hz notch based on an estimate (simply try both at powerup, and see which one cancels more power from the signal – super easy!).

So, even if you have to buy a second microcontroller only to do the filtering digitally, for some strange reason that I don't see, doing the filtering in digital domain is advantageous in both quality and ease, not to mention that if you're doing this with cost restrictions / production in mind, tuning an analog filter to do the notching halfway reliably is no option at all.