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: