Código
Sensor de Temperatura
Sensor de Temperatura
// Declaramos las constantes necesarias para la ecuación de Steinhart-Hart
const int Rc = 10000; // Valor de la resistencia de calibración en ohms
const int Vcc = 5; // Voltaje de alimentación en voltios
const int SensorPIN = A0; // Pin analógico donde está conectado el sensor
float A = 1.106836861e-3; // Coeficiente A de Steinhart-Hart
float B = 2.384641754e-4; // Coeficiente B de Steinhart-Hart
float C = 0.6507394466e-7; // Coeficiente C de Steinhart-Hart
float K = 2.5; // Factor de disipación en milivatios por grado Celsius
// Variables para almacenar las lecturas y cálculos intermedios
int raw; // Valor crudo leído del ADC
float V; // Voltaje calculado
float R; // Resistencia calculada del termistor
// Variables para el proceso de conversión de temperatura
float Tsh; // Temperatura calculada por Steinhart-Hart en Kelvin
float Temp; // Temperatura corregida por auto-calentamiento
float celsius; // Temperatura final en grados Celsius
void setup() {
Serial.begin(9600); // Iniciamos la comunicación serial a 9600 baudios
}
void loop() {
// Proceso de lectura y cálculo de temperatura
raw = analogRead(SensorPIN); // Leemos el valor analógico del sensor
V = raw / 1024.00 * (float)Vcc; // Convertimos la lectura a voltaje
R = (Rc * V ) / (Vcc - V); // Calculamos la resistencia del termistor
// Aplicamos la ecuación de Steinhart-Hart para obtener la temperatura
float Tsh = 1.0 / (A + B * log(R) + C * pow(log(R), 3 ));
// Corregimos el efecto de auto-calentamiento
float Temp = Tsh - V*V/(K * R)*1000;
// Convertimos de Kelvin a Celsius
float celsius = Temp - 273.15;
// Mostramos el resultado por el puerto serial
Serial.print("T = ");
Serial.print(celsius);
Serial.print("C\n");
// Esperamos 2.5 segundos antes de la siguiente lectura
delay(2500);
}