I am trying to figure out what is causing the 2C inaccuracy in my thermistor calibrations, my goal is to get my accuracy down to > .1C. I am using the KS103J2 10K NTC thermistor. To calibrate my thermistor I am using a vernier temperature sensor both the surface probe and stainless steel probe. I calibrate by putting the probe as well as my own NTC thermistor inside a beaker with water, let the probe and thermistor equilibrate with the water. I input the vernier probe's temperature, which is displayed by Logger Pro, into the Arduino Uno serial. The code then takes 10 resistance readings from the NTC thermistor, averages them and then uses that as a point (temperate from vernier probe, resistance from NTC thermistor) as a point of calibration for the Steinhart-hart equation. The code calculates the A, B, C coefficients. I then test the calibration by inputting the resistance into the Steinhart-hart equation which returns the temperature based on the value. I find the difference between the outputted temperature from the Steinhart-hart equation with the vernier probe's temperature to find the "error - 2C.

Setup and General Information:

  • 10K NTC thermistor (waterproofed with liquid electrical tape) with resistance range 35000 - 1,200 Ω
  • Arduino Uno (10-bit ADC) and breadboard
  • Temperature range: 0C to 75C
  • Using water to sample temperature

What I have tried to fix my error:

  • Switching to a different NTC thermistor for calibration

    Result: No difference in accuracy (stayed around 2C)

  • Checking the precision of my voltage divider

    Result: Very stable, I tested this by replacing the NTC thermistor with 3
    different stable thermistor (1K, 10K, 100K).

  • Switched to from 5v to 3.3v with Aref

    Result: The error remained the same.

  • Calculating maximum ideal error with 10-bit ADC

    Result: at the ideal maximum, the error should be .25C at 75. The rest of the range should be >.2C.

  • Checking the accuracy of the Steinhart-hart model with an NTC thermistor resistance table

    Results: the model predicted the temperate very accuracy.

    NTC Table:
    20.80C    11,868.8 ohms
    20.85C    11,844.3 ohms
    20.90C    11,819.9 ohms
    My NTC thermistor values with Steinhart:
    20.82C    11858.97 ohms

What I think the problem might be:

  • Imprecision in the vernier probes (I tested with 2 different types of probes and the error still continued, they are rated for accuracy of +/- 0.2 C, but their precision is unknown).


  • I cannot use external ADC's
  • I cannot use thermistors with waterproof housings



  • \$\begingroup\$ Comments are not for extended discussion; this conversation has been moved to chat. Any conclusions reached should be edited back into the question and/or any answer(s). \$\endgroup\$
    – Dave Tweed
    Commented Nov 15, 2019 at 6:15
  • \$\begingroup\$ @RussellMcMahon, this does not happen all the time but most of the time: i.ibb.co/p0RkpFQ/Screen-Shot-2019-11-11-at-11-08-05-PM.png \$\endgroup\$ Commented Nov 15, 2019 at 13:04
  • \$\begingroup\$ @AdityaKendre Useful, BUT, You can do better than that (hopefully). Read what I said about voltage measurements. Do it. Report. As long as you insist on treating your system as an end to end black box instead of doing some more basic measurements and comparisons you have minimal chances of making progress. Not zero - but low enough that instead simply following the simple steps in my simple suggestion that will confirm or deny that your actual measurement system is working as it should is a much better choice. || Did you understand my self-heating section? \$\endgroup\$
    – Russell McMahon
    Commented Nov 16, 2019 at 7:31

1 Answer 1


Where is the "problem"?:

A problem is that you appear not to know (as there is not enough information provided) whether the error is from ADC on in or what the ADC 'sees'.

Your problem may be in

  • The thermistor accuracy (whether due to resistive heating or other causes) or

  • In the conversion of thermistor resistance to indicated temperature or in

  • The measurement of the voltages involved.

Determining which one (or more) of these are problematic is an essential first step. Trying to fix errors in one area by 'playing' with another will never fix your problems.



A way of determining if the ADC reports the input that it should to within the accuracy expectable is better done by NOT invoking the Steinhart-Hart equation at all initially and working instead directly with voltage measured.

  • Measure and report temperature of fluid before, during and after tests.

  • Measure voltage at sensor with a suitable accuracy and quality DMM

  • Measure sensor voltage with ADC.

  • Repeat with resistors

  • Compare and report.

This allows you to know (and report) whether the actual ADC measurement is working correctly.


You report 11.858 KOhms at 20.82C.
Call that 12k for now.
Dissipation in the NTC = I^2 x R
I = 5V/(10k + 12k)
R = 12K
I^2 x R = (25/484.E6 x 12k ) 25/484/1000000 = 0.62 mW.

Your thermistors datasheet specifies a dissipation constant of 1 mW/degree_C nominal.
So a 0.62 mW dissipation may be expected to give you about 0.62 C heating and a consequent shift in the apparent temperature.

That's "nominal" with unstated assumptions by the manufacturer. For example, varying fluid flow rate around the NTC will alter self heating effects. Encapsulating it will (probably) increase tem.

Adding "liquid electrical tape" insulation (while an understandable thing to do to achieve waterproofness" will probably have an unknown effect on the dissipation constant.

In which direction does the error lie. The results given are ambiguous.
I'd EXPECT self heating to cause the NTC to report a HIGHER temperature than an accurate sensor does - is that what you appear to see?

I could plug that potential error back into the equations, but it's something you need to look at and comment on.


Your Arduino ADC has 10 bit resolution and maybe 10 bit accuracy.
With a 5V reference each bit has a resolution of 5v/(2^10) = 4.88 mV.

At ~~21C / 12K the thermistor voltage will be
V = Vref x Rt/(10k+Rt)
= 5 x 12k/22k = 2727 mV.
A single ADC step as a %age of the reading is 4.88 mV/2727 = 0.18% -> Say 0.2%.

This is potentially far lower than the self heating effects.

A problem is that you appear not to know (as there is not enough information provided) whether the error is from ADC on in or what the ADC sees.

A way of seeing if the ADC sees what it should to within the accuracy expectable is better done by NOT invoking the Steinhart-Hart equation at all initially and working with voltage measured.

  • Measure voltage at sensor with suitable quality DMM
    Measure and report temperature of fluid before and after tests.

  • Measure sensor voltage with ADC.

  • Repeat with resistors

  • Compare and report.

This allows you to know (and report) whether the actual ADC measurement is working correctly.


Thermistor Dissipation Constant.

From here:

"The thermal dissipation constant δ indicates the amount of power required for a thermistor to heat itself up by 1℃ when it is energized in still air (mW/℃). When a power W is applied to the thermistor at an ambient temperature Ta and the temperature of the thermistor finally reaches a temperature T, the following equation is established.

enter image description here

Applying a power equivalent to the thermal dissipation constant makes a thermistor heat itself up by 1℃. This causes an error between the measured and the actual ambient temperatures.
Therefore, it is necessary to design circuitry to minimize the power to be applied so that measurement errors caused by thermistor’s self-heating are eliminated. The thermal dissipation constant δ is determined by a balance between “self-heating” and “heat dissipation.” As a result, it varies substantially depending on the thermistor’s surroundings.
Placing materials that have a high thermal conductivity around the thermistor promotes heat release and increases the constant δ.
On the contrary, the construction allowing heat to accumulate decreases it.
Therefore, it is essential to select appropriate materials in assembling your thermistor.
It is also important, after assembling your thermistor, to measure the constant δ in its operation environment (air, water, oil, hot plate etc.) to see that the constant meets your requirement.

  • \$\begingroup\$ I previously did something similar to the voltage check, although without a very accuate DMM. The results showed the ADC's voltage measurements were accurate to a degree of 100 mV, but the ADC was precious though all the tests. Hence it should not make a huge difference. Self-heating: I understand that increasing the mass will increase the specific heat capacity, but I think the magnitude of the effect is very small around .01C, I this in a paper. \$\endgroup\$ Commented Nov 17, 2019 at 22:01
  • \$\begingroup\$ I think I also found my major source of error but have not had a chance to "full proof" the test. Since the specific heat is different for each probe, and I do not have a constant bath. The decreasing temperate of the water source will be cooling (assume 75C). The probe the least thermal mass will be the most accurate (assuming both are accurate) to the realtime temperate as it...well has a lower thermal mass. Since my calibration probe is a long stainless steel probe, its thermal mass is higher and thus takes longer to come into equilibrium. \$\endgroup\$ Commented Nov 17, 2019 at 22:08
  • \$\begingroup\$ Essentially, my NTC thermistor's temp is changing faster than my calibration probe's. I am currently trying to resolve this problem. After altering my setup, I got a max error of 0.6C. \$\endgroup\$ Commented Nov 17, 2019 at 22:08

Your Answer

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

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