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));
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).
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.... :)