Electronic – arduino – Thermistor Calibration

arduinocalibrationthermistor

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.

Best Answer

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