Sensor LM35: medir temperaturas con Arduino

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

¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

El fin de este nuevo tutorial es aprender a utilizar un sensor LDR (Light-Dependent Resistor) junto a nuestro Arduino. Al finalizarlo, habremos creado un medidor de intensidad de luz ambiente haciendo uso de LEDs como indicadores y nuestro sensor LDR.
En primer lugar... ¿Qué es un sensor LDR? Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, al rededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol.
Otro concepto que debemos conocer es la diferencia entre pines digitales y pines analógicos. Hasta hora hemos utilizado únicamente pines digitales, los cuales pueden determinar como entrada o salida sólo dos valores lógicos de acuerdo a su voltaje: 1 o 0 (HIGH o LOW en el código, respectivamente). En cambio, los pines analógicos convierten el voltaje de entrada (entre 0v y 5v) a un valor digital que varía entre 0 y 1023. Según el valor en el cual se encuentre, podremos decir que hay más luz o menos luz, se está ejerciendo más fuera o menos, etc dependiendo del tipo de sensor que tengamos conectado al pin analógico.

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. Sensor LDR
  3. 3 LEDs
  4. 3 Resistencias 220ohm
  5. 1 Resistencia 10K ohm
  6. Breadboard
  7. Jumper cables
Componentes tutorial LDR con Arduino
Componentes tutorial LDR con Arduino

El circuito constará de dos partes, la que contiene a los LEDs, que será similar al circuito realizado en nuestro primer tutorial, y una segunda sección, la cual contendrá al sensor LDR. Para comprender bien como funciona y está formada la segunda parte del circuito, tendrán conocer el concepto de Divisor de Voltaje. En nuestro sitio poseemos una explicación clara y completa para que comprendan de qué se trata, para qué se usa y cómo funciona un divisor de voltaje. A continuación el esquema del circuito:

Diagrama sensor LDR con Arduino
Diagrama sensor LDR con Arduino

Obviaremos la parte del circuito que se encarga de conectar los LEDs a los pines digitales 2, 3 y 4, la cuál ya fue explicada en tutoriales previos (este y este) y pasaremos a la parte que más nos importa, ¿cómo conectar el sensor LDR? Como dijimos en la introducción, el LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

V_{out} = \frac{R_{2}}{R_{1} + R_{2}} . V_{in}

Dónde Vout es el voltaje leído por el PIN analógico de Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

Ahora que hemos visto el circuito, podemos pasar al código, que es bastante sencillo:

Una vez subido el sketch a nuestro Arduino, podemos verlo en funcionamiento:

Sensor LDR con Arduino
Sensor LDR con Arduino
Sensor LDR con Arduino

Fotos del circuito terminado:

Circuito finalizado: sensor LDR con Arduino
Circuito finalizado: LDR con Arduino