Sensor de temperatura LM35

Sensor de temperatura LM35

El sensor de temperatura LM35 no es un módulo ni un shield, sino que es un componente que deberemos integrar a nuestros Arduino(s) manualmente. Es muy simple de integrar y de usar, pero aun así les dejo algunas instrucciones para que no tengan que buscar demasiado en Internet.

El sensor de temperatura LM35

El sensor es fabricado por Texas Instruments y viene en varios formatos y el que les presento es en formato TO-92 que es el mismo que usan muchos transistores. Posee 3 patas de las cuales 2 son para masa (GND) y positivo (+5V), y la tercera es la salida que leeremos mediante alguna de las entradas analógicas de nuestro Arduino.

sensor de temperatura LM35

El sensor de temperatura LM35 nos entregará un voltaje en su pata central equivalente a 10mV (milivoltios) por cada grado centígrado de temperatura sensada. Los puertos analógicos del Arduino operan usualmente en un rango de 0v-5v con una resolución de 1/1023, es decir que cada unidad medida equivale a 4,89mV que en nuestro caso es aprox. 1/2 grado centígrado, y esa será la resolución de nuestro sensor cuando lo conectemos de la manera sencilla. Al final de la página les dejaré una manera de ampliar la precision del sensor.

Características básicas del sensor de temperatura LM35D:

  • Rango de trabajo de 0°C a 100°C (hay versiones que operan en el rango -55C a 150C)
  • Voltaje: 4v a 30v
  • Corriente: 60µA

Les dejo un link al datasheet del sensor: Datasheet

Elementos necesarios y conexión del sensor de temperatura lm35

  • Breadboard o protoboard
  • LM35
  • 3 cables de conexion macho-macho
  • Arduino UNO o MEGA
  • Cable USB

Primero ponemos el sensor en el breadboard. Con el sensor visto como en la imagen de arriba, conectaremos la pata izquierda a cualquier pin 5v del Arduino, la derecha a cualquier pata GND, y la central a A0 (A cero), que es una entraga analógica. Ya todo conectado, podemos conectar el Arduino a la PC para programarlo.

Sketch (Programa)

// Pin al que conectamos nuestro sensor de temperatura LM35
#define LM35_PIN A0

void setup() {
  Serial.begin(9600);
  Serial.println("LM35 test...");
}

void loop() {
  float tempC;
  int reading;
 
  // Leemos el voltaje en el sensor
  reading = analogRead(LM35_PIN);

  // Calculamos la temperatura en base al voltaje 
  tempC = reading * 0.48876;

  // Mostramos la temperatura en el Monitor serial
  Serial.println(String("Temperatura: ") + tempC + "C");

  // Repetimos cada 1 segundo
  delay(1000);
}

Avanzado: ampliando la sensibilidad del sensor

Tal vez se dieron cuenta, pero en temperaturas normales digamos de hasta 50C, tendremos mediciones muy pequeñas. Por ejemplo 50C / 0,489 = 102 que es solo el 10% de la resolución de nuestro puerto analógico del Arduino. Para mejorar esto podemos usar un truco que nos permite cambiar la referencia de nuestros puertos analógicos para que sea 0v-1.1V, ya que el sensor nos mostrará 1v recien a los 100C, estaremos seguros haciendo esto. Con el nuevo voltaje de referencia nuestra resolución mejora a 1,07mV. PRECAUCION: el cambio de referencia por software es peligroso y solo debe hacerlo cuando esté seguro de ello ya que si aplicamos mayor voltaje al maximo permitivo podemos quemar nuestro puerto o la placa Arduino completa (tambien puede cambiar la referencia mediante un divisor de voltaje con 2 resistencia o un diodo zener, y conectando la referencia a la pata Vin de nuestro Arduino). Así quedaría el Sketch con las modificaciones (leer comentario para Arduino MEGA):

// Pin al que conectamos nuestro sensor de temperatura LM35
#define LM35_PIN A0

void setup() {
  // Configurar el rango de nuestro (Arduino UNO)
  analogReference(INTERNAL); // OJO, si tiene un Arduino MEGA cambie INTERNAL por INTERNAL1V1

  Serial.begin(9600);
  Serial.println("LM35 test...");
}

void loop() {
  float tempC;
  int reading;
 
  // Leemos el voltaje en el sensor
  reading = analogRead(LM35_PIN);

  // Calculamos la temperatura en base al voltaje 
  tempC = reading * 0.10753;

  // Mostramos la temperatura en el Monitor serial
  Serial.println(String("Temperatura: ") + tempC + "C");

  // Repetimos cada 1 segundo
  delay(1000);
}

Como siempre, cualquier duda o comentario que tengan me escriben!

Deja un comentario