TestBench.tools
GitHub

Your NTC's B value is exact at two temperatures and nowhere else

B25/85 is a line drawn through two points on a curve. Measured against a published R/T table, a Beta-only conversion reads 3 °C high at −40 °C and 2.8 °C high at 150 °C — and exactly right at 25 and 85.

·Source: Vishay BCcomponents NTCLE100E3 datasheet, document 29049, revision 07-May-2025

Almost every NTC conversion in the field is the Beta equation, because it needs one constant off the datasheet and fits in four lines of C. It is also exact at exactly two temperatures, and those two are printed in the constant's own name.

B25/85 means “the B that makes the equation pass through the resistance at 25 °C and the resistance at 85 °C”. Between and beyond those points, the equation is a straight line in 1/T against ln R and the thermistor is not.

How far off, exactly

Vishay's NTCLE100E3103 — the common 10 kΩ, B25/85 = 3977 K part — publishes a resistance table every 5 °C from −40 to 150. Feeding each published resistance into the Beta equation and asking what temperature it thinks that is:

ActualDatasheet RBeta readsError
−40 °C332 094 Ω−37.01 °C+2.99
−20 °C96 358 Ω−18.29 °C+1.71
0 °C32 554 Ω0.76 °C+0.76
25 °C10 000 Ω25.00 °C0.00
50 °C3 605 Ω49.69 °C−0.31
85 °C1 070 Ω85.01 °C+0.01
100 °C677.3 Ω100.39 °C+0.39
125 °C338.7 Ω126.40 °C+1.40
150 °C182.6 Ω152.84 °C+2.84

The zeros at 25 and 85 are not luck and not a good fit. They are the definition of B25/85. Everywhere else the error grows in both directions, and it dips slightly negative in between — the straight line cuts the corner.

Three degrees is not a rounding difference. On a battery pack cut-off, a fridge controller or a compensation network, it is the difference between working and being quietly out of specification at the edges of the range.

Which B did the datasheet even give you

The other half of the problem is that B is not one number. The same part, fitted between different temperature pairs from its own table:

B−40/25 = 3746.1 K
B25/50 = 3932.0 K
B25/85 = 3977.5 K
B25/100 = 3993.6 K
B25/125 = 4018.5 K

That is a 7 % spread on one thermistor. A datasheet that says “B = 3977” without the subscript is telling you a third of what you need, and code that stores B as a bare constant has thrown away the rest. If you took B from one document and the R/T pairs from another, they may not describe the same fit at all.

What to do instead

If you need one number and 0.5 °C is fine: keep Beta, but choose the pair that brackets the range you actually operate in. A part running 0–60 °C should use a B fitted near that span, not B25/125 because that is what was on the front page. The error is near zero at the two anchors, so put the anchors where accuracy matters.

If you need better than that: use Steinhart-Hart. It has three constants instead of one and follows the curve rather than chording it. Fitted to the same table at −40, 25 and 125 °C, it reproduces all 39 published rows with a worst error of 0.11 °C and an RMS of 0.038 °C, against Beta's worst of 2.99 °C over the same rows — from the same datasheet, with no extra measurement.

Datasheets rarely print A, B and C, which is why people fall back on Beta. They do print the R/T table, and three points from it are enough to solve for the three constants exactly. That is a 3×3 linear system in ln R, not a curve fit — there is nothing to converge and nothing to tune.

Where you put the three points matters

Steinhart-Hart is exact at the three temperatures you anchor it to, in the same way Beta is exact at two. Anchoring the same table at 20, 25 and 30 °C instead of −40, 25 and 125 reproduces those three points to under a millidegree and is four times worse everywhere else — worst 0.44 °C, RMS 0.14 °C.

So spread the anchors across the range you care about. Three points clustered in the middle buy you precision where you already had it.

The general shape of this

A sensor constant that carries temperatures in its name is telling you where it is true. B25/85 says so out loud; people read it as a part number. The same applies to any two-point characterisation — a slope and offset from a two-point calibration is exact at the two points and drifts between them by however much the sensor curves.

It is not that Beta is wrong. It is that Beta is a chord, the datasheet tells you which chord, and nobody reads the subscript.