I'm trying to understand the transfer function of the band pass sallen key filter, which looks like:

enter image description here

With the following circuit:

enter image description here

How can I analyse it to get the transfer function? Thanks for any help.

  • \$\begingroup\$ How good at algebra are you? Where did you fall-down in your analysis? \$\endgroup\$ – Andy aka Mar 8 '18 at 10:30
  • \$\begingroup\$ @Andyaka My algebra is pretty good. But I do not understand the way to proceed to end up with the transfer function. \$\endgroup\$ – jopi Mar 8 '18 at 10:37
  • 1
    \$\begingroup\$ Have you thought about something simpler to dirty your hands on i.e. just making the circuit unity gain and solving for Rs and Cs? Maybe even just a cascade of two RC filters? In other words hone your skills on something simpler. Nobody here is going to deliver this proof because of the work involved and the scant return of an upvote or two. \$\endgroup\$ – Andy aka Mar 8 '18 at 10:41
  • \$\begingroup\$ @Andyaka No, in order to proceed in my work I need to know how the transfer function is find. \$\endgroup\$ – jopi Mar 8 '18 at 10:42
  • \$\begingroup\$ @jopi: Do you know nodal analysis? The circuit has 5 nodes so you can write 5 equations and one more equation that V+ = V- and then solve that. \$\endgroup\$ – anhnha Mar 8 '18 at 11:49

You can use modified nodal analysis to solve for all unknown node voltages and unknown currents. Once you get the node voltage, you can find the transfer function. For the analysis, I denote node and current as in the picture below.

enter image description here

Now you can write KCL for every node and a constraint by OpAmp.

You can get 7 equations:

enter image description here

Then you can solve 7 equations to get all unknown voltages and unknown currents. Finally transfer function is just V5/V1.

enter image description here

| improve this answer | |
  • \$\begingroup\$ What is I_oa???? \$\endgroup\$ – jopi Mar 8 '18 at 12:53
  • \$\begingroup\$ Ioa is current flowing into terminal 5 of OpAmp as I denoted it the picture. \$\endgroup\$ – anhnha Mar 8 '18 at 12:56
  • \$\begingroup\$ Is that zero in this case? \$\endgroup\$ – jopi Mar 8 '18 at 12:57
  • \$\begingroup\$ No, input current of OpAmp is zero but not the output Ioa. \$\endgroup\$ – anhnha Mar 8 '18 at 13:01
  • 1
    \$\begingroup\$ Did you see my equation for node 5 above? Solve it yourself. I can not afford my time more. \$\endgroup\$ – anhnha Mar 8 '18 at 13:06

General hints (works not only for this particular configuration):

Do following steps in \$s\$-domain:

  • set up equation vor \$v_+\$ (pos. input of OpAmp) as expression of \$v_{in}\$ and \$v_{out}\$.
  • set up equation vor \$v_-\$ (neg. input of OpAmp) as expression of \$v_{out}\$.
  • solve the equation \$v_+ = v_-\$ for \$v_{out}\$ (e.g. by nodal analysis or by network transformations)
  • plug in the resulting expression in definition of \$H(s)\$:
    \$H(s) = \frac{v_{out}}{v_{in}}\$
    The resulting expression won't contain \$v_{in}\$ (or \$v_{out}\$ or \$v_{aux}\$) any more but will be just an expression of the parameters \$R_1\$, \$R_2\$, \$R_f\$, .., \$C_1\$, .. and the independent variable \$s\$.

You can use symbolical math tools, e.g. sympy package for Python, Maple, Mathematica...

Here is a python script doing the algebra (using sympy); not sure though if correct:

# deriving the transfer function of a Sallen-Key band pass filter

from sympy import Symbol, symbols, solve, collect

s = Symbol('s')

def Xc(C): global s; return 1 / (s * C)

Vin, Vout, Vaux = symbols('Vin Vout Vaux')
R1, R2, C1, C2, Rf, Ra, Rb = symbols('R1 R2 C1 C2 Rf Ra Rb')
X1, X2 = Xc(C1), Xc(C2)

# get expression for Vaux by solving KCL in node_aux:
Vaux_expression = solve(    (Vin  - Vaux) / R1 
                          + (Vout - Vaux) / Rf 
                                  - Vaux  / X1 
                                  - Vaux  / (X2 + R2), 

Vpos = Vaux_expression * R2 / (X2 + R2) # voltage at pos. input of OpAmp
Vneg = Vout * Ra / (Ra + Rb)            # voltage at neg. input of OpAmp

# get expression for Vout by solving equation Vneg = Vpos for Vout
Vout_expression = solve(Vpos - Vneg, Vout)[0]

# get transfer function H(s) by defining formula:
H = Vout_expression / Vin
H = collect(H, s)
print H

Result: C2*R2*Rf*s*(Ra + Rb)/(C1*C2*R1*R2*Ra*Rf*s**2 + R1*Ra + Ra*Rf + s*(C1*R1*Ra*Rf - C2*R1*R2*Rb + C2*R1*Ra*Rf + C2*R2*Ra*Rf))

| improve this answer | |
  • \$\begingroup\$ Thanks for your answer, but the downside is I know these steps but I do not know how to derive the equations for \$v_+\$ and \$v_-\$ :( \$\endgroup\$ – jopi Mar 8 '18 at 11:33
  • \$\begingroup\$ Well at least for \$v_{-}\$ it is very easy: \$v_{-} = v_{out} \frac{R_a}{R_a + R_b}\$. For \$v_{+}\$ it is much more complicated but it can be done. It's "just" combination of series/parallel and voltage divider circuits and using \$X_C=\frac{1}{sC}\$. \$\endgroup\$ – Curd Mar 8 '18 at 11:37
  • \$\begingroup\$ For \$v_-\$ it is indeed simple. But can you help me with \$v_+\$? \$\endgroup\$ – jopi Mar 8 '18 at 11:42
  • \$\begingroup\$ Try to model the node feed via \$R_1\$, \$C_1\$, \$R_f\$ as a Thevenin voltage source. What would be its Thevenin voltage (as expression of \$v_{in}\$ and \$v_{out}\$) and its Thevenin resistance (actually impedance in s-domain)? If you got that it's one more (but simple) step to find an expression for \$v_{+}\$. \$\endgroup\$ – Curd Mar 8 '18 at 11:47
  • \$\begingroup\$ I think that I can write (for the most left node): $$i_{node}=i_{R1}+i_{C1}+i_{C2}+i_{Rf}$$ \$\endgroup\$ – jopi Mar 8 '18 at 11:51

This filter can be analyzed using the fast analytical circuits techniques or FACTs. The principle is to determine the time constants of the circuit in two different configurations: when the excitation is reduced to 0 V and with a nulled output when the excitation is back.

Reducing the excitation to 0 V, means replacing the input source \$V_{in}\$ by a short circuit. Then, "look" at the resistance \$R\$ offered by the energy-storing elements (the caps) to form time constants, \$\tau_1=RC_1\$ and \$\tau_2=RC_2\$. The below drawings illustrate this principle:

enter image description here enter image description here

Using these two drawings, you determine the following time constants:




Then, you set capacitor 1 in its high-frequency state (a short circuit) and determine the resistance \$R\$ looking into \$C_2\$'s terminals:

enter image description here

You have \$\tau_{12}=C_2R_2\$ and \$b_2=\tau_1\tau_{12}\$

Finally, you determine the gain \$H^2\$ when capacitor \$C_2\$ is a short circuit:

enter image description here

The complete transfer function is determined according to \$H(s)=\frac{sH^2\tau_2}{1+sb_1+s^2b_2}\$

However, even if this expression is mathematically correct, you have zero insight on the plateau gain \$H_{MB}\$ and the tuning frequency which are truly the design goals. You need to rework the formula according to the following low-entropy format: \$H(s)=H_{MB}\frac{1}{1+(\frac{\omega_0}{s}+\frac{s}{\omega_0})Q}\$. This is what the following Mathcad sheets show and compare the various responses:

enter image description here enter image description here enter image description here

So the point is not just write a transfer function linking \$V_{out}\$ to \$V_{in}\$ but more rearranging the result in a meaningful form from which you gain insight and can design for a certain goal in tuning frequency and quality factor: this is all what FACTs are all about.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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