Passive filter

A filter dampens a specified range of signal frequencies. For example, to remove high frequency noise you use a low-pass filter. The simplest filter is an RC circuit (see Figure 1).

passive low-pass filter

Figure 1: Passive low-pass filter

This filter removes frequencies above formula: 0, known as the cut-off frequency, at a rate of -6dB/oct. It also delays the signal by φ=-atan(ω/ω0).

An example

Let C = 47μF and R = 10Ω. The cut-off frequency is 339Hz (or 2128rad/s). The filter will remove frequencies above this. A Python script was written to return the amplitude and phase response.

def low_pass_response(v0, w, R, C):
    w0 = 1.0/(R*C)
    a = w/w0
    phi = -atan(a)
    v1 = v0*(1.0/(1.0 + a**2.0))**0.5

    return v1, phi 

The response of this filter to an input of 1V at 50Hz is shown in Figure 2.


input and output voltage

Note that while the cut-off frequency is far above the input frequency, there is still an amplitude and lag effect on the signal.

Calling the same function with a range of frequencies provided the amplitude and phase response of this filter (see Figure 3).

amplitude response
Figure 3a: Amplitude response
phase response
Figure 3b: Phase response

White noise

White noise is a normal distribution of values (in this case, voltages), with mean of 0 and standard deviation of 1.

import numpy

def whitenoise(n=1, v0=0.01):
    # white noise has a mean of zero and a std of 1
    mu, sigma = 0, 1
    return v0 * numpy.random.normal(mu,sigma,n)

A histogram and frequency plots of whitenoise are shown in Figure 4.

whitenoise histogram
Figure 4a: Whitenoise histogram
whitenoise frequencies
Figure 4b: Frequency
White noise voltages are evenly spread over all frequencies. This is what we will to change with the filter.

To filter this noise, pass each voltage in the array to low_pass_response (see Figure 5).

filtered whitenoise

Figure 5: Filtered white noise

Noisy input voltage

Adding white noise to the input voltage results in Figure 6.

noisy signal

Figure 6: noisy input voltage

The filter removes all voltages above the cut-off frequency, so it helps to know what frequencies you are interested in, to prevent removing the data as well as the noise. Just like here, data can be filtered using a circuit or by post-processing. Which approach you use will depend on your application.