Thermistor Reading Incorrectly

Forgive me if I am completely wrong here or doing something wrong, I am very new to electronics in general.

I have a thermistor with 2 47ohm resistors taking the place of the 10k one (didn't have a 10k one).

Using the code posted below, the serial output just reads -60ish, which is obviously not the temperature of my room in Celsius.

What am I doing wrong here?

#include <math.h>         //loads the more advanced math functions
 
void setup() {            //This function gets called when the Arduino starts
  Serial.begin(9600);   //This code sets up the Serial port at 115200 baud rate
}
 
double Thermister(int RawADC) {  //Function to perform the fancy math of the Steinhart-Hart equation
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15;              // Convert Kelvin to Celsius
 return Temp;
}
 
void loop() {             //This function loops while the arduino is powered
  int val;                //Create an integer variable
  double temp;            //Variable to hold a temperature value
  val=analogRead(0);      //Read the analog port 0 and store the value in val
  temp=Thermister(val);   //Runs the fancy math on the raw analog value
  Serial.println(temp);   //Print the value to the serial port
  delay(1000);            //Wait one second before we do it again
}

It won't work with 2x47 Ohm resistors replacing 10K (10,000) Ohms.

You could try to adjust the formula to the real value of the resistor (its the 10000).

 Temp = log(((10240000/RawADC) - 10000));

jremington:
It won't work with 2x47 Ohm resistors replacing 10K (10,000) Ohms.

jremington was right, I was using the wrong ones.

I am now using a 9k1 resistor, which is the closest thing I have, and seems to be giving better results (still not perfect though).

KyleBriggs:
jremington was right, I was using the wrong ones.

I am now using a 9k1 resistor, which is the closest thing I have, and seems to be giving better results (still not perfect though).

Read reply #2 and you can make it perfect again.

I have a thermistor with 2 47ohm resistors taking the place of the 10k one (didn't have a 10k one).

Your code is written for a voltage divider of 10K along with the 10K thermistor. When I run you code on my setup it gives the correct temperature.

Temp = log(((10240000/RawADC) - 10000));

This can be written in a way which shows the resistance of the voltage divider.

Temp = log((10000*(1024/RawADC) - 1));

If you have change the 97 ohms to 9k ohms, use

Temp = log((9000*(1024/RawADC) - 1));

Hi,
Have you got a potentiometer of about 5K or 1K?
Place it in series with the 9k1 and adjust it to give 10K, it will do until you get 10k.

Tom.... :slight_smile: