I have the following datasheet for a thermisistor: http://make-documents.s3.amazonaws.com/UGulDNLaIajWgPom.pdf

I am trying to use the formula (found here http:// iwantmyreal.name/blog/2012/09/23/measuring-the-temperature-with-an-arduino-and-a-thermistor/): $$1/T=1/T_0+1/B*ln(R/R_0)$$ I am not sure I'm using the correct values, my understanding is that the values provided in the datasheet are as follow: $$R_0=20,000 ohm,$$ $$T_0=25 C,$$ $$Beta=4300$$ Can anyone confirm that this is correct?

I'm trying to get a temperature reading out of that sensor using an Arduino UNO microcontroller using the following found at http://playground.arduino.cc//ComponentLib/Thermistor2 at the bottom where it says example #2 using numbers instead of episco k164 definition .... (substituting with the above values)

The results are ~41.96 degrees F, and the room is between 75-80 degrees F so that means the temperatures readings are way off, I don't understand why unless I got the wrong values from the datasheet. Also I have two of these sensors and both give about the same value.

Code currently using:

// Code obtained from http://playground.arduino.cc//ComponentLib/Thermistor2
#include <math.h>
// enumarating 3 major temperature scales
enum {
T_KELVIN=0,
T_CELSIUS,
T_FAHRENHEIT
};

// manufacturer data for episco k164 10k thermistor
// simply delete this if you don't need it
// or use this idea to define your own thermistors
#define EPISCO_K164_10k 4300.0f,298.15f,10000.0f  // B,T0,R0

// Temperature function outputs float , the actual
// temperature
// Temperature function inputs
// 2.OuputUnit - output in celsius, kelvin or fahrenheit
// 3.Thermistor B parameter - found in datasheet
// 4.Manufacturer T0 parameter - found in datasheet (kelvin)
// 5. Manufacturer R0 parameter - found in datasheet (ohms)
// 6. Your balance resistor resistance in ohms

float Temperature(int AnalogInputNumber,int OutputUnit,float B,float T0,float R0,float     R_Balance)
{
float R,T;

T=1.0f/(1.0f/T0+(1.0f/B)*log(R/R0));

switch(OutputUnit) {
case T_CELSIUS :
T-=273.15f;
break;
case T_FAHRENHEIT :
T=9.0f*(T-273.15f)/5.0f+32.0f;
break;
default:
break;
};

return T;
}

void setup() {
Serial.begin(9600);
}

void loop() {

Serial.println("*************************");
Serial.println("10k Balance");
Serial.println(Temperature(0,T_FAHRENHEIT,4300.0f,298.15f,20000.0f,9770.0f));
//Serial.println(Temperature(1,T_FAHRENHEIT,4300.0f,298.15f,20000.0f,9770.0f));
Serial.println("*************************");

delay(500);
}

• Do you have a schematic/code? What value resistor are you using for the balance resistor? Aug 28 '13 at 4:58
• Sure. If you look at "Thermistor Test Schematic" Under playground.arduino.cc//ComponentLib/Thermistor2 that's pretty much it, except I'm using a 9.77 Kohm resistor (I measured it with a Voltmeter). Or +5V --> thermistor <-- Node 1 --> 9.77kohm --> ground. Then I have a connection from Node 1 to port A0 of the arduino uno microcontroller. I hope it makes sense, let me know if it doesn't.
– joze
Aug 28 '13 at 5:34
• That's a start, thanks (it's usually a good idea to include the schematic and any code for your setup, so everyone knows exactly what you are doing) What is the exact code you are using? Aug 28 '13 at 6:14
• Thanks for the tip, will do for next time. The code is the following:
– joze
Aug 28 '13 at 6:24
• See above in the original question for my exact code, site won't let me edit my last comment.
– joze
Aug 28 '13 at 6:31