# Unexpected behavior of the Sallen-Key second order filter

I met an unexpected behavior when I simulated under Multisim (National Instruments) the Sallen-Key circuit given on the image below.

The circuit is designed to receive a 1.8kHz modulated sin wave as input. The equations are :

• $H(j\omega) = \frac{k}{-\left(\frac{\omega}{\omega_0}\right)^2+j\frac{1}{Q}\frac{\omega}{\omega_0}+1}$
• $k = 1+\frac{R_b}{R_a}$
• $f_0 = \frac{1}{2\pi\sqrt{mn}R_1C_1}$
• $Q= \frac{\sqrt{mn}}{m+1+mn(1-K)}$

Values that are imposed to me are :

• $n = 1$
• $C_1 = 100 nF$
• $R_a = 1 k\Omega$

For my situation, I choose and/or calculate the following values :

• $R_b = R_1 = R_a = 1k\Omega$
• $mR_1 = 470\Omega$
• $C_1 = nC_1 = 100 nF$
• $f_0 = 2300 Hz$
• $Q = \frac{\sqrt{2}}{2}$

So, the circuit schematic is the following

And the Bode plot simulation gives :

And I just do not know how it's possible to rise after $f_0$

If someone see the where is the problem.

Thank you in advance to any one who may be able to give me some ideas.

Here is the schematic netlist (I changed some values but behavior is nearly the same)

** PasseBasOrdre2 **
*
* NI Multisim to SPICE Netlist Export
* Generated by: Dim
* Mon, Nov 18, 2013 20:46:37
*

*## Multisim Component U1 ##*

xU1 1 3 VPOS VNEG BasculeSeuil 5T_VirtualU1 params: Vos=0.001 Ibias=8e-008 Ioffset=2e-008

Av=200000 BW=100000000 SR=1000000 CMRR=100 Iomax=0.025 Rin=10000000 Rout=10

.subckt 5T_VirtualU1  In_p In_n Vpos Vneg Out params: Av=200k BW=20Meg CMRR=100

+SR=1Meg Rout=75 Iomax=25m Rin=100meg Vos=0.1m Ibias=1n Ioffset=1p

.param Rp1=1e6

.param Rs1=1e6

.param K_Is2a=sqrt(Av)/Rs1

.param K_Is2b=sqrt(Av)/Rp1

.param Cp1={Av/(2*pi*BW*Rp1)}

.param CMRR_lin=10**(CMRR/20)

Rin In_p In_n {Rin}

Bcm 4 3 V = { V(cm)/CMRR_lin}

Voff In_p 4 {Vos}

Ibias1 In_p 0 {Ibias}

Ibias2 In_n 0 {Ibias}

Ioffset In_p In_n {Ioffset/2}

Rcm1 In_p cm 10meg

Rcm2 In_n cm 10meg

BIs1a vref vs2a I = { K_Is2a*(V(3)-V(In_n)) }

Rs1 vs2a vref {Rs1}

BIs2b vref vs2b I = { K_Is2b*(V(vs2a)-v(vref)) }

Rp1 vs2b vref {Rp1}

VCp1sense vs2b vs2b_ 0

Cp1 vs2b_ vref {Cp1}

D3 vs2b_ 8 Limit_Diode

D4 8 vpos Limit_Diode

B_SRp 8 vpos I={I(VCp1sense)- (Cp1*SR)}

D5 10 vs2b_ Limit_Diode

D6 Vneg 10 Limit_Diode

B_SRn Vneg 10 I={-1*I(VCp1sense)-(Cp1*SR)}

DVpclip vs2b_ Vpos V_limit

DVnclip Vneg vs2b_ V_limit

Bout vref out_ I={(V(vs2b)-v(vref))/Rout}

Rout vref out_ {Rout}

Voutsense out_ out 0

D9 out 15 Limit_Diode

D10 15 vpos Limit_Diode

B_outp 15 vpos I={I(Voutsense)- Iomax}

D11 16 out Limit_Diode

D12 vneg 16 Limit_Diode

B_outn vneg 16 I={-1*I(Voutsense)-Iomax}

R5 Vpos mid 1000000

R6 mid Vneg 1000000

Eref vref 0 mid 0 1

.MODEL Limit_Diode  D (IS= 1.0e-12)

.MODEL V_limit D(n=0.1)

.ends

*## Multisim Component R3 ##*

rR3 1 2 1000 vresR3

.model vresR3 r(  )

*## Multisim Component V3 ##*

vV3 0 VNEG dc 5 ac 0 0
+           distof1 0 0
+           distof2 0 0

*## Multisim Component V2 ##*

vV2 VPOS 0 dc 5 ac 0 0
+           distof1 0 0
+           distof2 0 0

*## Multisim Component V1 ##*

vV1 4 0 dc 0 ac 1 0
+      distof1 0 0
+      distof2 0 0
+      sin(0 {1*1.414213562} 1800 0 0 0)

*## Multisim Component R4 ##*

rR4 2 4 390 vresR4

.model vresR4 r(  )

*## Multisim Component R1 ##*

rR1 3 0 68000 vresR1

.model vresR1 r(  )

*## Multisim Component R2 ##*

rR2 BasculeSeuil 3 33000 vresR2

.model vresR2 r(  )

*## Multisim Component C2 ##*

cC2 1 0 1e-007

*## Multisim Component C1 ##*

cC1 BasculeSeuil 2 1e-007

• Does it have to be single supply? Repeat the simulation with +/- 5V rails and see what happens. – Matt Young Nov 17 '13 at 22:40
• AC signal into a single-supply OPAMP isn't going to give textbook results – JonRB Nov 17 '13 at 22:58
• To the above comments, remember the simulation shown above is an AC simulation which is linearized about the operating point. There's no clipping, no non-linear behaviour at all for AC analysis. Now, it may be that the operating point is giving some unusual small-signal parameters for the AC simulation and that may be the root of the problem. – Alfred Centauri Nov 18 '13 at 1:34
• Where did you find an image of an op-amp circuit with "i" and "ni" labels for the inputs? I wonder whether this was common practice once upon a time? I don't recall having seen such a notation. – Kaz Nov 18 '13 at 8:18
• Take a look at ti.com/lit/an/sloa024b/sloa024b.pdf look for the "effect of output impedance". Might that be it? Although it's showing up at too low a frequency range in this case. – Kaz Nov 18 '13 at 8:32

You don't have the grounding set up correctly. Right now, you're running the circuit around the op-amp's negative supply rail so it's clipping off the bottom part of the waveform. You need to convert this to a split rail design. This can be done by either changing the opamp supplies from 5v and 0v to +2.5v and -2.5v or changing the ground of the rest of the circuit to +2.5v. And try using a 1vrms input signal as 5vrms will exceed your supply rails.

• Thanks for answer. But I always have the same Bode plot when taking what you said in consideration. – eldala07 Nov 17 '13 at 23:37
• @user32866, replace the opamp model with an ideal voltage amplifier model with very large gain and check the results of your AC simulation to see if they agree with theory. If so, there is something odd going on with the opamp model. – Alfred Centauri Nov 18 '13 at 1:36
• @AlfredCentauri , with an ideal opamp, with bad grounding solved, I get the same results. Only the shape is a little better. – eldala07 Nov 18 '13 at 18:30
• @diminus, that's very odd. Would you post the netlist? – Alfred Centauri Nov 18 '13 at 18:32
• @AlfredCentauri I added the netlist at the end of the question. I changed some values, but the behavior remains the same. – eldala07 Nov 18 '13 at 20:01

The LT1490 has a poor output impedance: -

At 10kHz it's output impedance is over 100 ohms - the 100nF feedback capacitor, at 10kHz has an impedance of 159 ohms - it isn't behaving like a decent filter any more and at 100kHz the output impedance is stupidly high whereas the 100nF is 15.9 ohms.

Choose a better op-amp is what I'd recommend.

Andy nailed it but maybe didn't make the implications clear enough.

Assume that the circuit is a perfect LPF and the opamp output is therefore 0 at high frequencies. Now factor in the output impedance from Andy's graph; at low gains, above 20kHz it will be 1 kilohm or more.

Now re-draw a high frequency approximation to your circuit, and it looks like:

simulate this circuit – Schematic created using CircuitLab

and it will have a few dB of attenuation at high frequencies as your measurements suggest (getting better at lower frequencies where the Zout improves).

You could improve it by choosing all resistors at least 10x higher than the Zout but if you can't change the C1 value that will not give you the frequency response you want. Then the only answer is, as Andy says, a better opamp.