possible tempco alternative link

Martin Czech martin.czech at intermetall.de
Mon Nov 8 09:51:48 CET 1999

:::I'm not following this argument. The term being compensated is
:::exp(-V/kT). Since V is proportional to the tempco R, we need R
:::proportional to T. This is a linear T dependence of R. It is not correct
:::to say that the tempco should be the same as the tempco of 1/T. The two
:::temperature effects are not being subtracted, they are being ratioed.

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

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:


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:


(+- 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


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.

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


More information about the Synth-diy mailing list