Thermistor has "103" written on it, that means its suppose to be 10kΩ at 25°C.

That is all I know. I don't know the B-constant. I don't know the manufacturer to find the datasheet.

I connected my multimeter probes directly to the leads of thermistor. Resistance varies between 11.8 kΩ to 12 kΩ at 26-27°C. Is my thermistor faulty?

My required temperature range is 10°C-35°C.

Also, I found different equations on this site, which one should I be using?

  1. B-formula

  2. This one?

  • 2
    \$\begingroup\$ Thanks to Anders Celsius and Carl Von Linné you have two easy sources of reasonably accurate temperatures at home: ice water and boiling water. Maybe that makes your measurements easier? Do you have a multimeter with a temperature probe? \$\endgroup\$
    – pipe
    Aug 9, 2017 at 5:58
  • \$\begingroup\$ Don't forget about the pressure, that's probably 25°C... at 1 bar. Are you sure that the pressure is 1 bar? Also, the thermistor's come with errors, they are usually within a 5% margin. Maybe 20% if you bought it from china. But it looks like a simple calibration problem. Get a regular thermometer (analog or digital), put it in the fridge together with the NTC until you get the temperatures you want and then measure the resistance at those times. \$\endgroup\$ Aug 9, 2017 at 6:23
  • \$\begingroup\$ @HarrySvensson Pressure is of little importance here. Component tolerance on the other hand is. \$\endgroup\$
    – winny
    Aug 18, 2017 at 5:46
  • \$\begingroup\$ I know, old question. Probably Harry Svensson was commenting that the boiling temperature of water depends on atmospheric pressure. For those far above sea level, this correction is worth doing, if calibrating a thermometer using boiling water. \$\endgroup\$
    – mkeith
    Jul 22 at 22:32

4 Answers 4


I've often used a stirred ice bath as an approximate and cheap way to set up something very near \$0\:^\circ\textrm{C}\$. It's quite good and doesn't depend much on ambient air pressure. Boiling water is not so good a reference, as altitude (actually something called 'density altitude' or 'pressure') matters. So you will need to measure the air pressure, as well, to create a boiling point for calibration (and use water that meets the Vienna standard.)

A problem using just two points is about what is happening in between them with your sensor. (Not to mention if your sensor can tolerate them.) You'll also experience time drift and probably a lot of other kinds of drift, as well. It's hard to know what you have in between your calibration points.

A platinum RTD is a fairly standard reference that might be used without regular calibration. (If cared for.) One nice thing about it is that you can get lots of measurement points as the bath cools down, with some reasonable accuracy expectations.

You could also consider using gases at a very low pressure, as they begin to behave ideally, then, and you can use pressure times volume as the variable that relates directly to temperature. (I've not done this, but I've heard of it being used.)

A NIST calibrated sensor might be another good approach. I have several I use here. One of them is calibrated over a range from about \$-200\:^\circ\textrm{C}\$ to \$450\:^\circ\textrm{C}\$ (where the probe tip dies), once a year. Accuracy is \$\pm50\:\textrm{mK}\$ over the range, with precision about a tenth of that, at a rate of 10 measurements per second.

Your equations are all the same thing. You really need to work on your algebraic skills.

$$\begin{align*} R &= R_0\:e^{B \left(\frac{1}{T}-\frac{1}{T_0}\right)}\\\\ \frac{R}{R_0}&=e^{B \left(\frac{1}{T}-\frac{1}{T_0}\right)}\\\\ \operatorname{ln}\frac{R}{R_0}&=\frac{B}{T}-\frac{B}{T_0}\\\\ \operatorname{ln}\frac{R}{R_0}+\frac{B}{T_0}&=\frac{B}{T}\\\\ T&=\frac{B}{\operatorname{ln}\frac{R}{R_0}+\frac{B}{T_0}}\\\\ T&=\frac{T_0\:B}{T_0\:\operatorname{ln}\frac{R}{R_0}+B},\textrm{ or} & T&=\frac{B}{\operatorname{ln}\frac{R}{R_0}+\operatorname{ln} e^\frac{B}{T_0}}\\\\ &\textrm{ } & T&=\frac{B}{\operatorname{ln}\left(\frac{R}{R_0}\:e^\frac{B}{T_0}\right)}\\\\ &\textrm{ } & T&=\frac{B}{\operatorname{ln}\left(\frac{R}{R_0\:e^\frac{-B}{T_0}}\right)} \end{align*}$$

Use whatever.


Here's what worked for me:

After experimenting with different B values, I found 3900 gave me the right temperature. I used a mercury thermometer for reference. There are still fluctuations in the reading, but not too much.

My circuit

Used voltage divider formula to find thermistor resistance (Rt), since my micro-controller can read voltage (vo) out of the voltage divider circuit.


These are the readings. vo is the voltage divider output. Rt is calculated using voltage divider formula and Temp is calculated from the formulas in my original post. See the difference in the first 5 readings? That's the fluctuation I was talking about. Or is it because of pressure?

The next five readings are near a heat source, similar readings were on the thermometer.

Thanks guys.


You can use lookuptable such the ones used in marlin

with 4.7k and 10k thermistor:

const short temptable_4[][2] PROGMEM = {
  { OV(   1), 430 },
  { OV(  54), 137 },
  { OV( 107), 107 },
  { OV( 160),  91 },
  { OV( 213),  80 },
  { OV( 266),  71 },
  { OV( 319),  64 },
  { OV( 372),  57 },
  { OV( 425),  51 },
  { OV( 478),  46 },
  { OV( 531),  41 },
  { OV( 584),  35 },
  { OV( 637),  30 },
  { OV( 690),  25 },
  { OV( 743),  20 },
  { OV( 796),  14 },
  { OV( 849),   7 },
  { OV( 902),   0 },
  { OV( 955), -11 },
  { OV(1008), -35 }



When converting ADC output to voltage you need to assume an ADC reference, e.g. 5V. That is not entirely accurate. If you supply the NTC circuit from the same supply as the ADC reference, you end up with ratiometric output. Avoid some conversions and calculation by calculating directly R/R0 from the ADC reading.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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