PortDock

NTC thermistor temperature — B value, Steinhart–Hart, divider and ADC

Turn NTC thermistor resistance into temperature (B equation, Steinhart–Hart), B25/50 vs B25/100, the divider resistor, ADC counts and self-heating.

Tools for this guidePlot Windows program · freeSerial Windows program · freeNTC Thermistor Calculator web · no installPt100 & Thermocouple Converter web · no install

An NTC thermistor's resistance falls as temperature rises. Cheap and sensitive, it is common on MCU boards, power supplies and appliances. Datasheets usually give two numbers such as «10 kΩ at 25 °C, B25/85 = 3950 K» plus an R/T table. Here is how to turn them into temperature and what to watch in the circuit.

The B equation

R(T) = R25 × exp(B × (1/T − 1/T25))
T = 1 ÷ (1/T25 + ln(R/R25) ÷ B)        ← T in kelvin (°C + 273.15), T25 = 298.15 K
TemperatureResistance (10 kΩ, B 3950 K)Divider (3.3 V, 10 kΩ on top)12-bit ADC
−20 °C105.4 kΩ3.014 V3741
0 °C33.62 kΩ2.543 V3156
25 °C10.00 kΩ1.650 V2048
50 °C3.588 kΩ0.871 V1081
80 °C1.270 kΩ0.372 V461
100 °C698 Ω0.215 V267

TDK's NTC technical information says this exponential law is accurate enough «only for a restricted range around the rated temperature». A real thermistor's B drifts with temperature, so datasheets state which two temperatures define it: B25/50, B25/85, B25/100.

Why B25/85 and B25/100 differ

B is defined from the resistance at two temperatures: B = ln(R1/R2) ÷ (1/T1 − 1/T2). The same part gives a different value for 25/85 °C than for 25/100 °C. The difference looks small but shows at the ends — the 100 °C resistance from B 3950, solved with B 3980, reads 99.3 °C. Use the B closest to your range, or Steinhart–Hart for wide ranges.

Steinhart–Hart: three points for a wide range

1/T = A + B·ln R + C·(ln R)³

Steinhart and Hart published this equation in 1968. Pick three points from the datasheet R/T table — low, middle and high in your range — and solve for A, B and C. It then matches the table exactly at those points and follows it more closely than the B equation in between. Solving is a small linear system, so a calculator helps. The manufacturer's R/T table is still the most accurate; when precision matters, store the table and interpolate.

Divider and fixed resistor

ADC count → temperature

The ATmega328P datasheet gives the 10-bit result as ADC = V_IN × 1024 ÷ V_REF; for n bits use 2^n. Backwards: V = ADC ÷ 2^n × V_REF, NTC (bottom) resistance = R_fixed × V ÷ (supply − V), then the B equation or Steinhart–Hart. With the table's setup (3.3 V, 10 kΩ, 12 bits) the signal near 25 °C is about 37 mV per °C, so one LSB (0.81 mV) is about 0.02 °C — it grows towards the ends of the range.

Self-heating

Measuring current warms the NTC so it reads high. The datasheet's dissipation factor δth (mW/K) is the power that raises the thermistor by 1 K, so self-heating ΔT = P ÷ δth. In a 3.3 V, 10 kΩ divider at 25 °C the NTC dissipates about 0.27 mW; with δth = 1.5 mW/K that is about 0.18 K. For precision, lower the divider supply or power it only while measuring. δth depends on the surroundings (still air, liquid…), so check the datasheet conditions.

How it differs from Pt100

In PortDock

Published 2026-10-23