Sensor de temperatura TMP36 y Arduino UNO.

Para esta práctica, lo que vamos a necesitar son los siguiente elementos.

● 1 TMP36
● 3 resistencias de 330 Ω
● 3 diodos Led Rojo, amarillo y verde de 5mm

componentes del circuito

Por supuesto, también necesitarás tu Arduino UNO para realizar la conexión.

El circuito a montar lo puedes ver en la siguiente imagen.

circuito sensor conectado

Como puedes ver en la imagen, el circuito es muy sencillo de montar y no necesitas tener un master de la universidad Juan Carlos I para montarlo. Eso si, tienes que tener cuidado al montar el TMP36 ya que si lo montas al revés, podrá calentarse mucho e incluso romperse (y tú podrías quemarte al manipularlo).

Y como siempre me gusta empezar con un programa sencillo voy a programar el encendido y apagado sincronozado de los Led. recuerda que los Led se conectan el cátodo al negativo y el ánodo a positivo.

intermitencia secuencial

Y el código que ha creado la intermitencia es muy simple a estas alturas.

Y el código que produce esto es el siguiente:

Código de intermitencia

Prueba y código del circuito

Un dato curioso del TMP36, es que es sensible a radiaciones asociadas a la luz del diodo LED y por tanto la temperatura del propio TMP36 aumenta debido a la luz del propio LED.

El código siguiente muestra el proceso de creación de temperatura.

codigo4

De ahí la necesidad de controlar la corriente máxima que circula por los LEDs ya que si no se pusiera dicha resistencias, la temperatura de irradiación sería elevada y afectaría al circuito.

Puedes observar tu mismo que si desconectas las resistencias de los LEDs y subes de nuevo el Sketch, verás que la temperatura aumenta aproximadamente diez grados respecto a la temperatura con los LEDs encendidos, pero no te lo recomiendo aunque esta técnica no destruya los LEDs porque la corriente máxima de salida de los puertos digitales de Arduino UNO no es suficiente como para destrozarlos.

variación de la temperatura con los LEDs

Ahora si podemos bajar la temperatura tope a 30 y podemos modificar el circuito para hacerlo más preciso. Pero antes, repasaremos el código para entenderlo.

setup

En el setup() se establecen los puertos digitales como salida y se asigna la comunicación con el serial.

loop

El loop nos servirá para crear la acción deseada. Creamos las variables de tope para indicar una temperatura máxima, y una variable lectura que acumulará el valor del TMP36.

Conversión:
El fabricante del TMP36 nos dice en la hoja de características que el 0V no es cero grados centígrados, sino que 0V significa -50ºC. Además también ha especificado que por cada 10mV de tensión de salida hay que sumar un grado centígrado.

Como el TMP36 se conecta al puerto analógico, el cual mide 1024 para un máximo de 5V, la lectura estará dada según la formula:

formula de transformación

De ahí utilizo la variable tipo float para establecer el voltaje del pinA0. Y como he especificado que existe un desfase entre la temperatura mínima y máxima, la variable temp se encarga de restar 50 para que se exprese correctamente el valor de la temperatura.

condicional

Para terminar, un condicional indica la condición necesaria para que se enciendan los led. Por defecto los dos LEDs verde y amarillo están encendidos porque la temparatura de la sala no supera los 30ºC. Pero si la temperatura superara este valor, se apagarán los diodos y se encenderá el rojo. Cuando vuelva a bajar la temperatura se volverán a encender los led verdes y amarillos.

funcionamiento

Utilizando display LCD 16x2

Sin duda, el montaje de un display LCD nos permitirá mostrar la temperatura en una pantalla LCD aparte del monitor serial. Para esta parte del proyecto necesitarás un display LCD 16 x 2 que suelen incluirse en el kit starter de Arduino UNO. Además existen multitudes de páginas en Internet en donde poder comprar dicho display.

Para empezar con el proyecto primero montaremos el hardware del circuito y después descargaremos la librería necesaria para tal fin.

Conexiones del display 16x2.
En la siguiente imagen puedes ver el esquema de conexiones del display 16x2.

conexionado del LCD

Las conexiones que utilizaremos son los siguientes:

GND y VCC son respectivamente positivo y negativo. Lo conectaremos a 5V.
Contrate. Conectando un potenciómetro de 10KΩ podremos regular el contraste de la pantalla LCD. Si no conectamos este pin directamente no veríamos nada.
RS el selector del registro. Es para mandarle información al LCD de lo que se quiere hacer. Si deseamos mandarles comandos de control o mostrar caracteres en la pantalla.
RW lo tendremos conectado a GND para indicarle en todo momento que queremos escribir.
EN es enable. Es para activar que la pantalla reciba información.
D0 a D7. Es un bus de datos de 8 bit pero nosotros solamente necesitamos 4 bits. Del D4 al D7. Por este bus enviaremos los datos a la pantalla.
Blacklight son para la luz de fondo del LCD. Los conectaremos igual que GND y VCC.

Así que teniendo esto en cuenta ya podemos montar el circuito. Aparte del TMP36 necesitaremos un potenciómetro de 10KΩ que nos servirá para regular el contraste de la pantalla. El circuito de conexión lo puedes ver a continuación.

circuito de conexión LCD

Aunque parezca muy complicado, solo tiene cableado. Asegurate de conectarlo como puedes ver en la imagen, ya que una equivocación puede hacer que no se reproduzca correctamente.

Código

Como puedes ver, el código es bastante sencillo. Fíjate que llamamos a la librería LiquidCristal.h que contiene todo lo necesario para gestionar un display LCD (Cristal Líquido) con Arduino. Podrás descargar la librería desde el menú de descargas inferior de esta página o desde el propio IDE de Arduino en su sección de descargas.

codigo de temperatura con display

La librería LiquidCristal.h, nos permite crear un objeto que representa al display LCD y que contiene todas las operaciones “de bajo nivel” para que a nosotros nos resulte fácil la programación de este dispositivo. Puedes ver en el constructor de la clase LiquidCristal, que permite crear un objeto de esta clase para poder usarlo en la pantalla. Como argumento recibe una serie de parámetros que son los puertos usados en nuestra placa Arduino.

liquidCristal.h

Una configuración básica puede indicar que los parámetros pasados en el constructor son los pines utilizados en la placa Arduino. Sin embargo, los dos primeros números (el 12 y el 11) se refieren a los pines conectado a los puntos RS y E del display. Los cuatro últimos números se refieren a los pines de D4 a D7 del bus de datos del display. En general, esta configuración es la más simple y típica. No obstante, este constructor admite otras listas de argumentos, que no repasaremos en este tutorial.

La variable SensorPin, nos indicará el pin analógico que utilizaremos para conectar el TMP36.

En el setup(), el método begin() recibe dos parámetros que son, el primero la anchura de carácteres y el segundo la altura (número de filas), del display. Además posiciona el cursor en el primer carácter de la primera fila.

begin sirve para inicializar el display

Y por último en el loop, se realiza, primero la limpieza de la pantalla mediante el método clear(), limpiándo la pantalla del display y posicionándo el cursor en el primer carácter en la fila primera.

loop

A continuación el código anterior para calcular y expresar el valor de la temperatura. Pero para terminar y que se muestre en pantalla el mensaje requerido, se utiliza el método print(), para mandar valores numéricos formateados, aparte de mostrar el mensaje establecido en código.

Así que cuando ejecutas, se muestra el mensaje y la temperatura en grados centígrados (o Farenheit), según lo tengas establecido.

Bueno, creo que puedo dar por finalizado ésta practica completa del sensor de temperatura con Arduino y el TMP36. En el siguiente capítulo empezaremos a trastear con motores eléctricos y nuestra placa Arduino UNO. Gracias por tu visita y recuerda que puedes bajarte los sketch de este capítulo desde el menú inferior de descargas.