possible tempco alternative link

Ian Fritz ijfritz at earthlink.net
Tue Nov 9 05:17:40 CET 1999

Martin --

Thanks for taking the time to clarify your calculation. (I hadn't been
following the thread very closely.)

I went through your math to be sure I understood it. I agree with the
math, but I believe there is still a conceptual error, as I tried to
point out in my post. I'll try to go through this again more carefully,
using your notation.

First the "usual" case ("positive tempco and inv opamp", in your
terminology.) We agree that for exact compensation the resistors must

R(T)/R = (k ln2 / q) T = AT  (defining the scaling constant A = kln2/q).

The important point that I'm trying to emphasize is that this relation
is linear ==> through the origin <==. In other words, there is no
constant term on the right hand side. If R(T)/R = AT + B, then B causes
an error, because there is then a B/T term in the exponent. 

In your derivation, you only look at the temperature derivatives,
effectively ignoring the possibility of a constant term. In other words,
you just drop any effect of your R10 term. This term will cause errors
unless it is small.

If I could be allowed a suggestion, another way to analyze your circuit
would be to plot 

A'(T) = (1/(1 + Ru/R1))(1/T).  

For ideal behavior, A'(T) = A.  You pitch error over temperature is then
the fractional error of A'/A - 1.

I hope this discussion is useful. I think many people misunderstand
tempco compensation!

Terry Michaels refered me to some Q81 data a while ago. I think it had
pretty close to ideal behavior.

Best regards,


Martin Czech wrote:
> Ian, I'm sorry I caused confusion.  I should have said, that I
> assume a passive voltage divider network. In the case of an inverting
> opamp with tempco in the feedback or non feedback path you are perfectly
> right:
> positive tempco and inv opamp:
> => R(T)/R*q/k/T=ln(2) => R(T)=R*ln(2)*k*T/q (linear, as you said)
> with: R(T) : tempco in feedback path
>       R    : in nonfeedback path
> negative tempco and inv opamp:
> => R/R(T) *q/k/T=ln(2) => R(T)=R/ln(2)*q/k/T (not linear, unusual)
> passive divider can only use positive tempco:
> V is "regulated" by a voltage divider, with some fixed upper leg Ru
> and a positive tempco resistor Rl in the lower leg, eg.  If we assume
> that the transistor does NOT load the divider, we get:
> V=Rl/(Rl+Ru)*Vin
> where Vin is our input voltage we would like to scale to 1V/oct eg.
> (Other scaling gives the same math and is not considered here).
> The difference to the linear potentiometer is, that ONLY Rl varies,
> so V is gouverned by a NONLINEAR scaling factor S(Rl)=Rl/(Rl+Ru).
> We want:
> exp{+-Vin*Rl/(Rl+Ru)*q/k/T}=exp{+-Vin*ln(2)}
> (+- because it doesn't really matter, which of the two expo
> trannys is used as input, it jsut changes the sign.)
> => Rl/(Rl+Ru)*q/k/T =ln(2)
> => Rl(T)=Ru*[1/{(q/k/T/ln(2)-1}]
> The linear approximation temperature for Rl is
> Rl(T)=Rl0+a*T
> We can find the factor a by differenciation:
> d/dT Rl(T)=a
> But usually the tempco is given as ppm/K, ie. a relative measure,
> so  we have to write:
> tempco(T) = {d/dT Rl(T)}/Rl(T)*100 (for percent) or
> tempco(T) = {d/dT Rl(T)}/Rl(T)*1000 (for per mille (sp?)) or
> tempco(T) = {d/dT Rl(T)}/Rl(T)*1e6 (for ppm)
> The rest is gnuplot.
> (rem.:
> I did not take the pain of differentiation, instead I used
> a difference:
> d/dT Rl(T) ~ {Rl(T+deltaT)-Rl(T)} / {deltaT}
> Rl(T) is a friendly function, not much error due to this difference
> approximation.
> )
> m.c.

More information about the Synth-diy mailing list