second-order Butterworth filter

c1=c2=10µf, R1? R2? using the unity-gain Sallen-key topology

what should I do?

  • \$\begingroup\$ Set R according to the readily available Butterworth filter formula scaled to 0.5Hz cutoff, for your choice of C. \$\endgroup\$ – Brian Drummond Nov 20 at 22:09
  • 1
    \$\begingroup\$ You need to use non-polarized caps. Use a smaller value cap and larger value resistors. \$\endgroup\$ – Mattman944 Nov 20 at 22:17
  • \$\begingroup\$ C = 2.2 or 3.3 uF will produce reasonable resistor values. These are commonly available as non-polarized with 10% or better tolerance available.. calculatoredge.com/electronics/sk%20low%20pass.htm \$\endgroup\$ – Mattman944 Nov 20 at 22:37
  • 8
    \$\begingroup\$ I’m voting to close this question because it is homework without effort. \$\endgroup\$ – Brian Carlton Nov 21 at 21:01

General Form, 2nd Order HPF

The general form for a 2nd order high-pass filter is (\$K\$ is the voltage gain):

$$\begin{align*}\frac{K\:s^2}{s^2+2\zeta\:\omega_{_0}\:s +\omega_{_0}^2}=\frac{K\:s^2}{s^2+\frac{\omega_{_0}}{Q}\:s +\omega_{_0}^2}\label{eq1}\tag{1}\end{align*}$$


The next thing is to look up the constants for Butterworth filter. These are usually given for the case where \$\omega=1\$. There's a very simple solution process for it, but a typical Butterworth table will look like:

$$\begin{align*} 1:&&s+1\\ 2:&&s^2 + \sqrt{2}\:s + 1\\ 3:&&s^2 + s + 1&&s + 1\\ 4:&&s^2 + 1.847759\:s + 1&& s^2 + 0.765366865\:s + 1 \end{align*}$$

The above is where a higher order Butterworth filter is broken down into combinations of 1st order and 2nd order factors.

(The constants above for the 4th order Butterworth filter are actually \$\frac{2\sqrt{2+\sqrt{2}}+\sqrt{2}\left(\sqrt{2+\sqrt{2}}+\sqrt{2-\sqrt{2}}\right)}{4}\$ and \$\frac{2\sqrt{2-\sqrt{2}}+\sqrt{2}\left(\sqrt{2+\sqrt{2}}-\sqrt{2-\sqrt{2}}\right)}{4}\$, respectively. Instead, I just provided the calculated decimal values, instead.)

Python code running on Sage with sympy to generate the above is:

def Butterworth(n):
    r = solve( 1+(-1)**n*x**(2*n), x )
    t = []
    for a in r:
        if real( a ) < 0:
            t.append( a )
    t.sort( key = lambda tup: real( tup ) )
    u = []
    var( 's' )
    if ( len( t ) - 2*int( len( t ) / 2 ) ) == 1:
        u.append( s + 1 )
        t.pop( 0 )
    for i in range( len( t ) / 2 ):
        u.append(collect(expand((s - t[2*i])*(s - t[2*i+1])).n(), I, evaluate=False)[1])
    return u

For example, running the above with Butterworth(10) provides:

$$\left(s^2 + 1.97537668119028\,s + 1.0\right)\\ \left(s^2 + 1.78201304837674\,s + 1.0\right)\\ \left(s^2 + 1.4142135623731\,s + 1.0\right)\\ \left(s^2 + 0.907980999479094\,s + 1.0\right)\\ \left(s^2 + 0.312868930080462\,s + 1.0\right) $$

Which is a 10-pole Butterworth filter implemented in five 2nd order stages. The order above is in decreasing dampening ratios, which may be the order in which you'd want to implement the system. (But that's up to you as a designer.)

Since this is about a 2nd order filter, it's that \$\sqrt{2}\$ factor in my first table above that is of central importance in shaping this into a 2nd order Butterworth. The damping ratio will be \$\zeta=\frac{\sqrt{2}}{2}\$. And also \$Q=\frac1{2\zeta}=\frac{\sqrt{2}}{2}\$. So in this case \$\zeta=Q\$.

Sallen-Key 2nd Order HPF

The general form for the Sallen-Key 2nd order high-pass filter is:

$$\begin{align*}\frac{K\,s^2}{s^2+\left(\frac{1}{R_2\:C_1}+\frac{1}{R_2\:C_2}+\frac{1-K}{R_1\:C_1}\right)\:s +\frac{1}{R_1\:C_1\:R_2\:C_2}}\label{eq2}\tag{2}\end{align*}$$

Where \$C_1\$ is the input capacitor, \$C_2\$ is the capacitor connected to the opamp, \$R_1\$ is the resistor tied to the opamp output, and \$R_2\$ is the resistor tied to ground.

For the \$K=1\$ case:


simulate this circuit – Schematic created using CircuitLab

As \$K=1\$ (and in all cases \$\omega^2_{_0}=\frac1{R_1\,R_2\,C_1\,C_2}\$), Eq. \$\ref{eq2}\$ can be simplified a bit:

$$\begin{align*}\frac{s^2}{s^2+\left(\frac{1}{R_2\:C_1}+\frac{1}{R_2\:C_2}\right)\:s +\frac{1}{R_1\:C_1\:R_2\:C_2}}\label{eq3}\tag{3}\end{align*}$$

Analyzable from this equivalent schematic (I included \$K\$ to be pedantic, but we already know that \$V_\text{OUT}=V_\text{B}\$ as \$K=1\$) using KCL to solve for \$V_\text{A}\$ and \$V_\text{OUT}\$ and then dividing the \$V_\text{OUT}\$ result by \$V_\text{IN}\$ (to cancel that term):


simulate this circuit

The two simultaneous equations to solve (knowing, a priori, that the opamp will cause \$V_\text{B}=V_\text{OUT}\$ and thereby allowing us to substitute \$V_\text{OUT}\$ for \$V_\text{B}\$) are:

$$\begin{align*} \frac{V_\text{A}}{Z_{_{C_1}}}+\frac{V_\text{A}}{Z_{_{C_2}}}+\frac{V_\text{A}}{R_1}&=\frac{V_\text{IN}}{Z_{_{C_1}}}+\frac{V_\text{B}=V_\text{OUT}}{Z_{_{C_2}}}+\frac{V_\text{OUT}}{R_1}\label{eq4a}\tag{4a}\\\\ \frac{V_\text{B}=V_\text{OUT}}{Z_{_{C_2}}}+\frac{V_\text{B}=V_\text{OUT}}{R_2}&=\frac{V_\text{A}}{Z_{_{C_2}}}\label{eq4b}\tag{4b} \end{align*}$$

From those, you can reach Eq. \$\ref{eq3}\$.

Additional Thoughts

Since capacitors are usually not provided in so many different values as are resistors, you usually choose your capacitors first from available values and then calculate your resistor values from there, matching actual values as closely as possible.

With such a low frequency, you will have to be careful about the choice of capacitor type and value as well as the resistor values. But you were asking about calculating \$R_1\$ and \$R_2\$. So there should be enough above for that.

A few notes, though. All high-pass filters are really bandpass filters (because of parasitics.) Also, it's generally not possible to consider equal-valued resistors in this arrangement. But it is often possible to consider equal-valued capacitors, as you suggest in your question. And in that case, and for this Butterworth design, you'll find that \$\frac{R_1}{R_2}=\frac{1}{2}\$ or, in short, \$R_2=2\,R_1\$.

You should be able to come up with yet another two simultaneous equations to solve. And they will result in very simple expressions for \$R_1\$ and \$R_2\$ in the case you propose. (You should be seeing values in the tens of \$\text{k}\Omega\$ range.)

The values I calculated, and using an LT1800 opamp, LTspice shows this:

enter image description here

If you still have questions, please clarify them.

To-Do Update 2020/11/25

I mentioned that on 2020/11/25 I would update this with the two equations in two unknowns and solve it for a complete solution. (Just so that others may use this as a self-learning tutorial into the future.) So I'm doing that now.

Simplfying your case, where \$C=C_1=C_2\$, we find:

$$\begin{align*} R_2&=\frac{1}{\sqrt{2}\,\pi\,f\:C}\approx 45.016\:\text{k}\Omega \end{align*}$$

Therefore, \$R_1\approx 22.508\:\text{k}\Omega\$.

If you plug in those values, you will get the above results.

If you choose \$R_1=22\;\text{k}\Omega\$ and \$R_2=47\;\text{k}\Omega\$ (as standard values), then the cross-over frequency will be closer to \$480\:\text{mHz}\$. But that's probably acceptable.

| improve this answer | |

Use the formula below (transposed) to calculate the value of your R3 and then double it to get the value of your R4. Use non polarised capacitors.


| improve this answer | |

First, I will present a method that uses Mathematica to solve this problem. When I was studying this stuff I used the method all the time (without using Mathematica of course). Besides that the answer of @jonk is excellent.

Well, we are trying to analyze the following opamp-circuit:


simulate this circuit – Schematic created using CircuitLab

When we use and apply KCL, we can write the following set of equations:

$$ \begin{cases} \text{I}_2=\text{I}_1+\text{I}_3\\ \\ \text{I}_4=\text{I}_1+\text{I}_3 \end{cases}\tag1 $$

When we use and apply Ohm's law, we can write the following set of equations:

$$ \begin{cases} \text{I}_1=\frac{\text{V}_\text{i}-\text{V}_1}{\text{R}_1}\\ \\ \text{I}_2=\frac{\text{V}_1-\text{V}_2}{\text{R}_2}\\ \\ \text{I}_3=\frac{\text{V}_3-\text{V}_1}{\text{R}_3}\\ \\ \text{I}_4=\frac{\text{V}_2}{\text{R}_4} \end{cases}\tag2 $$

Substitute \$(2)\$ into \$(1)\$, in order to get:

$$ \begin{cases} \frac{\text{V}_1-\text{V}_2}{\text{R}_2}=\frac{\text{V}_\text{i}-\text{V}_1}{\text{R}_1}+\frac{\text{V}_3-\text{V}_1}{\text{R}_3}\\ \\ \frac{\text{V}_2}{\text{R}_4}=\frac{\text{V}_\text{i}-\text{V}_1}{\text{R}_1}+\frac{\text{V}_3-\text{V}_1}{\text{R}_3} \end{cases}\tag3 $$

Now, using an ideal opamp, we know that:


So we can rewrite equation \$(3)\$ as follows:

$$ \begin{cases} \frac{\text{V}_1-\text{V}_x}{\text{R}_2}=\frac{\text{V}_\text{i}-\text{V}_1}{\text{R}_1}+\frac{\text{V}_x-\text{V}_1}{\text{R}_3}\\ \\ \frac{\text{V}_x}{\text{R}_4}=\frac{\text{V}_\text{i}-\text{V}_1}{\text{R}_1}+\frac{\text{V}_3-\text{V}_1}{\text{R}_3} \end{cases}\tag4 $$

Now, we can solve for the transfer function:


Where I used the following Mathematica-code:

 Solve[{I2 == I1 + I3, I2 == I4, I4 == I1 + I3, I1 == (Vi - V1)/R1, 
   I2 == (V1 - Vx)/R2, I3 == (Vx - V1)/R3, I4 == Vx/R4}, {I1, I2, I3, 
   I4, V1, Vx}]]

Out[1]={{I1 -> ((R2 + R3) Vi)/(R1 (R2 + R3) + R3 (R2 + R4)), 
  I2 -> (R3 Vi)/(R1 (R2 + R3) + R3 (R2 + R4)), 
  I3 -> -((R2 Vi)/(R1 (R2 + R3) + R3 (R2 + R4))), 
  I4 -> (R3 Vi)/(R1 (R2 + R3) + R3 (R2 + R4)), 
  V1 -> (R3 (R2 + R4) Vi)/(R1 (R2 + R3) + R3 (R2 + R4)), 
  Vx -> (R3 R4 Vi)/(R1 (R2 + R3) + R3 (R2 + R4))}}

When we want to apply the derivation from above to your circuit we need to use Laplace transform (I will use lower case function names for the functions that are in the (complex) s-domain, so \$\text{y}\left(\text{s}\right)\$ is the Laplace transform of the function \$\text{Y}\left(t\right)\$):

  • $$\text{R}_1=\frac{1}{\text{sC}_1}\tag6$$
  • $$\text{R}_2=\frac{1}{\text{sC}_2}\tag7$$

So, we can rewrite the transfer function as:


Where I used the following Mathematica-code:

In[2]:=R1 = 1/(s*C1);
R2 = 1/(s*C2);
FullSimplify[(R3 R4)/(R1 (R2 + R3) + R3 (R2 + R4))]

Out[2]=(C1 C2 R3 R4 s^2)/(1 + R3 s (C1 + C2 + C1 C2 R4 s))

Now, when we want to find an expression for the cut-off frequency \$\omega_0\$, we need to solve:


Where I used \$\text{s}:=\omega\text{j}\$ and \$\text{j}^2=-1\$.

Now, in your problem we can set \$\text{R}_3=\text{R}_4:=\text{R}\$ and \$\text{C}_1=\text{C}_2:=\text{C}\$ to end up with:


Using \$\omega_0=2\pi\text{f}_0\$ we get \$\omega_0=2\pi\cdot\frac{1}{2}=\pi\space\text{rad/sec}\$, so:


So, if you choose a value for \$\text{R}\$ or \$\text{C}\$ the unkown value will come out of the formula \$(12)\$.

Where I used the following Mathematica-code:

In[3]:=x = (C1 C2 R3 R4 s^2)/(1 + R3 s (C1 + C2 + C1 C2 R4 s));
s = \[Omega]0*I;
C1 = c;
C2 = c;
R3 = R;
R4 = R;
 Solve[{Sqrt[(ComplexExpand[Re[x]])^2 + (ComplexExpand[Im[x]])^2] == 
    1/Sqrt[2], \[Omega]0 >= 0 && c > 0 && R > 0}, \[Omega]0]]

Out[3]={{\[Omega]0 -> 
   ConditionalExpression[Sqrt[1 + Sqrt[2]]/(c R), R > 0 && c > 0]}}

And your amplitude of the transfer function will become:


| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.