Experimenting with a thermistor using PIC16F1937
Recently i won a bid for a batch of 10K thermistors. The only thing that i knew when i got them in my hand, was that those things are 10K thermistors. As far as i know, the 10K nominal resistance is at room temperature (25�C). But i had to find out if these are PTC or NTC, and also i had to draw their resistance to temperature characteristic line, otherwise they would be useless to me. So i ran some experiments with them…
A thermistor is actually a part that changes its resistance with the temperature change. There are namely 2 types of thermistors, the NTC and the PTC. The ‘T’ and ‘C’ stands for “Temperature” and “Coefficient”. The “P” stands for “Positive” and “N” for “Negative”. So, a NTC will decrease its resistance while the temperature rises, and a PTC will do the opposite.
Also, there are linear and non-linear thermistors. The old thermistors were uusually non-linear. This means that the resistance does not change linear to the temperature. That was a headache for taking measurements and the labs developed very linear sensors that are widely used nowadays. Every sensor should have a temperature to resistance characteristic diagram. But what i got was only a batch of sensors and nothing more.
What i had to find out was the type of the thermistors (PTC or NTC), and the resistance to temperature change characteristic.
For this, i will use a PIC microcontroller. I chose the 16F1937 because… i had it already mounted on a breadboard. Actually, any other PIC with analog to digital conversion capability would do just fine. Then i connected a DS1621 temperature sensor. These sensors have an outstanding measuring accuracy.
Then i used a 10K resistor to create a voltage divider with the thermistor. According to the standard specifications of thermistors, when it is in room temperature (25�C) it should have its nominal resistance, which in my case it is 10K. So, the output of the voltage divider should be 2.5 Volts. The PIC will measure this analog value. It then will get a binary 8-bit number from 0 to 255, representing this voltage.
The idea is to get as much measurements as possible for different temperatures. The more the measurements, the higher the accuracy. But this is not all. To have an overall image of the characteristic of the thermistor, i need to have a wide range of temperatures. The wider the temperature range, the better the accuracy of the characteristic. This is not easy though. I had to find a way to measure from very low temperatures (as low as 0�C) to high temperatures up to 50 �C. I do not really have device to do this, so i had to find different ways.
First of all the external ambient temperature. Today we had temperatures from 17.5�C up to about 22�C. This is a nice way to start. Then i used a thermal gun to increase gradually the temperature up to 50�C. My thermal gun has an electronic adjustment. I hang it over the circuit at about half a meter away and let it run with different setting every time. With this way, i had a batch of nice stable measurement up to 50�C.
The hardest part was the lower temperatures. the only thing available in my house that could work was the refrigerator. And this is exactly what i did. I put the circuit in the refrigerator while in operation. Every one hour i opened the door and quickly note the readings on the display. Then i slightly changed the setting of the refrigerator and repeated this process. It did work!
For more detail: Experimenting with a thermistor using PIC16F1937
Current Project / Post can also be found using:
- lm35 pic16f84
- temperature sensor using pic microcontroller and thermistor
- thermistor PIC16F877 schematic