0
\$\begingroup\$

I am trying to design, and later implement, a Butterworth high-pass filter with a cut-off frequency of 8kHz and a decay rate of 60dB/decade.

For this filter \$ \omega_c = 50265.4824 rad/s\$ (converting from Hz)

So far i have determined the order of the required filter as:

$$order = \frac{\text{desired roll off}}{20dB/decade}$$ $$=\frac{60dB/decade}{20dB/decade} = 3_{rd} \text{ order filter}$$

I will be using this equation for a normalised low pass third order filter:

$$H_{LN}(sL_n)=\frac{a_0}{b_0 +b1SL_n +b_2SL_n^2 +SL_n^3}$$

and i have obtained \$b_n\$ terms from the following table which comes from G.E Carlson signals and linear system analysis:

Filter Coefficients

so we have \$b_0 = 1, b_1 = 2,b_2 = 2\$

Next i want to frequency transform this transfer function to that of a high pass filter so i will replace $$SL_n$$ by $$\frac{\omega _c}{S}$$

with \$ a_0 = b_0 \times G_{DC} = 1 \times 1 = 1\$

resulting in $$HL_n(\frac{\omega_c}{S}) = \frac{1}{1 + \frac{2\omega_c}{S} + \frac{2{\omega_c}^2}{S^2} +\frac{\omega_c^3}{S^3}} $$

I'm a little lost here as we now have \$S^n\$ terms as 1 over in the denominator. To get the form of the transfer function back to normal i got the lowest common denominator which then gives:

$$HL_n(\frac{\omega_c}{S}) = \frac{S^3}{S^3 +2\omega_c S^2 + 2\omega_c ^2 S + \omega_c ^3}$$

Using the Bode plot function in Matlab:

wc = 50265.4824; num = [1] den = [1 2*wc 2*wc^2 wc^3] opts = bodeoptions('cstprefs'); opts.FreqUnits='Hz'; G = tf(num, den) bode(G,opts), grid; 

Bode plot of transfer function

This is clearly not correct as what is displayed in the magnitude plot is that of a low pass and not of a high pass so i have gone wrong somewhere. Any help would be greatly appreciated!

\$\endgroup\$
5
  • \$\begingroup\$ you meant low pass filter and how is GDC=1 \$\endgroup\$ Commented Oct 1, 2017 at 21:51
  • \$\begingroup\$ I am clearly very confused. GDC is the gain at \$\omega = 0\$? So for a high pass filter we don't want any gain at 0? \$\endgroup\$ Commented Oct 1, 2017 at 21:58
  • \$\begingroup\$ true but you show the response of a LPF \$\endgroup\$ Commented Oct 1, 2017 at 22:00
  • \$\begingroup\$ I'm sure others can help with your academic exercise, but for practical solutions there are better ways. \$\endgroup\$ Commented Oct 1, 2017 at 22:02
  • \$\begingroup\$ h = tf([1 0 0 0],[1 2 2 1]); \$\endgroup\$ Commented Oct 1, 2017 at 22:20

2 Answers 2

2
\$\begingroup\$

Worth consulting the MATLAB reference for transfer functions.

If you wish to have s^3 in the numerator you must set

num = [ 1 0 0 0 ]; 

That will give you 3 zeros at the origin.

\$\endgroup\$
-1
\$\begingroup\$

h = tf([1 0 0 0],[1 2 2 1]); (MATLAB)

A better way is to use TI's FilterPRO tool (free) and consider Bessel 8th order with a Quad Op Amp. Choose Component tolerances.

For single supply change gnd to Vcc/2.

Choose Rail to Rail input and output OA's, scale the values to 100K range and balance input R for offset currents if any.

enter image description here

\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.