bulk resistance compensation revisited

Paolo Predonzani predo at dist.dist.unige.it
Tue Sep 17 14:36:09 CEST 1996

This is my first posting to this mailing list.
A few days ago I downloaded Rick Jansen's sawtooth VCO. It uses a LM3046
transistor array for the lin/exp conversion and for the thermal stabilization.
The schematic has a compensation for the emitter resistance of the 3046.
At first I could not understand the explanation because the assumption
that the voltage across the diode (transistor in diode configuration) is
constant seemed not suitable for a first order compensation.
So I studied the circuit and found that the diode (transistor) can be 
eliminated yet the compensation is maintained.

I include a short GIF. It's uuencoded at the end of this message.
Please refer to it for the following discussion.

Q1 and Q2 are ideal transistors. Their Ic currents can be calculated using:
Ic = Is * exp(Vbe / Vt)
Vbe is the base-emitter voltage.
Vbe1 is referred to Q1's Vbe, Vbe2 is referred to Q2's Vbe.
Moreover Vb1 and Vb2 are the absolute voltages of Q1's and Q2's bases.

The 2 Re resistors represent the emitter resistances that can be found in
real transistors. So Q1 + Re = a real transistor (eg: LM3046)

The polarization current sets a constant Vbe1:
Vbe1 = Vt ln(Ipol / Is)

Vb1 is a linear combination of Vin and Vf:
Vb1 = k1 * Vin + k2 * Vf - c1
k1 = R * R2 / (R1 * R2 + R * (R1 + R2))
k2 = R * R1 / (R1 * R2 + R * (R1 + R2))
c1 is a constant that takes into account the base current of Q1

k1 is usually 18E-03

Vf = V1 - Rf * (Iout + Ipol)
V1 = Vb1 - Vbe1 - Re * Ipol =
   = k1 * Vin + k2 * Vf - c1 - Vbe1 - Re * Ipol = 
   = k1 * Vin + k2 * Vf - c2 =
   = k1 * Vin + k2 * V1 - k2 * Rf * Iout - k2 * Rf * Ipol - c2
V1 = k1 / (1 - k2) * Vin - k2 * Rf / (1 - k2) * Iout - c3

Now Vbe2 can be calculated:
Vbe2 = - V1 - Re * Iout
     = - k1 / (1 - k2) * Vin + k2 * Rf / (1 - k2) * Iout + c3 - Re * Iout

The two terms that depend on Iout must compensate each other.
k2 / (1 - k2) * Rf = Re

The solution is:
k2 = Re / (Re + Rf)

This final equation and the equations that define k1 and k2 should
be solved for R, R1, R2, k2 and Rf.
Since the solution is rather difficult to find, an approximated solution
is needed.
First choose Rf and R. Eg. Rf = 2k2 and R = 1k
Now calculate a course value for R1 so that 1V/oct is obtained. Eg: R1 = 54k
Calculate k2 (Eg: Re = 5.6, so k2 = 2.54E-03)
Find R2 using the formula:
 R2 = R * R1 * (1 - k2) / ((R1 + R) * k2)     (R2 = 386k)
Now R1 can be re-calculated:
 R1 = R * R2 * (1 - k1) / ((R2 + R) * k1)
but usually R1 is a constant resistor + a trimmer, so don't re-calculate
R1: use the course value and adjust the trimmer until 1V/oct conformity is

As it can be seen from the calculation R2 is ~ 390k (standard resistor value)
which is the same value Rick Jansen found to be appropriate in his schematic.
The only difference is that a diode (transistor) is saved.

Some final notes:
-the 18mV/oct for Vbe seems not appropriate for the 3046. AN-299 uses
 21.4mV/oct. The difference may depend on different temperature condition but
 may be due to a forward current emission coefficient > 1 as well.
-The polarization current Ipol should not be set to a high value (eg: top
 octave value) because you would have to use high input voltages (~10V) to
 decrease the output current to the lower octaves. High Vin means high
 Vb1. Keep in mind that Q1's collector is at 0V so if Vbc1 > -5 * Vt the
 transistor enters the saturated region and the exponential relationship is

I would appreciate feedback in case of any errors in my calculations.
I would like to know in what cases and why a diode is necessary. (Sorry,
I couldn' t find S. Franco's book).

I know that there are at least 2 other problems about exp conformity.
Is this compensation sufficient or should I work on the other problems?
I think the LM3046 is so cheap and available that it's worth trying to
correct its defects by means of additional circuitry.

begin 644 exp_comp.gif
M]8K-:K?<KO<+#HO'Y++YC$ZKU^RV^PV/R^=9@,U.SY_P"'[*GP"H-_ at A*&AR
MM0D("T0B at L_XU-L$S>'#_D`'L7F8V%&C)X at +*'Y,*)):KST14\Y:B:BE2U4P
M2W2:*2O>")TX&?$,\;.GGJ"%A&HD>M+H/Z0=F"I]XW1#U*=LIF:P2C4-U at M;
MSG/?$8$74!MR,*!G^?%""T^]9'C$>2)8-96+*I1X8G7R62A9 at T@$!&&007XD
M9)%&'KF at CMC8J&,F2/(7GH at HYJA!/$G:!*54'B8(@3ND1&69C"8F->4Z65(Y
MY).%_G$H9%C-R6:@5:1XU0IY!E at F8$T<%AVFH2SZQS0$]?:IIC&)JAR'A@)*
MFY]<+,UK'+W at -C?C<9/AFYR*OL:0+:?P1 at KKN<[UN_#!`*<)0\+L$1PPB_LB
MW6+4A'(=Z]=,QXAVT4TJ:ZG87HM,'=MR/[UCUW%73;7:9(3-]T)'_ZI at 2V_>
M_A?@!T64!3&'2TRB"-?&.8O%:R<URXX6K6::X;5 at C$HD&4!>QBHVPC!U$)N8
M&N75J+ at H#1*H.6&*B.C%BO415G?\&116)APC%I*+AQ18'8VXP3UB3'8S?.,7
MS-+<DII at 2*:G2H6T&XFRC5E13"H9@\V#%3`ED0D*.J>X(<BYA#)W7"<T*QG!
M%)&*C at EM5$4B21-R-G`/XU3BFEZ)I4)(E'@?VB<9(PC2+<AHH?XC89M at 6LHK
MBL>E2%QIU?B9))].29_S'*A1'Z4;U at TH=R]IB[6^9THSS at M_@CSJ!!%C)9IZ

| Paolo Predonzani  |  email: predo at dist.dist.unige.it |

More information about the Synth-diy mailing list