Medir la temperatura con el sensor LM35 y Arduino

Veremos cómo medir la temperatura con el sensor analógico LM35 y mostrar el valor de la temperatura en el monitor serial de Arduino o en un display de 4 dígitos y 7 segmentos.

Medir la temperatura con el sensor LM35 y Arduino
Medir la temperatura con el sensor LM35 y Arduino

El LM35 es uno de los sensores de temperatura más populares, puede medir temperaturas desde los -55 hasta los 150 ºC. El ajuste de salida de voltaje del LM35 es proporcional al de su entrada, por cada grado que aumenta o disminuye, varía 10 mV por grado centrígrado.

Dependiendo del tipo de encapsulado, puede oscilar su escala de temperaturas:

  • LM35 / A: -55 ºC a 150 ºC
  • LM35C / A: -40 ºC a 11 ºC
  • LM35D: 0 a 100 ºC
Sensor de temperatura analógico LM35.
Sensor de temperatura analógico LM35.

El LM35 consta de 3 patillas: VCC o pin para su alimentación, con un rango de 4 a 30V; en el centro encontramos la patilla de salida, y la tercera, es la de tierra.

Leer la temperatura de un LM35 es muy sencillo, teniendo en cuenta que su salida de tensión tendrá un valor de 10mV por grado centrígrado, es decir que si el sensor estuviese a la temperatura de un grado, el sensor daría una salida de 10 mV. Por ejemplo:

  • A una temperatura de 24 ºC la lectura sería de 240 mV (0.240 V)
  • A una temperatura de 16.4 ºC la lectura sería de 164 mV (0.164 V)

Indice:

¿Cómo calcular la temperatura a partir de la tensión del sensor LM35?

El sensor conectado a la placa Arduino se alimenta con 5V y la patilla de salida, se conecta a la entrada analógica A0, de esta forma con la función analogRead(A0) podemos leer el valor que guardaremos en una variable llamada sensor que puede tener un valor entre 0 y 1023, que equivale a una tensión entre 0 y 5V.

Cálculo de la temperatura a partir del sensor LM35

La fórmula para poder convertir la salida analógica del sensor LM35 a un valor digital sería:

Temperatura = ((sensor x 5000)/1023) / 10

Medir la temperatura con el sensor LM35 y mostrar el resultado por el monitor serial.

Material necesario:

  • Placa Arduino o similar.
  • Sensor de temperatura LM35.
  • Cables.
  • Protoboard

Esquema:

Esquema para el sensor de temperatura analógico LM35 con la placa Arduino

La patilla izquierda (VCC) del LM35 la conectamos a 5V de la placa, la patilla derecha a GND y el pin del medio a la entrada analógica A0 de Arduino.

Código:

int sensor;  // Para guardar el valor de A0
float temperatura;

void setup(){
  Serial.begin(9600);
}

void loop(){
  sensor = analogRead(A0);
  temperatura = ((sensor * 5000.0) / 1023) / 10;
  Serial.print(temperatura, 1); // Con un solo decimal
  Serial.println(" C");
  delay(1000);
}

Si subimos el programa y comprobamos los resultados por el monitor serial:

Resultados de la medición de la temperatura por el monitor serial

Como se puede observar hay una variación de los valores debido a que trabajamos con tensiones muy bajas, la presición no es muy exacta, pero sí podemos mostrar la media de varias lecturas, obteniendo de esta manera una variación menor.

Medir la temperatura y hallar la media.

Trabajaremos con el mismo esquema anterior. La idea es hacer 5 lecturas de la temperatura y mostrar en el monitor serial la media.

Código:

int sensor;
float temperatura;
float suma;

void setup(){
  Serial.begin(9600);
}

void loop(){
  suma = 0;
  for (int i=0; i<5; i++){
    sensor = analogRead(A0);
    temperatura = ((sensor * 5000.0) / 1023) / 10;
    suma = temperatura + suma;
    delay(500);
  }
  Serial.print(suma/5.0, 1);
  Serial.println(" C");
}

En el código se añade una nueva variable suma para guardar la suma de las cinco medidas con las que calcular la media.

En la función loop(), tenemos un bucle for para realizar 5 lecturas de la temperatura en intervalos de medio segundo. Calculamos la media e imprimimos el resultado en el monitor serial.

Medir la temperatura y mostrar el resultado por un display de 4 dígitos.

Resulta bastante mas cómodo ver la temperatura reflejada en un display que en el monitor serial. Para conocer el funcionamiento de un display de 4 dígitos recomendamos ver antes el artículo «Funcionamiento del display de 4 dígitos y 7 segmentos con Arduino«.

Material necesario:

  • Placa Arduino o compatible.
  • Sensor de temperatura LM35.
  • Display 4 dígitos (hemos utilizado el 3461AS).
  • 4 resistencias.
  • Cables.

Esquema:

Esquema de montaje del sensor LM35, el display de 4 dígitos y la placa Arduino
Esquema de montaje del sensor LM35, el display de 4 dígitos y la placa Arduino.

Código:

Lo primero es incluir la librería SevSeg.h para la utilización del display de 4 dígitos, lo hacemos desde el menú principal del IDE: Programa / incluir librería / Administrar Biblioteca. Podéis verlo en la siguiente imagen:

Incluir librería SevSeg, para controlar el display de 4 digitos.
#include "SevSeg.h"
SevSeg sevseg;
int sensor;
float temperatura;
unsigned long start;

void setup(){
  Serial.begin(9600);
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
  if (millis() - start > 1000){
    sensor = analogRead(A0);
    temperatura = ((sensor * 5000.0) / 1023) / 10;
    Serial.print(temperatura, 1);  // un solo decimal
    Serial.println(" C");
    sevseg.setNumber(temperatura,1);  
    start = millis();
  }
  sevseg.refreshDisplay();
}

Medir la temperatura y mostrar la media en un display de 4 dígitos.

Utilizaremos el mismo esquema que en el apartado anterior.

Código:

#include "SevSeg.h"
SevSeg sevseg;
int sensor;
float temperatura;
unsigned long start;
float suma;
float resultado;

void setup(){
  Serial.begin(9600);
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
  if (millis() - start > 1000){
    suma = 0;
    for (int i=0; i<10; i++){
      sensor = analogRead(A0);
      temperatura = ((sensor * 5000.0) / 1023) / 10;
      suma = temperatura + suma;
    }
    resultado = suma/10.0;    
    Serial.print(resultado, 1);
    Serial.println(" C");
    sevseg.setNumber(resultado,1);    
    start = millis();
  }
  sevseg.refreshDisplay();
}

2 comentarios en «Medir la temperatura con el sensor LM35 y Arduino»

  1. hola tengo un problema al compilar el sketch me dice SevSeg.h: No such file or directory , como lo puedo solucionar

    • Hola, te falta incluir la biblioteca SevSeg. La puedes incluir desde el menú «Programa /incluir librería/ Administrar bibliotecas». Escribes SevSeg, escoge la última versión y presiona sobre instalar.

Deja un comentario

Tu dirección de correo electrónico no será publicada.


*