ARDUINO: MEDIR TEMPERATURA CON LM35



¿Qué es un módulo LM35?

Es un sensor digital que está calibrado directamente en grados Celsius, a diferencia de otros dispositivos electrónicos como los termistores en donde la temperatura se determina por la variación de su resistencia eléctrica, el dispositivo LM35 proporciona una salida de voltaje proporcional a la temperatura.

Cuenta con una precisión garantizada de 0.5°C a 25°C, su rango de medición abarca desde -55°C hasta 150°C.  El dispositivo LM35 tiene un comportamiento lineal con la temperatura y su razón de incremento es de 10mV por cada grado centígrado.

La baja impedancia de salida que presenta, así como su salida lineal y su precisa calibración hacen posible que este circuito integrado sea fácil de utilizar en nuestro circuito de control. Una ventaja que debemos considerar es que el consumo de corriente es muy bajo (aproximadamente 60uA) y por ende produce un efecto de calentamiento muy reducido.

Materiales:

  • 1x Arduino
  • 1x Resistor 220
  • 1x Protoboard
  • 1x LM35
  • 1x LED
  • Jumpers

Conexiones del LM35

Los pines que se encuentran en los extremos del dispositivo son para alimentación, mientras que el pin central proporciona la medición de referencia, a razón de 10mV/°C. 

NOTA: Verificar en la hoja de datos el componente electrónico utilizado con su versión ya que las conexiones pueden variar. Por ejemplo: LM35 y el LM35DT 

Esquema de montaje

El montaje del circuito con nuestra tarjeta Arduino es el siguiente:

Código

Primero definimos los pines que usaremos y las variables para almacenar los valores, esto ya se ha hecho muchas veces anteriormente, se definen dos variables, una donde almacenaremos los valores del ADC y otra para almacenar la temperatura.

Como bien se mencionó, se recomienda leer la hoja de datos del sensor, ya que aquí viene una información muy importante la cual nos dice que nos dará 10mV por cada grado centígrado, esto es fundamental para el funcionamiento, veamos un ejemplo:

Pensemos que tenemos la temperatura de 20.5 grados centígrados, entonces esto nos dice que hay 205mV como resultado de 10mV * 20.5 = 205mV , que corresponde a 0.205Vy ahora aplicaremos nuestras fórmulas anteriormente vistas:

Vrbits =
0.205 * (1024 - 1) / 5.0
= 41.943

Así obtenemos el valor analógico que es la conversión de 10 bits equivalente as 41.943, ahora aplicando la siguiente fórmula pero multiplicando por 100 para convertir el resultado a grados, entonces nos queda:

T =
41.943 * 5.0 * 100 / (1024 - 1)
= 20.5°

Recordemos que 5.0 es el valor del voltaje de referencia o sea 5 voltios, 41.943 el valor analógico que entregará el ADC y bueno lo demás ya se ha explicado con anterioridad.

Así es como obtenemos la temperatura usando el sensor LM35, solo aplicamos estos cálculos en la programación, usamos analogRead para leer el valor que envía el sensor al Arduino y lo almacenamos en la variable ValSen, después aplicando la fórmula anterior obtendremos la temperatura y esta la almacenamos en la variable Temperatura, una vez hecho eso creamos una condicional que si la temperatura llega a ser más de 35 grados se prenderá el led o lo que ustedes quieran accionar, en caso contrario el led permanece apagado, después imprimimos la temperatura por medio del Serial y la visualizamos en nuestro monitor serial.

#define LM35 A0
#define LED 2
float Temperatura;
float ValSen;

void setup() {

  Serial.begin(9600);
  pinMode(LM35,INPUT);
  pinMode(LED,OUTPUT);

}

void loop() {

  ValSen = analogRead(LM35);
  Temperatura = (ValSen * 5.0 * 100.0) / 1023.0;

  if(Temperatura > 35){
    digitalWrite(LED,HIGH);
  }else{
    digitalWrite(LED,LOW);
  }

  Serial.println(Temperatura);
  delay(50); 

}