Thermistor

From Fixme.ch
Revision as of 20:33, 31 August 2011 by Corecode (Talk | contribs)

Jump to: navigation, search

Objective

How to read a NTC thermistor via ADC to get the current temperature.

Problem

[2,3].

  • When trying to read with the ADC on an AVR, you somehow need to fit

the voltage into AVcc, for example using the internal reference at 2.56V.

Solution

[2] suggests combining a resistor with the NTC in parallel to create an approximate linear response for a given temperature range.

I decided to do the math first, and it turns out a voltage divider works like a charm. Set the ADC reference voltage to 2.56V. Then wire the divider up this way:

5V ----------+
             |
        NTC 10k@25C
             |
             +----------o ADC
             |
            3.6k
             |
           __|__
            ___
             -

The 3.6k value can be calculated from [2] and a bit of experimentation.

When you read the ADC (say, 8bit ADC), you'll have to post-process the reading. BUT! It is already linear. That means we can easily compute T (in degC):

T = (ADC - 40) >> 2;

Of course, you can decide not to shift and instead have .25 degC resolution.

The resulting temperature reading can be seen in [4] (analysis).

[2] https://www.avx.com/docs/Catalogs/ntc-general.pdf [3] 6efmA.png [4] YlRCY.png