I am trying to monitor temperature with a D1 mini and a NTC, which is working, but the Temperature is calculated wrong. On the Serial Monitor I get Temperatures of around -300°C.
When printing the resistance I get values of around 10kOhm at 25ºC not 10Ohm as expected from the specs. (Zero Power Resistance at 25ºC (Ohm) = 10) But using 10kOhm instead of 10Ohm in the Steinhart-Hart equation doesnt fix the problem...
Can anyone tell me what I am doing wrong?
The Thermistor is connected like this to my D1 Mini ESP8266:
3.3V
|
\
/ TCC103
\ (Thermistor)
|
|------ A0 (Analog Input)
|
\
/ R1 (10kΩ Resistor)
\
|
|
GND
Specifications:
Part No = TTC-103
Zero Power Resistance at 25ºC (Ohm) = 10
B-Value R25/R50 (K) = 4050
Max. Permissible Current at 25ºC (mA) = 20
Thermal Dissipation Constant (mW/mW/ºC) = 8
Thermal Time Constant (Sec.) = 21
Operating Temperature (ºC) = -30~+125
Here is my code:
#include <Arduino.h>
// thermistor values
const int thermistorPin = A0;
const float seriesResistor = 10000;
void setup() {
// Initialize Serial communication
Serial.begin(9600);
}
float readTemperature() {
int rawADC = analogRead(thermistorPin);
// Convert ADC reading to resistance
float resistance = seriesResistor / ((1023.0 / rawADC) - 1.0);
// Calculate the temperature using the Steinhart-Hart equation
float steinhart;
steinhart = log(resistance / 10); // 10 Ohm resistance at 25ºC
steinhart /= 4050; // B-value (beta) = 4050
// Calculate the temperature in Kelvin
float kelvin = 1.0 / steinhart;
// Invert the temperature in Celsius
float temperature = 1 - (kelvin - 273.15);
return temperature;
}
void loop() {
float temperature = readTemperature();
// Log the temperature to the Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(500); // Delay before checking temperature again
}
I added this line before calculating the temperature in kelvin:
steinhart += 1.0 / (25 + 273.15); //25°C
I changed the temperature calculation to
float temperature = kelvin - 273.15;
I also switched the place of the resistor and thermistor, so the thermistor is connected to GND and the resistor to 3V3
I also had to change the resistance at 25°C from 10Ohm to 10kOhm.
Here you can see the full answere