2
\$\begingroup\$

I'm currently undertaking a project that uses a thermistor and a voltage divider circuit to calculate the temperature. I'm reading the voltage into my Arduino Uno. I've set up a room temperature test and my circuit gives credible results against a reference thermometer and I'm satisfied with its performance in that range. However, once I place my thermistor probe into a water basin that is kept at a constant temperature by using a hot plate, my thermistor gives a reading that is 3-6 degrees more than my reference thermometer. Does any one have any ideas why there is such a degradation in performance and how can I rectify this?

Quick Schematic

    +Vref---[Thermistor]---+--[1.8K]---GND
                           |
                       ADC @ thermPin

I'm using a lookup table which contains expected values through my required range of temperature.

Any help is appreciated. Thanks.

\$\endgroup\$
5
  • 1
    \$\begingroup\$ Thermistors vary from sample to sample; they aren't meant for highly accurate temperature measurements. If you want that, then use a thermocouple. Otherwise, why not make a new lookup table based on your reference thermometer? Oh, and remember to have your water bath continuously stirred. \$\endgroup\$ Apr 10, 2016 at 21:50
  • 1
    \$\begingroup\$ Welcome to EE.SE. For anyone to answer this we're going to need (1) the part number of the thermistor, (2) the test temperature, (3) the ADC input voltage measurement at a couple of points, (4) the actual temperature at those points, (5) the lookup table and (6) links to any parts used. As Oleksandr R. says, they're not very accurate to start with. The Pt100 or Pt1000 sensor may be more suitable for your project. \$\endgroup\$
    – Transistor
    Apr 10, 2016 at 21:53
  • 1
    \$\begingroup\$ Another easy check: just use your multimeter to measure the resistance of your sensor at each of the temperature points. See if it matches what you expected. \$\endgroup\$
    – Transistor
    Apr 10, 2016 at 21:54
  • 1
    \$\begingroup\$ What is the tolerance on your 1.8 k, and what is the tolerance of your Vref? And what is your voltage resolution on the ADC, and what voltage scaling are you expecting at the temperature you're working at? \$\endgroup\$ Apr 10, 2016 at 22:12
  • 1
    \$\begingroup\$ Are you sure that the water's conductivity isn't affecting the readings ? \$\endgroup\$
    – jp314
    Apr 10, 2016 at 23:54

1 Answer 1

3
\$\begingroup\$

Thermistors are nonlinear. You need a look-up table to account for the non-linearity. Followed by linear interpolation should the measured resistance fall between look-up table entries. This web page does a good job covering these steps: http://stratifylabs.co/embedded%20design%20tips/2013/10/03/Tips-ADC-Thermistor-Circuit-and-Lookup-Table/

You should also be aware of noise in your ADC and design. And how this effects accuracy. If your application allows for slow responses to change, consider using exponential smoothing: https://upload.wikimedia.org/math/9/a/5/9a58d827c2993f70671c017fe64c3edd.png

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.