Sensor LM35: medir temperaturas con Arduino

¿Cómo usar un sensor LM35 (sensor de temperatura) con Arduino?

En este tutorial vamos a aprender como utilizar un sensor de temperatura LM35 con Arduino. Este sensor es particularmente sencillo de utilizar, y al final de la publicación habremos construido con un termómetro casero.
El sensor LM35 varia su resistencia eléctrica en base a la temperatura ambiente. Tiene un rango operativo desde los -55°C hasta los 150°C, con una precisión de 1/4°C a temperaturas cercanas a los 25°C, y 3/4°C en su rango completo. A quienes les interese conocer un poco más en detalle este sensor, aquí podrán encontrar el datasheet.

Sensor LM35
Sensor LM35
El sensor LM35 que utilizaremos consta de tres patas en un encapsulado similar al de un transistor. La primera pata (número 1 en la imagen), se conectará a VCC (+5V), la pata central (número 2) será la salida del sensor, la cual conectaremos a uno de los pines analógicos de nuestro Arduino, y finalmente la tercera pata (número 3) se conectará a GND (ground).

 

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. Sensor LM35
  3. Breadboard
  4. Jumper cables
Componentes tutorial Sensor de Temperatura LM35 Arduino
Componentes tutorial Sensor de Temperatura LM35 Arduino

Esquema de conexión - Tutorial LM35

A continuación podremos observar el esquema de conexión del circuito. Como podrán ver es extremadamente sencillo de conectar. Al igual que en el tutorial anterior (Cómo utilizar un sensor LDR con Arduino) utilizaremos para sensar la temperatura, uno de los <strong>pines analógicos</strong> de nuestro Arduino, en nuestro caso, elegimos el pin A1.

Esquema Conexión LM35 - Arduino
Esquema Conexión LM35 - Arduino

Código fuente - Tutorial LM35

El código fuente, al igual que el circuito es muy sencillo de realizar. Si sabes como hacer una regla de tres simple, podrás entender el código :)

Como pudieron ver, el código es extremadamente sencillo. Pero... de donde salió esa fórmula? Vamos a explicarlo rápidamente y tratar de mejorar las lecturas utilizando un tip obtenido en la página de Arduino.
Los pines analógicos entregan como lectura un valor entre 0 y 1023, de acuerdo al voltaje de lectura. Es decir, el valor obtenido utilizando analogRead, será proporcional al voltaje recibido en el pin. El valor del pin fluctúa entre 0v y 5v, por ende, podemos decir que el valor 0 de analogRead corresponderá a 0v y el valor 1023 a +5v. De esta forma podemos calcular aproximadamente el valor en volts de cada unidad entregada por el analogRead:

valor = \frac{5V}{1024}

valor = 0.0048828125V = 4.8828125mV

Conocido este valor, podremos calcular los mV de lectura entregados por el sensor LM35. Por ejemplo, si analogRead entrega un valor sensado de 70, podemos multiplicar este valor para obtener los mV aproximados lectura:

mVoltsLeidos = 4.8828125mV * 70

mVoltsLeidos = 341.80mV

Acudiendo al datasheet, podremos ver que cada grado celsius corresponde a una variación de 10mV. Es decir, si nuestra lectura es de 20mV, equivale a 2°C. Entonces:

gradosCelsius = 341.80mV / 10mV

gradosCelsius = 34.18

Esta fórmula puede ser acortada de la siguiente forma, entregando el mismo resultado:

gradosCelsius =

5.0 * analogRead(PIN) * 100.0) / 1024;$$

¿Es posible mejorar las lecturas? Si: en el siguiente link podrán ver como mejorar las lecturas realizadas desde el sensor LM35, cambiando el aRef. Por default, Arduino utiliza como "tope" para repartir las 1024 unidades 5v de lectura en los pines analógicos. Este valor puede ser modificando utilizando la función analogReference (https://www.arduino.cc/en/Reference/AnalogReference). El sensor LM35 entrega como máximo 1V de salida, por lo que estamos desaprovechando el 80% de la precisión que posee nuestra placa. Para mejorar las lecturas, vamos a modificar este valor a INTERNAL, cambiando el tope de 5V a 1.1V, aprovechando prácticamente toda la precisión que nuestro sensor ofrece.
El cambio en el código es muy pequeño, quedando de la siguiente forma:

Para más información sobre este último cambio, visitar http://playground.arduino.cc/Main/LM35HigherResolution

2 thoughts on “Sensor LM35: medir temperaturas con Arduino

  • 10/11/2016 at 03:12
    Permalink

    Donde es que se ve el valor grafico que nos daria el sensor como medida?

    Reply
  • 10/11/2016 at 03:15
    Permalink

    A lo que me refiero es que como envio a un display el valor de la temperatura? Puedo usar algun touchscreen para que se monitoree por unas dos horas el comportamiento de un sistema que necesita saber la temperatura durante todo el tiempo de prueba.

    Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *