Go Down

Topic: How to calibrate a thermistor? (Read 8305 times) previous topic - next topic


All - this is a problem that has been bugging me, and I have been trying to figure out how I could go about doing it semi-accurately, without needing to constantly monitor things...

How do you calibrate a thermistor of unknown value, spec, or manufacturer?

I have a few thermistors (plus I have seen others for sale, without any specs, at various surplus dealers) that I don't know anything about that I would like to calibrate. I first thought that I could simply take one, put it in boiling water, note its voltage reading, then let the water come to room temp, note the reading again (for the temp), then freeze it, and note it one more time; the problem is that (from what I have seen as specs for thermistors) the output is probably not linear, but rather some kind of curve (logarithmic or something; definitely non-linear).

So - without having a means to carefully change the temperature of a water bath and read the temperature, automatically (sure, I could do this manually, but I don't much like watching water boil - or freeze), while noting readings...

How would you do it? The "manual" method is the only method I could think of (or, possibly using a known calibrated thermistor as a base measurement, and noting from that) - is there another possible method?
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.


Jan 27, 2010, 07:20 am Last Edit: Jan 27, 2010, 07:20 am by digimike Reason: 1
How accurate are you trying to get?

A big part of this is knowing the limits of the sensor. In any case the sensor should have a product code of some sort on it. You can google this to find the data sheet and see what the limits are. Then you can adjust your code accordingly.

If you haven't already then check out this beginner's guide. Project 13 covers Serial Temperature Sensors. It will show you how to go about writing the code to get the proper readings.


Same cr0sh, BTW...

I don't think there is a product code on any of these (unless they microprint them); the thermistors I have are maybe 1-2mm in diameter.

I don't need super accuracy, and if I could get enough data points (ie, this voltage reading equals this degrees celcius), the curve could then be interpolated. The only problem I have is how to do this in an automated fashion using stuff one can find "at home" (or at least buy for a reasonable amount).

If I had unlimited funds (or if I didn't have a mortgage), I could simply get one of those computer controlled lab water-bath things, where you can set the temperature on a PC, then ramp it up, degree by degree, and take a reading with the thermistor, going from freezing to boiling, and corellate the readings with the temperatures (heck, they probably make instruments that does this for thermistor manufacturers!).

Sure, I could sit there and take the readings and write them down, but do you know how long it takes for water to go from being frozen to boiling? Many hours, and I can't do that for each thermistor (and this assumes the thermistors only measure from approx 0-100 degrees celcius; I have no idea how I would measure anything lower, at least going higher could be done in the oven).

Maybe my question and needs are impossible to do at home; if that is the case, so be it. It isn't as if thermistors with specs are expensive to source, I just have a few "unknown" ones that I would like to put to real-world use if I could...



Why not use 2 thermistors.  One would be of known type and characteristics.  The other would be the thermistor under test.  You could have a couple of baths set up in styrofoam cups.  Put each pair of thermistors in the cup, let them stabilize and then take measurements.  I'd think that after 3 or 4 different temperature readings, you should have a reasonable idea of what the curve should look like.  The wider the gap from least to greatest, the better, of course.  Mainly, I'm thinking that you could compare the unknown thermistor to different thermistor charts to determine which one you have.  I know this isn't the automated test you would like to have, but at least you would have something to run with.

If you were to plot several thermistor curves in a spreadsheet and then plot the points you measure from your unknown thermistor, you could do a visual curve fit and a little SWAG to determine the thermistor.


In the project if you look at the code the range of the thermistor is correlated with the range of values that the arduino is able to read from the analog pin. So an equitation is used to match the arduino range of 0 to 930 with the sensors range of 0 to 100 degrees.  

Code: [Select]
temperature = ((100*1.1*aRead)/1024)*10;

This calculation multiplies the value from the digital pin
by 1.1 (our reference voltage) and again by 100. What
this does is stretch out or values from 0 to 930 to be a
value between 0 and 1023 (100*1.1*aRead). This
value is then divided by 1024 to give is a maximum
value of 100, which in turn is multiplied by 10 to add
an extra digit to the end, enabling the modulo function
to work.
Let[ch700]s look at

Now if you have a different way of coding it then great. Cause you need some way for it to translate the information coming into the arduino into a temp. So comparing one temp sensor to another to calibrate will only work if that knows sensor is also connected to the arduino so you can compare the 2 readings and adjust the equitation accordingly.

I guess you could assume the range is between 0 and 100 and the reference voltage is 1.1. Then try a comparison but it will be difficult to calibrate off that.

Go Up