What's new

Full changelogEngine 1.26.4

NTC Thermistor to ADC

Analog & Interfacing

How finely and how accurately does this NTC divider read temperature?

Inputs

From the datasheet.
Ω
10 kΩ
From the datasheet, in K (type the number only).
K
The pair the datasheet gives.
Ω
10 kΩ
bits
°C
°C
°C/LSB
°C
Tolerances and noise
From the datasheet.
The datasheet's tolerance on its B value. In Steinhart–Hart mode it is applied the same way: zero at 25 °C, growing away from it.
± codes, from the ADC datasheet or a measurement.
LSB
Supply and self-heating
Ratiometric: the code does not depend on it. It sets the self-heating.
V
From the datasheet, still air unless your board says otherwise.
mW/°C

Results

Worst resolution ΔTLSB

at 100 °C

0.121°C/LSB
Pass

Checked: worst ΔTLSB ≤ your 0.5 °C/LSB, failing past 1.2 × (design margin): 0.242 × here, at 100 °C

Show working
  1. NTC resistanceR(100 °C) = 10 kΩ × exp(3435 × (1/373.15 − 1/298.15)) = 987 Ω
  2. Divider slope|dV/dT| = V_ref × R_s × α × R / (R_s + R)² = 3.3 × 10 kΩ × (3435/373.15²) × 987 Ω / (10 kΩ + 987 Ω)² = 6.657 mV/°C
  3. Worst resolutionΔT_LSB = (V_ref / 2^N) / |dV/dT| = (3.3 / 4096) / 6.657 mV/°C = 0.121 °C/LSB
  4. Worst errorΔT = (t_R25 + t_Rs) × T²/β + t_B × |1/T − 1/T_25| × T² + n × ΔT_LSB = (0.01 + 0.01) × 373.15²/3435 + 0.01 × |1/373.15 − 1/298.15| × 373.15² + 1 × 0.121 = 0.8107 + 0.9387 + 0.121 = 1.87 °C
Worst error, tolerance + noise ΔT

at 100 °C: R25 0.405 (1 %), Rs 0.405 (1 %), B 0.939 (1 %), noise 0.121 °C (1 LSB)

1.87°C
Worst self-heating ΔTSH

at 25 °C, Vref 3.3 V

0.1815°C
Codes at Tmin / Tmid / Tmax 

at 0, 50 and 100 °C, rounded down

3037 / 1191 / 367
All results (5)
Error after a one-point calibration at 25 °C ΔTcal
Best resolution ΔTLSB

at 16 °C

0.02454°C/LSB
R at Tmin R(Tmin)
28.7kΩ
R at Tmax R(Tmax)
987Ω
Peak self-heating power P

at 25 °C

272.3µW
Six points across the range
TemperatureRVCodeResolution
0 °C28.7 kΩ2.447 V30370.0277 °C/LSB
20 °C12.17 kΩ1.812 V22480.0247 °C/LSB
40 °C5.759 kΩ1.206 V14960.0301 °C/LSB
60 °C2.981 kΩ757.8 mV9400.0446 °C/LSB
80 °C1.662 kΩ470.4 mV5830.0725 °C/LSB
100 °C987 Ω296.5 mV3670.121 °C/LSB
Code

Accuracy

Source
  • Steinhart and Hart

Steinhart and Hart, Calibration curves for thermistors the equation

Precision
First-order error terms on the curve you enter, added linearly, so the error is a worst case for those tolerances.

The β curve is a two-point fit, so it drifts from the part's real curve away from its pair. Far from 25 °C the B-value tolerance is often the largest single term, and of the tolerances here it is the only one a calibration at 25 °C leaves.

Verified against

2 independent cases. See the working.

This is a design aid. The engineer remains responsible for the design and for checking the standard itself.

Parameter sweep

Vary one input over a range and see the answer and verdict at each step, as a table and a curve.Pro

Worst-case corners

Put a tolerance on each input and get the worst-case band around the answer.Pro

Parts that track move together.Inputs in the same group move together, like the parts of a matched network. Leave independent parts ungrouped: that is the safe choice.

Circuit

The principle

An NTC thermistor's resistance falls steeply as it warms. In a divider with a series resistor Rs, read by an ADC whose reference is the divider's own supply, each temperature gives a code that does not depend on that supply. This page finds, at every degree of your range, how many degrees one code step is worth, how far the part tolerances and the ADC noise can move the reading, and how much the sensor heats itself.

β model
R(T)=R25 eβ(1T−1T25)R(T) = R_{25}\, e^{\beta\left(\frac{1}{T} - \frac{1}{T_{25}}\right)}
Datasheets define B between 25 °C and a second temperature T2 as ln(R25/RT2)/(1/T25 − 1/T2), so the curve passes through both points and is a fit between them.
Steinhart–Hart
1T=A+Bln⁡R+C (ln⁡R)3\frac{1}{T} = A + B \ln R + C\, (\ln R)^{3}
Steinhart and Hart. R(T) is the root of the cubic in ln R, solved in closed form; C = 0 is solved as linear. Coefficients that make B + 3C(ln R)² ≤ 0 in the range are refused, because R would not fall with T. The coefficients hold only over the range they were fitted to, which this page cannot check.
Divider and code
x=RRs+Rcode=⌊x 2N⌋x = \frac{R}{R_s + R} \qquad \t{code} = \left\lfloor x\, 2^{N} \right\rfloor
With the NTC at the top, x = Rs/(Rs + R). The divider is ratiometric: V = x·Vref. The code rounds down and stops at 2N − 1; an ADC whose first step is at ½ LSB rounds instead.
Resolution
ΔTLSB=(Rs+R)22NRs α Rα=∣dln⁡RdT∣\Delta T_{LSB} = \frac{(R_s + R)^{2}}{2^{N} R_s\, \alpha\, R} \qquad \alpha = \left|\frac{d \ln R}{dT}\right|
One code step, (Vref/2N)/|dV/dT|. For the β model α = β/T²; for Steinhart–Hart α = 1/(T²(B + 3C(ln R)²)). The same at either NTC position.
Best series resistor at mid-range
Rs=R(Tmid)R_s = R(T_{mid})
Rs·R/(Rs + R)² is largest at Rs = R, so this Rs gives the steepest divider at Tmid = (Tmin + Tmax)/2. The page picks the nearest E96 value.
Self-heating
ΔTSH=Vref2 R(Rs+R)2 δ\Delta T_{SH} = \frac{V_{ref}^{2}\, R}{(R_s + R)^{2}\, \delta}
The power is largest where R = Rs. This assumes the divider is powered all the time.
Error budget
ΔT=tR25+tRsα+tB∣ln⁡(R/R25)∣α+n ΔTLSB\Delta T = \frac{t_{R25} + t_{Rs}}{\alpha} + \frac{t_B \left|\ln(R/R_{25})\right|}{\alpha} + n\, \Delta T_{LSB}
First order, added linearly: a worst case. For the β model the B term is tB·|1/T − 1/T25|·T². After a one-point calibration at 25 °C only the B and noise terms remain.
  • R, RTR,\,R_TNTC resistance at temperature T
  • R25R_{25}resistance at 25 °C
  • β\betaB value, between 25 °C and T2
  • T, T25T,\,T_{25}temperature in K, and 298.15 K
  • A, B, CA,\,B,\,CSteinhart–Hart coefficients
  • RsR_sseries resistor
  • xxdivider ratio: the share of Vref at the ADC
  • NNADC resolution, bits
  • VrefV_{ref}divider supply and ADC reference
  • α\alphathe NTC's fractional slope, |d ln R/dT|
  • ΔTLSB\Delta T_{LSB}temperature step of one code
  • Tmin, Tmax, TmidT_{min},\,T_{max},\,T_{mid}ends and middle of the range
  • δ\deltadissipation constant
  • tR25, tRs, tBt_{R25},\,t_{Rs},\,t_Btolerances of R25, Rs and the B value, as fractions
  • nnADC noise, in LSB
More detail

Choosing Rs

The divider is steepest where Rs equals the NTC's resistance, so Rs = R(Tmid) gives the finest steps in the middle of the range, and the ends are coarser. Moving Rs toward one end improves the resolution there and costs some at the other.

Ratiometric reading

With the divider fed from the ADC's own reference, the code depends only on R/Rs, so the reference's tolerance and drift drop out. Vref still sets the self-heating.

Where the error comes from

The R25 and Rs tolerances each shift ln(R/Rs) by a fixed amount, so a one-point calibration at 25 °C removes them. The B-value tolerance grows with distance from 25 °C and stays. The page adds the terms linearly, a worst case.

β is a two-point fit. When your range reaches further outside the pair than the pair is wide, in 1/T, the page marks the answer Unverified. Use the datasheet's R–T table there, or Steinhart–Hart coefficients fitted to it.

Not modelled: the ADC's own gain and offset errors, its input leakage and sampling charge, lead resistance, and the series resistor's drift with temperature, which a calibration at 25 °C does not remove. The dissipation constant on a datasheet is usually for still air.

References: J. S. Steinhart and S. R. Hart, Calibration curves for thermistors. The B value as defined in thermistor datasheets. Consult the part's own R–T table for anything that matters. Related: ADC Resolution & Noise Budget, Op-Amp Noise & DC Error, Current-Sense Resistor & Amplifier.

Engine version ⁨1.26.4⁩