J
John Fields
Guest
1. THE THERMISTOR
For a good discussion of how thermistors work, refer to:
http://www.epcos.com/inf/50/db/ntc_02/00170027.pdf
For the purpose at hand, (determining how the change in resistance
affects the voltage into the comparator) refer to the "1006" column
in:
http://www.epcos.com/inf/50/db/ntc_02/01470178.pdf
and you'll notice that at 15°C the value of Rt/R25 for 15°C is 1.4883,
and at 35°C it's 0.686.
What that means is that if the thermistor has a resistance of 10000
ohms at 25°C, then at 15°C it'll have a resistance of 14,883 ohms, and
at 35°C it'll have a resistance of 6860 ohms.
2. THE VOLTAGE DIVIDER
Now, if we connect the thermistor in series with a resistor and apply
a fixed voltage across them, like this:
E1
|
[R1]
|
+---->E2
|
[RT1]
|
GND
Then when temperature increases and the resistance of the thermistor
(RT1) decreases, E2 will also decrease. Conversely, when the
temperature to which RT1 is exposed decreases, E2 will increase.
The exact relationship is:
E1 RT1
E2 = ------
R1+RT1
so, if we make E1 = 12V and R1 = 100kohms, then at 15°C,
12*14883
E2 = ------------- ~ 1.555V
100000+14883
and the power being dissipated in the thermistor will be:
E˛ 1.555˛
P = --- = ----- = 162ľW
R 10000
At 35°C, the potput voltage will be:
12*6860
E2 = ------------- ~ 0.7703V
100000+6860
and the power dissipated by the thermistor:
E˛ 0.7703˛
P = --- = ------- = 86ľW
R 6860
The power dissipated in the thermistor may be enough to cause a
self-heating error to occur, but you'd need to look at the data sheet
for the particular thermistor you're using to make sure.
In any case, if the self-heating error is negligible with respect to
the accuracy you're looking for, with 1.555V out at 15°C and 0.770V
out at 35°C, that's a spread of 780mV from one end of the temp range
to the other, which is pretty good.
3. THE REFERENCE DIVIDER.
If we now connect our thermistor circuitry to the + input of a voltage
comparator, like this,
+12V>---------+---------+----+
| | |
[100K] | [RL]
| | |
+--------|+\ |
| | >--+----->OUT
| |-/
| |
[RT1] |
| |
GND>----------+---------+---------->GND
and we arrange things so that the voltage on the - input is 0.770V,
then when the voltage on the + input rises to 0.770V or higher, the
comparator's output transistor will switch off and the voltage on OUT
will be pulled up to +V through RL.
We can do that by using another voltage divider, like this:
+V>---+-------+-----+----+
| | | |
E1--+ [100K] | [RL]
| | | |
[R1] +----|+\ |
| | | >--+----->OUT
E2--+-------|----|-/
| | |
[R2] [RT1] |
| | |
GND>--+-------+-----+---------->GND
and selecting R1 and R2 so that the voltage at their junction will be
0.770V. An easy way to do this is to look at the comparator data
sheet to find out what the required input current is and making the
resistances small enough to swamp out that current. For the LM311,
that comes out to about 350nA, so if we make the divider current 350ľA
the LM311's input currents will contribute about a 1% error to the
divider's output voltage. Better yet, let's make the divider current
about 1mA and use 1% resistors for the divider. That way, most of the
error will be in the resistors, where we can easily account for it.
Since we've got a 12V supply, and 10kohms is a standard 1% value, and
12V into 10k is about 1.2mA, let's make R1 = to 10k and figure out
what R2 needs to be to get us to 0.770V.
Since our new divider is the same as the old one, we can write:
E1 R2
E2 = ------
R1+R2
and rearrange to solve for R2:
E2 R1
R2 = -------
E1-E2
which gives us:
0.770*10000
R2 = ------------- = 685.66 ohms
12-0.770
681 ohms is a standard 1% value, so plugging that into
E1 R2
E2 = ------
R1+R2
to get the voltage into the comparator's - input gives us:
E1 R2 12*681
E2 = ------- = ----------- = 0.765V
R1+R2 10000+681
That's a voltage error of 5 parts out of 770, which is just a little
over 1/2 a percent, so since the resistor tolerance error will
dominate at this point we have a tentative solution, and our circuit
now looks like this:
+V>---+-------+-----+----+
| | | |
| [100.0K] | [RL]
| | | |
[10.0K] +----|+\ |
| | | >--+----->OUT
+-------|----|-/
| | |
[681] [RT1] |
| | |
GND>--+-------+-----+---------->GND
4. THE VARIABLE REFERENCE.
Now, we could use the same procedure to figure out a new R2 for a temp
of 15°C, and switch between the two, or figure out a whole bunch of
different R2's and switch them in and out for the different temps we
wanted to set to between 15 and 35°, but a much nicer way to do it
would be to use a pot.
In order to be able to do that, our circuit changes to:
+V>---+-------+-----+----+
| | | |
[R1] [100.0K] | [RL]
| | | |
| +----|+\ |
| | | >--+----->OUT
[R2]<-----|----|-/
| | |
[R3] [RT1] |
| | |
GND>--+-------+-----+---------->GND
Where R1 is a pot and R1 and R3 are 1% resistors used to set the ends
of the pot's resistive element to the voltages corresponding to 15°
and 35°C.
Just to get a feel for things, if we want the end of the pot connected
to R1 to be at the higher endpoint voltage (1.555V) and we keep R1 at
10k,then the series combination of R2 and R3 has to be:
E2 R1 1.555*10000
R2+R3 = ------- = ------------ ~ 1489 ohms
E1-E2 12-1.555
and if we want the lower end of the pot to be at 0.77V, then since
there's
E1 12
I = ----------- = ------------ = 1.04mA
R1+(R2+R3) 10000+1489
flowing in the circuit, and
E
R = ---
I
0.77V
then R3 = ------- = 740 ohms.
1.04mA
Since 750 ohms is a standard 1% value, that leaves
1489ohms - 750ohms = 739 ohms for the pot.
739 ohms is _not_ a standard end-to-end resistance for a pot, so we'll
have to do something to fix that. Since R1R2R3 is a voltage divider,
all we're really concerned with is the ratios of resistances, so let's
scale up the 739 ohms to 1000 ohms, which is a standard end-to-end
resistance for pots, and then scale up everything else and see what
happens.
1000/739 = 1.353, so R1 needs to go to 13530 ohms, R2 will go to 1000
ohms and R3 will need to go to 1000 ohms as well. So now, since the
closest we can get to 13530 ohms with 1% resistors is 13700 ohms, our
string now looks like this:
+12V
|
[13.7K]
|
|
[1000]<----Vout
|
|
[1000]
|
GND
With the wiper at the top of the pot, Vout will be:
12*2000
Vout = --------- = 1.528V
15700
and at the bottom of the pot it will be:
12*1000
Vout = --------- = 0.764V
15700
(1.555-1.528)*100
So, we'll have an error of ----------------- ~ -1.7%
1.555
(0.770-0.764)*100
on the high end, and ------------------- = + 0.78% on the high end.
0.764
Not too shabby, and now, after adding all the resistor values and
introducing the hysteresis resistor, our circuit looks like this:
+12>---+--------+-----+-------+
| | | |
[13.7K] [100.0K] | [RL]
| | | |
| +-------[Rh]--+
| | | |
| +----|+\ |
| | | >-----+----->OUT
[1000]<-----|----|-/
| | |
| | |
[1000] [RT1] |
| | |
GND>---+--------+-----+---------->GND
5. HYSTERESIS
Since a comparator has what amounts to essentially infinite gain, if
its input signals are allowed to move through the switching region
slowly, any noise present on the inputs during that time _will_ cause
the output to swing wildly between its limits. If slowly moving
signals _must_ be accommodated, the cure for the problem is to cause
the input(s) to quickly move out of the sensitive region when the
output changes state. This is done by connecting the output to the
non-inverting input so that when the non-inverting input goes more
positive than the inverting input, causing the output to go high, a
little of that high-going output signal is coupled back to the
non-inverting input, causing it to quickly go even higher, moving it
quickly out of the noisy region, thus preventing the "chatter" which
would otherwise surely occur. In this instance, that positive feedback
is called "hysteresis".
The amount of hysteresis intoduced into the circuit can be controlled
by selecting the resistance of the feedback resistor, which is part of
yet another voltage divider.
Looking at the output of the circuit above in a little more detail
shows us that the output stage is a transistor with an open collector
which pulls the putput down to ground when it is turned on and allows
the output to float when it's turned off, and what's important to
remember is that when the non-inverting (+) input is more positive
than the inverting (-) input the output will be turned off, allowing
current to flow from the supply and through RL into whatever is
connected to the comparator's output.
+12>---+--------+-------+-----+
| | | |
[13.7K] [100.0K] | [RL]
| | | |
| +--[Rh]-------+
| | | |
| | +------+ |
| +----|+ C|-+----->OUT
| | |LM311 |
[1000]<-----|----|- E|-+
| | +------+ |
| | | |
[1000] [RT1] | |
| | | |
GND>---+--------+-------+-----+----->GND
Since the LM311 can sink 50mA, there's no reason why it can't be used
to dirctly drive a 12V relay with a coil resistance of
12V
R = ----- = 240 ohms
50mA
or greater, so adding that circuitry yields:
+12>---+--------+-------+-----+-------+
| | | |K | O--> |
[13.7K] [100.0K] | [1N4001] [COIL]- | - -|
| | | | | | O------>COM
| +--[Rh]-------+-------+ |
| | | | +----------->NO
| | +------+ |
| +----|+ C|-+
| | |LM311 |
[1000]<-----|----|- E|-+
| | +------+ |
| | | |
[1000] [RT1] | |
| | | |
GND>---+--------+-------+-----+----->GND
Checking the sense of the output, we find that as the thermistor heats
up its resistance will decrease until it causes the comparator's +
input to go more negative than its - input, which will cause the
output transistor to turn on, energizing the relay, so this a cooling
thermostat. That is, if it gets hot enough to turn on the relay, the
relay will turn on the A/C, cooling the thermistor until the voltage
on the + input goes more positive than the voltage on the - input,
turning off the output transistor, turning off the relay, then
turning off the AC until it gets hot enough to turn it back on...
Now that we have that all figured out, if we simplify the circuit by
replacing the comparator's input with a resistor and its output with a
switch we'll have what amounts to:
+12>---+---------+
| |
[100.0K] [240]
| |
+--[Rh]---+-+-------->Eout
| |
| +-> |
Ein---+----+ |
| | O
[RT1] [Rin] |
| | |
GND>---+----+----------+---->GND
If 240 ohms (the relay coil resistance) << than Rh and Rin is >> RT1,
(which they will be) then the circuit further simplifies to:
+12>---+-------------+
| |
[100.0K] |
| |
+--[Rh]---O |
| | |
| O--> |<--O
Ein---+ |
| |
[RT1 |
| |
GND>---+----+
So that with the switch in the rightmost position we have:
+12>---+------+
| |
[100.0K] [Rh]
| |
+------+--->Ein
|
[RT1]
|
GND>---+
And with the switch in the leftmost position we have:
+12>---+
|
[100.0K]
|
+------+--->Ein
| |
[RT1] [Rh]
| |
GND>---+------+
Since, at 15°C, (without Rh in the circuit) we'll have an output
voltage of 1.55V from the thermistor and, at 35°C, an output voltage
of 0.77V, we'll have a 780mV change for a 20° change in temperature,
which is a sensitivity of 39mV/°C. That won't be quite true over
every increment of that range, since the thermistor is a non-linear
device but, for now, it's close enough.
Next, let's say that the accuracy spec's for the thermostat will
allow, after everything else has been accounted for, an extra degree C
to be used up to get the hysteresis we need. That means, since we've
got a sensitivity of 39mV/°C, that we've got 39mV to play around with
to get some hysteresis.
Now, below 15°C our thermistor will exhibit a resistance > 14883 ohms,
and if it warms up to 15°C, our circuit will look like this:
+12>---+
|
[100.0K]
|
+---->1.55V
|
[14883]
|
GND>---+
When this happens and the comparator's - input is set to 1.55V, the
output will go low and turn on the relay, and what we'd like to do is
to fool the thermostat into thinking that when that happens it's
actually 16° outside so that it'll move the input switching point a
little closer to ground to get away from the noise-susceptible input
transition region.
Since the thermistor resistance decreases when it gets hotter, what we
can do when the output goes low is to parallel the thermistor with
enough resistance to lower the 1.55 volts by one degree, to 1.51V
(rounding the 39mV/°C sensitivity to 40mV/°C).
Looking at the thermistor circuitry like this:
E1
|
[R1]
|
+---->E2
|
[R2]
|
GND
And setting E1 = 12V, E2 = 1.51V, and R1 = 100kohms,
we can solve for R2, the total resistance we need to get 1.51V out by
writing:
E2 R1 1.51*100000
R2 = ------- = ------------- ~ 14395 ohms
E1-E2 12.0-1.51
Since, at 15°, the thermistor will be at 14883 ohms, we'll need to
parallel it with a resistor to make the combination look like 14395
ohms, like this:
E1
|
[R1]
|
+-----+--->E2
| |
[R2] [R3]
| |
+-----+
|
GND
Knowing that the equation for the total resistance of two parallel
resistors is:
R2 R3
Rt = -------
R2+R3
and that R2 = 14883 ohms and Rt = 14395 ohms,
we can rewrite it to solve for R3 like this:
Rt R2 14395*14883
R3 = -------- = ------------- ~ 439kohms
R2-Rt 14883-14395
The closest 1% resistor we can get which won't exceed our 1°C error
budget is 432k, but that'll still give us nearly the 40mV of
hysteresis we're looking for, so let's choose that value tentatively.
Now, let's say the temp starts falling from that point. Since it's
really 15° outside and we've fooled the comparator into thinking that
it's 16°, it's going to have to fall to 14° for the comparator to
think that it's 15° outside, but when it gets there the comparator's
output will go open-collector and the feedback resistor will now be
connected to +12V through the relay coil. If the coil looks like 240
ohms its resistance will be negligible compared to the feedback
resistor's 439kohm resistance, so since the thermistor's sensitivity
is -401 ohms/°C, (assuming it's linear for the sake of this
discusion...) its resistance will rise to 14482 ohms and the circuit
will now look like this:
12V 12V
| |
[100K] [439K]
| |
+-------+--->E2
[14482]
|
GND
100k in parallel reduces to a total resistance of
100000*439000
Rt = --------------- = 81447 ohms.
100000+439000
So, the circuit further reduces to
12V
|
[81447]
|
+---->E2
|
[14482]
|
GND
And the voltage into the comparator's + input, E2, will now be
12.0*14482
E2 = ------------- ~ 1.812V
81447+14482
Since the [15°C] reference voltage on the comparator's -input will be
sitting at 1.555V, that 1.812V represents a hysteresis of about 257mV,
which represents the introduction of about a 6.6°C error. If the
error spec is +/- 1°, that's very, very, bad.
Fortunately, since the reason for the error is the asymmetry of the
thermistor string, we can fix it by making the string symmetrical.
That is, by making the series resistor and the thermistor the same
value at the center of the thermistor's resistance range for the
temperature range it will be sensing.
For our thermistor, with an R of 14883 ohms at 15°C and an R of 6860
ohms at 35°C, that comes out to 10,872 ohms for the series resistor,
so with the nearest 1% resistor installed, our new circuit will look
like:
12V
|
[10700]
|
+---->E2
|
[Rth]
|
GND
Now E2 will be 6.98V at 15°C (Rth = 14883 ohms) and 4.688V at 35°C
(Rth = 6860 ohms), so the new voltage sensitivity will will be about
115mV/°C.
115mV is a lot, so if we limit our hysteresis to, say, 50mV that'll
cause less than a 0.5° error, but let's see how it works out.
Just like last time, if we want 50 mV of hysteresis we'll have to make
the parallel combination of the 10.7k resistor and and the feeback
resistor change the + input voltage to the comparator by the amount we
want, which will be 50mV in this case.
We really only have four cases to consider:
The hysteresis when the temp is rising and falling through 15°C, and
the hysteresis when the temp is rising and falling through 35°C.
Looking at falling through 15°C first, we'll have:
12V 12V
| |
[10.7K] [Rf]
| |
+-------+--->E2
|
[14883]
|
GND
Since the resistance of the thermistor is increasing as it gets
colder, the voltage at E2 will be increasing also. Without feedback
E2 would be 6.98V when the thermistor got to 15°C (14482 ohms), and
what we want to do with the feedback is to make it seem like it's a
little bit colder than it really is when E2 gets to 6.98V, so that
would mean making E2 jump a little more positive when the comparator
output goes open collector.
We can do that by paralleling the 10.7kohm resistor with a resistor of
a suitable value and, using the procedure outlined earlier, we find
that for a 50mV jump (from 6.98V to 7.03V) the parallel combination of
the 10.7kohm resistor and the feedback resistor (Rf) needs to be 10522
ohms, with Rf being equal to 632502 ohms. The closest 1% resistor is
634kohms, which will give us an E2 of 7.02V as the temp falls through
15°C, about 40mV of hysteresis over the non-feedback case.
With the temp rises through 15°C and the comparator's output
transistor turns on, our circuit becomes:
12V
|
[10.7K]
|
+-------+--->E2
| |
[14883] [634K]
| |
GND GND
and E2 will now become 6.91V, giving us 70mV of hysteresis.
When the temp falls through 35°C, the circuit will become:
12V 12V
| |
[10.7K] [634k]
| |
+-------+--->E2
|
[6808]
|
GND
Without feedback, E2 would be 4.666V, but with feedback it'll be
4.714V, giving us about 48mV of hysteresis.
Finally, When the temp rises through 35°C, the circuit will become:
12V
|
[10.7K]
|
+-------+--->E2
| |
[6808] [634K]
| |
GND GND
and E2 will go to 4.636V, giving us about 30mV of hysteresis.
So, here's the final schematic, and barring any fuzzy thinking, math
errors, trypos, etc., all that's left to do now is to recalculate the
padding resistors around the pot for the new voltage range and trim
things up if you want/need more or less hysteresis, and it should be
pretty much done.
+--- >= 240 ohms
+12>---+--------+--------+-----+-------+ /
| | | |K | / O--> |
[R1] [10.7K] | [1N4001] [COIL]- | - -|
| | | | | | O------>COM
| +-[634K]-------+-------+ |
| | | | +----------->NO
| | +------+ |
| +----|+ C|--+
| | |LM311 |
[1000]<-----|----|- E|--+
| | +------+ |
| | | |
[R2] [RT1] | |
| | | |
GND>---+--------+--------+-----+----->GND
Simple, huh?^)
PS...
I've got some schematics for heating-cooling thermostats using
LM393's, and if you'd like I can post them to
alt.binaries.schematics.electronic.
--
John Fields
For a good discussion of how thermistors work, refer to:
http://www.epcos.com/inf/50/db/ntc_02/00170027.pdf
For the purpose at hand, (determining how the change in resistance
affects the voltage into the comparator) refer to the "1006" column
in:
http://www.epcos.com/inf/50/db/ntc_02/01470178.pdf
and you'll notice that at 15°C the value of Rt/R25 for 15°C is 1.4883,
and at 35°C it's 0.686.
What that means is that if the thermistor has a resistance of 10000
ohms at 25°C, then at 15°C it'll have a resistance of 14,883 ohms, and
at 35°C it'll have a resistance of 6860 ohms.
2. THE VOLTAGE DIVIDER
Now, if we connect the thermistor in series with a resistor and apply
a fixed voltage across them, like this:
E1
|
[R1]
|
+---->E2
|
[RT1]
|
GND
Then when temperature increases and the resistance of the thermistor
(RT1) decreases, E2 will also decrease. Conversely, when the
temperature to which RT1 is exposed decreases, E2 will increase.
The exact relationship is:
E1 RT1
E2 = ------
R1+RT1
so, if we make E1 = 12V and R1 = 100kohms, then at 15°C,
12*14883
E2 = ------------- ~ 1.555V
100000+14883
and the power being dissipated in the thermistor will be:
E˛ 1.555˛
P = --- = ----- = 162ľW
R 10000
At 35°C, the potput voltage will be:
12*6860
E2 = ------------- ~ 0.7703V
100000+6860
and the power dissipated by the thermistor:
E˛ 0.7703˛
P = --- = ------- = 86ľW
R 6860
The power dissipated in the thermistor may be enough to cause a
self-heating error to occur, but you'd need to look at the data sheet
for the particular thermistor you're using to make sure.
In any case, if the self-heating error is negligible with respect to
the accuracy you're looking for, with 1.555V out at 15°C and 0.770V
out at 35°C, that's a spread of 780mV from one end of the temp range
to the other, which is pretty good.
3. THE REFERENCE DIVIDER.
If we now connect our thermistor circuitry to the + input of a voltage
comparator, like this,
+12V>---------+---------+----+
| | |
[100K] | [RL]
| | |
+--------|+\ |
| | >--+----->OUT
| |-/
| |
[RT1] |
| |
GND>----------+---------+---------->GND
and we arrange things so that the voltage on the - input is 0.770V,
then when the voltage on the + input rises to 0.770V or higher, the
comparator's output transistor will switch off and the voltage on OUT
will be pulled up to +V through RL.
We can do that by using another voltage divider, like this:
+V>---+-------+-----+----+
| | | |
E1--+ [100K] | [RL]
| | | |
[R1] +----|+\ |
| | | >--+----->OUT
E2--+-------|----|-/
| | |
[R2] [RT1] |
| | |
GND>--+-------+-----+---------->GND
and selecting R1 and R2 so that the voltage at their junction will be
0.770V. An easy way to do this is to look at the comparator data
sheet to find out what the required input current is and making the
resistances small enough to swamp out that current. For the LM311,
that comes out to about 350nA, so if we make the divider current 350ľA
the LM311's input currents will contribute about a 1% error to the
divider's output voltage. Better yet, let's make the divider current
about 1mA and use 1% resistors for the divider. That way, most of the
error will be in the resistors, where we can easily account for it.
Since we've got a 12V supply, and 10kohms is a standard 1% value, and
12V into 10k is about 1.2mA, let's make R1 = to 10k and figure out
what R2 needs to be to get us to 0.770V.
Since our new divider is the same as the old one, we can write:
E1 R2
E2 = ------
R1+R2
and rearrange to solve for R2:
E2 R1
R2 = -------
E1-E2
which gives us:
0.770*10000
R2 = ------------- = 685.66 ohms
12-0.770
681 ohms is a standard 1% value, so plugging that into
E1 R2
E2 = ------
R1+R2
to get the voltage into the comparator's - input gives us:
E1 R2 12*681
E2 = ------- = ----------- = 0.765V
R1+R2 10000+681
That's a voltage error of 5 parts out of 770, which is just a little
over 1/2 a percent, so since the resistor tolerance error will
dominate at this point we have a tentative solution, and our circuit
now looks like this:
+V>---+-------+-----+----+
| | | |
| [100.0K] | [RL]
| | | |
[10.0K] +----|+\ |
| | | >--+----->OUT
+-------|----|-/
| | |
[681] [RT1] |
| | |
GND>--+-------+-----+---------->GND
4. THE VARIABLE REFERENCE.
Now, we could use the same procedure to figure out a new R2 for a temp
of 15°C, and switch between the two, or figure out a whole bunch of
different R2's and switch them in and out for the different temps we
wanted to set to between 15 and 35°, but a much nicer way to do it
would be to use a pot.
In order to be able to do that, our circuit changes to:
+V>---+-------+-----+----+
| | | |
[R1] [100.0K] | [RL]
| | | |
| +----|+\ |
| | | >--+----->OUT
[R2]<-----|----|-/
| | |
[R3] [RT1] |
| | |
GND>--+-------+-----+---------->GND
Where R1 is a pot and R1 and R3 are 1% resistors used to set the ends
of the pot's resistive element to the voltages corresponding to 15°
and 35°C.
Just to get a feel for things, if we want the end of the pot connected
to R1 to be at the higher endpoint voltage (1.555V) and we keep R1 at
10k,then the series combination of R2 and R3 has to be:
E2 R1 1.555*10000
R2+R3 = ------- = ------------ ~ 1489 ohms
E1-E2 12-1.555
and if we want the lower end of the pot to be at 0.77V, then since
there's
E1 12
I = ----------- = ------------ = 1.04mA
R1+(R2+R3) 10000+1489
flowing in the circuit, and
E
R = ---
I
0.77V
then R3 = ------- = 740 ohms.
1.04mA
Since 750 ohms is a standard 1% value, that leaves
1489ohms - 750ohms = 739 ohms for the pot.
739 ohms is _not_ a standard end-to-end resistance for a pot, so we'll
have to do something to fix that. Since R1R2R3 is a voltage divider,
all we're really concerned with is the ratios of resistances, so let's
scale up the 739 ohms to 1000 ohms, which is a standard end-to-end
resistance for pots, and then scale up everything else and see what
happens.
1000/739 = 1.353, so R1 needs to go to 13530 ohms, R2 will go to 1000
ohms and R3 will need to go to 1000 ohms as well. So now, since the
closest we can get to 13530 ohms with 1% resistors is 13700 ohms, our
string now looks like this:
+12V
|
[13.7K]
|
|
[1000]<----Vout
|
|
[1000]
|
GND
With the wiper at the top of the pot, Vout will be:
12*2000
Vout = --------- = 1.528V
15700
and at the bottom of the pot it will be:
12*1000
Vout = --------- = 0.764V
15700
(1.555-1.528)*100
So, we'll have an error of ----------------- ~ -1.7%
1.555
(0.770-0.764)*100
on the high end, and ------------------- = + 0.78% on the high end.
0.764
Not too shabby, and now, after adding all the resistor values and
introducing the hysteresis resistor, our circuit looks like this:
+12>---+--------+-----+-------+
| | | |
[13.7K] [100.0K] | [RL]
| | | |
| +-------[Rh]--+
| | | |
| +----|+\ |
| | | >-----+----->OUT
[1000]<-----|----|-/
| | |
| | |
[1000] [RT1] |
| | |
GND>---+--------+-----+---------->GND
5. HYSTERESIS
Since a comparator has what amounts to essentially infinite gain, if
its input signals are allowed to move through the switching region
slowly, any noise present on the inputs during that time _will_ cause
the output to swing wildly between its limits. If slowly moving
signals _must_ be accommodated, the cure for the problem is to cause
the input(s) to quickly move out of the sensitive region when the
output changes state. This is done by connecting the output to the
non-inverting input so that when the non-inverting input goes more
positive than the inverting input, causing the output to go high, a
little of that high-going output signal is coupled back to the
non-inverting input, causing it to quickly go even higher, moving it
quickly out of the noisy region, thus preventing the "chatter" which
would otherwise surely occur. In this instance, that positive feedback
is called "hysteresis".
The amount of hysteresis intoduced into the circuit can be controlled
by selecting the resistance of the feedback resistor, which is part of
yet another voltage divider.
Looking at the output of the circuit above in a little more detail
shows us that the output stage is a transistor with an open collector
which pulls the putput down to ground when it is turned on and allows
the output to float when it's turned off, and what's important to
remember is that when the non-inverting (+) input is more positive
than the inverting (-) input the output will be turned off, allowing
current to flow from the supply and through RL into whatever is
connected to the comparator's output.
+12>---+--------+-------+-----+
| | | |
[13.7K] [100.0K] | [RL]
| | | |
| +--[Rh]-------+
| | | |
| | +------+ |
| +----|+ C|-+----->OUT
| | |LM311 |
[1000]<-----|----|- E|-+
| | +------+ |
| | | |
[1000] [RT1] | |
| | | |
GND>---+--------+-------+-----+----->GND
Since the LM311 can sink 50mA, there's no reason why it can't be used
to dirctly drive a 12V relay with a coil resistance of
12V
R = ----- = 240 ohms
50mA
or greater, so adding that circuitry yields:
+12>---+--------+-------+-----+-------+
| | | |K | O--> |
[13.7K] [100.0K] | [1N4001] [COIL]- | - -|
| | | | | | O------>COM
| +--[Rh]-------+-------+ |
| | | | +----------->NO
| | +------+ |
| +----|+ C|-+
| | |LM311 |
[1000]<-----|----|- E|-+
| | +------+ |
| | | |
[1000] [RT1] | |
| | | |
GND>---+--------+-------+-----+----->GND
Checking the sense of the output, we find that as the thermistor heats
up its resistance will decrease until it causes the comparator's +
input to go more negative than its - input, which will cause the
output transistor to turn on, energizing the relay, so this a cooling
thermostat. That is, if it gets hot enough to turn on the relay, the
relay will turn on the A/C, cooling the thermistor until the voltage
on the + input goes more positive than the voltage on the - input,
turning off the output transistor, turning off the relay, then
turning off the AC until it gets hot enough to turn it back on...
Now that we have that all figured out, if we simplify the circuit by
replacing the comparator's input with a resistor and its output with a
switch we'll have what amounts to:
+12>---+---------+
| |
[100.0K] [240]
| |
+--[Rh]---+-+-------->Eout
| |
| +-> |
Ein---+----+ |
| | O
[RT1] [Rin] |
| | |
GND>---+----+----------+---->GND
If 240 ohms (the relay coil resistance) << than Rh and Rin is >> RT1,
(which they will be) then the circuit further simplifies to:
+12>---+-------------+
| |
[100.0K] |
| |
+--[Rh]---O |
| | |
| O--> |<--O
Ein---+ |
| |
[RT1 |
| |
GND>---+----+
So that with the switch in the rightmost position we have:
+12>---+------+
| |
[100.0K] [Rh]
| |
+------+--->Ein
|
[RT1]
|
GND>---+
And with the switch in the leftmost position we have:
+12>---+
|
[100.0K]
|
+------+--->Ein
| |
[RT1] [Rh]
| |
GND>---+------+
Since, at 15°C, (without Rh in the circuit) we'll have an output
voltage of 1.55V from the thermistor and, at 35°C, an output voltage
of 0.77V, we'll have a 780mV change for a 20° change in temperature,
which is a sensitivity of 39mV/°C. That won't be quite true over
every increment of that range, since the thermistor is a non-linear
device but, for now, it's close enough.
Next, let's say that the accuracy spec's for the thermostat will
allow, after everything else has been accounted for, an extra degree C
to be used up to get the hysteresis we need. That means, since we've
got a sensitivity of 39mV/°C, that we've got 39mV to play around with
to get some hysteresis.
Now, below 15°C our thermistor will exhibit a resistance > 14883 ohms,
and if it warms up to 15°C, our circuit will look like this:
+12>---+
|
[100.0K]
|
+---->1.55V
|
[14883]
|
GND>---+
When this happens and the comparator's - input is set to 1.55V, the
output will go low and turn on the relay, and what we'd like to do is
to fool the thermostat into thinking that when that happens it's
actually 16° outside so that it'll move the input switching point a
little closer to ground to get away from the noise-susceptible input
transition region.
Since the thermistor resistance decreases when it gets hotter, what we
can do when the output goes low is to parallel the thermistor with
enough resistance to lower the 1.55 volts by one degree, to 1.51V
(rounding the 39mV/°C sensitivity to 40mV/°C).
Looking at the thermistor circuitry like this:
E1
|
[R1]
|
+---->E2
|
[R2]
|
GND
And setting E1 = 12V, E2 = 1.51V, and R1 = 100kohms,
we can solve for R2, the total resistance we need to get 1.51V out by
writing:
E2 R1 1.51*100000
R2 = ------- = ------------- ~ 14395 ohms
E1-E2 12.0-1.51
Since, at 15°, the thermistor will be at 14883 ohms, we'll need to
parallel it with a resistor to make the combination look like 14395
ohms, like this:
E1
|
[R1]
|
+-----+--->E2
| |
[R2] [R3]
| |
+-----+
|
GND
Knowing that the equation for the total resistance of two parallel
resistors is:
R2 R3
Rt = -------
R2+R3
and that R2 = 14883 ohms and Rt = 14395 ohms,
we can rewrite it to solve for R3 like this:
Rt R2 14395*14883
R3 = -------- = ------------- ~ 439kohms
R2-Rt 14883-14395
The closest 1% resistor we can get which won't exceed our 1°C error
budget is 432k, but that'll still give us nearly the 40mV of
hysteresis we're looking for, so let's choose that value tentatively.
Now, let's say the temp starts falling from that point. Since it's
really 15° outside and we've fooled the comparator into thinking that
it's 16°, it's going to have to fall to 14° for the comparator to
think that it's 15° outside, but when it gets there the comparator's
output will go open-collector and the feedback resistor will now be
connected to +12V through the relay coil. If the coil looks like 240
ohms its resistance will be negligible compared to the feedback
resistor's 439kohm resistance, so since the thermistor's sensitivity
is -401 ohms/°C, (assuming it's linear for the sake of this
discusion...) its resistance will rise to 14482 ohms and the circuit
will now look like this:
12V 12V
| |
[100K] [439K]
| |
+-------+--->E2
[14482]
|
GND
100k in parallel reduces to a total resistance of
100000*439000
Rt = --------------- = 81447 ohms.
100000+439000
So, the circuit further reduces to
12V
|
[81447]
|
+---->E2
|
[14482]
|
GND
And the voltage into the comparator's + input, E2, will now be
12.0*14482
E2 = ------------- ~ 1.812V
81447+14482
Since the [15°C] reference voltage on the comparator's -input will be
sitting at 1.555V, that 1.812V represents a hysteresis of about 257mV,
which represents the introduction of about a 6.6°C error. If the
error spec is +/- 1°, that's very, very, bad.
Fortunately, since the reason for the error is the asymmetry of the
thermistor string, we can fix it by making the string symmetrical.
That is, by making the series resistor and the thermistor the same
value at the center of the thermistor's resistance range for the
temperature range it will be sensing.
For our thermistor, with an R of 14883 ohms at 15°C and an R of 6860
ohms at 35°C, that comes out to 10,872 ohms for the series resistor,
so with the nearest 1% resistor installed, our new circuit will look
like:
12V
|
[10700]
|
+---->E2
|
[Rth]
|
GND
Now E2 will be 6.98V at 15°C (Rth = 14883 ohms) and 4.688V at 35°C
(Rth = 6860 ohms), so the new voltage sensitivity will will be about
115mV/°C.
115mV is a lot, so if we limit our hysteresis to, say, 50mV that'll
cause less than a 0.5° error, but let's see how it works out.
Just like last time, if we want 50 mV of hysteresis we'll have to make
the parallel combination of the 10.7k resistor and and the feeback
resistor change the + input voltage to the comparator by the amount we
want, which will be 50mV in this case.
We really only have four cases to consider:
The hysteresis when the temp is rising and falling through 15°C, and
the hysteresis when the temp is rising and falling through 35°C.
Looking at falling through 15°C first, we'll have:
12V 12V
| |
[10.7K] [Rf]
| |
+-------+--->E2
|
[14883]
|
GND
Since the resistance of the thermistor is increasing as it gets
colder, the voltage at E2 will be increasing also. Without feedback
E2 would be 6.98V when the thermistor got to 15°C (14482 ohms), and
what we want to do with the feedback is to make it seem like it's a
little bit colder than it really is when E2 gets to 6.98V, so that
would mean making E2 jump a little more positive when the comparator
output goes open collector.
We can do that by paralleling the 10.7kohm resistor with a resistor of
a suitable value and, using the procedure outlined earlier, we find
that for a 50mV jump (from 6.98V to 7.03V) the parallel combination of
the 10.7kohm resistor and the feedback resistor (Rf) needs to be 10522
ohms, with Rf being equal to 632502 ohms. The closest 1% resistor is
634kohms, which will give us an E2 of 7.02V as the temp falls through
15°C, about 40mV of hysteresis over the non-feedback case.
With the temp rises through 15°C and the comparator's output
transistor turns on, our circuit becomes:
12V
|
[10.7K]
|
+-------+--->E2
| |
[14883] [634K]
| |
GND GND
and E2 will now become 6.91V, giving us 70mV of hysteresis.
When the temp falls through 35°C, the circuit will become:
12V 12V
| |
[10.7K] [634k]
| |
+-------+--->E2
|
[6808]
|
GND
Without feedback, E2 would be 4.666V, but with feedback it'll be
4.714V, giving us about 48mV of hysteresis.
Finally, When the temp rises through 35°C, the circuit will become:
12V
|
[10.7K]
|
+-------+--->E2
| |
[6808] [634K]
| |
GND GND
and E2 will go to 4.636V, giving us about 30mV of hysteresis.
So, here's the final schematic, and barring any fuzzy thinking, math
errors, trypos, etc., all that's left to do now is to recalculate the
padding resistors around the pot for the new voltage range and trim
things up if you want/need more or less hysteresis, and it should be
pretty much done.
+--- >= 240 ohms
+12>---+--------+--------+-----+-------+ /
| | | |K | / O--> |
[R1] [10.7K] | [1N4001] [COIL]- | - -|
| | | | | | O------>COM
| +-[634K]-------+-------+ |
| | | | +----------->NO
| | +------+ |
| +----|+ C|--+
| | |LM311 |
[1000]<-----|----|- E|--+
| | +------+ |
| | | |
[R2] [RT1] | |
| | | |
GND>---+--------+--------+-----+----->GND
Simple, huh?^)
PS...
I've got some schematics for heating-cooling thermostats using
LM393's, and if you'd like I can post them to
alt.binaries.schematics.electronic.
--
John Fields