# Weird results in Colpitts oscillator analysis

#### Virstark

Joined Aug 25, 2017
5
Hi, i'm trying to analyse a Colpitts oscillator, but despite the circuit works very well (simulated in LTSpice), the mathematical analysis I'm doing doesn't work out for getting the oscillation frequency (I get a complex one, no real as I need). Obviously I'm doing something wrong but I cannot get it. I'm analysing it in small signal with some ideal conditions except for the Rin (Input resistance), that was included (and makes things go more complex than a simple example analysis I found in some docs).

PS: I've already calculated it with non-ideal conditions and didn't work either. I mean, considering couple capacitors and the full hybrid model for small signal analysis.

******************************
FULL CIRCUIT SCHEMA
******************************

This oscillator works out and is well configured to run at 10 kHz (approx.)

******************************
SMALL SIGNAL CIRCUIT
******************************

As ideal conditions I'm not considering couple capacitors C2, C1, and emitter of Q1 is referenced to ground due the short circuit of C5. So here's the small signal circuit resulting from this abstraction. I'm analyzing in the s-domain:

Hybrid params are:
hie = 1890
1/hoe = Rhoe = 3.698k
hfe = 200

*************************************************************************
MATHEMATICAL ANALYSIS OF THE SMALL SIGNAL CIRCUIT
*************************************************************************

I'm aware for oscillation Barkhausen criterion must be furfilled, and in this case, equations are easily extrapoled to that criterion, but, as the header of this thread, oscillation frequency w0 cannot be found in a real form despite the circuit works well. So, here's the code in Matlab for finding such frequency using nodal analysis:

Code:
% Laboratory05I02
%
%

function Laboratory05I02
syms w vb vc;

% Component values.
L1 = 300e-3;
C3 = 240e-9;
C4 = 24e-9;
L2 = 10e-3;
R1 = 10e3;
R2 = 4e3;

% Components reactances.
XL1 = w * L1;
XC3 = -1 / (w * C3);
XC4 = -1 / (w * C4);
XL2 = w * L2;

% Component impedances.
ZL1 = 1j * XL1;
ZC3 = 1j * XC3;
ZC4 = 1j * XC4;
ZL2 = 1j * XL2;

% Tank circuit reactance and impedance. Could be a source of the
% error, but I think they're well calculated.
XB = (XL2 * (XC3 + XC4))/(XC3 + XC4 + XL2);
ZB = 1j * XB;

% 2N2222 BJT hybrid params from the biased BJT.
hie = 1890;
hfe = 200;
hoe = 0.000027040743590210300578734437437828;
hoe_ = 1/hoe; % As a resistance.

% Rin: Input resistance = hie || R1 || R2
Rin = 1 / ((1/hie) + (1/R1) + (1/R2));

% Zout: Output impedance.
Zout = hoe_ * ZL1 / (hoe_ + ZL1);

% AC Gain: As (ib = vb/hie), then the dependant current source in the
% model should be (hfe/hie * vb). Where (A = hfe/hie).
A = hfe / hie;

% Nodal equations.
eq1 = -A*vb - vc/Zout - vc/(ZB + Rin) == 0; % Node of collector.
eq2 = vb == vc * Rin / (ZB + Rin); % Defining v in terms of vc.

% Solving.
answ = solve(eq1, eq2, w, vb, vc);

% Obtaining w0, or the oscillation frequency.
w0 = vpa(answ.w, 5)

% w0 =        31.224i
%   67710.0 + 5.1086i
% - 67710.0 + 5.1086i
%                 1.0

end
As you see, the most near result is (w0 = 67710.0 + 5.1086i), but I don't know if I'm missing something, but this w0 has to be real, otherwise, frequency 's' will be complex (s = -5.1086 + 67710.0i) and output will diminish continuosly like a relaxation oscillator.

#### simozz

Joined Jul 23, 2017
125
I did not make calculus on the network but I notice that in eq1 you are resting a voltage gain and currents. This is not correct.

Also, the Barkhausen condition is not the only one.
The other is that for oscillation to occur, the phase shift between input and output must be zero, which means that the imaginary part of the feedback network must be zero.

simozz

#### Bordodynov

Joined May 20, 2015
3,166
in LTspice
.model 2n2222 npn(is=1e-14 vaf=100 bf=200 ikf=0.3 xtb=1.5 br=3 cjc=8e-12 cje=25e-12 tr=100e-9 tf=400e-12 itf=1 vtf=2 xtf=3 rb=10 rc=.3 re=.2 vceo=30 icrating=800m mfg=nxp)
==>
Rhoe = VAF/ic~100/5mA=20kOhm

#### Virstark

Joined Aug 25, 2017
5
I did not make calculus on the network but I notice that in eq1 you are resting a voltage gain and currents. This is not correct.

Also, the Barkhausen condition is not the only one.
The other is that for oscillation to occur, the phase shift between input and output must be zero, which means that the imaginary part of the feedback network must be zero.

simozz
It's because dependant current source of the small signal model, is hfe*ib, and ib=vb/hie; so the source will be basically controlled by vb, being A=hfe/hie.

For the phase shift, in the manual calcs I can get a real value for the oscillation frequency where imaginary part disappears, but the real part isn't satisfied with that frequency >.< I can upload an image for that, isn't large.

#### Virstark

Joined Aug 25, 2017
5
in LTspice
.model 2n2222 npn(is=1e-14 vaf=100 bf=200 ikf=0.3 xtb=1.5 br=3 cjc=8e-12 cje=25e-12 tr=100e-9 tf=400e-12 itf=1 vtf=2 xtf=3 rb=10 rc=.3 re=.2 vceo=30 icrating=800m mfg=nxp)
==>
Rhoe = VAF/ic~100/5mA=20kOhm
Yeah, my mistake :O Indeed Rhoe=36.98k, but in the Matlab script is considered like that. I just had a typo error for representing the small signal model for posting it here.