Open Roberta: Alarma de temperatura con Arduino

Ya vimos en un artículo anterior que podemos programar el Arduino en bloques usando Open Roberta. En este artículo vamos a ver una aplicación, construyendo una alarma de temperatura con el TMP36.

Introducción

Open Roberta puede utilizarse para programar y simular robots pero también para desarrollar proyectos con distintas placas como Arduino.

Cuando utilizamos Nepo4Arduino se habilitan distintos bloques que nos permiten acceder a los pines del Arduino para escribir y leer datos por ellos, tanto en forma digital como analógica, así como bloques predefinidos para algunos sensores comunes como el sensor ultrasónico HC-SR04, el detector de movimiento HC-SR501, el sensor de temperatura y humedad ambiente DHT11 y el sensor de temperatura TMP36, entre otros.

En este proyecto, como un ejemplo de las capacidades de Open Roberta aplicado a la computación física, vamos a ver una sencilla alarma de temperatura basada en este último sensor, el TMP36.

El sensor de temperatura TMP36

Hay diversas formas de sensar la temperatura, tanto del ambiente como de líquidos y otros materiales. Se puede hacer con resistencias especiales como los NTC o termistores, con diodos o sensores específicamente diseñados como el LM35 o el TMP35. La ventaja de estos últimos es que no requieren ningún tipo de calibración y proveen una salida de tensión que varia de forma proporcional a la temperatura.

Un termistor y un sensor LM35 (no a escala)

El TMP36, que usaremos en este proyecto, es una variante del TMP35, muy similar al LM35. Funciona con una tensión de alimentación de 2.7V a 5.5V en un rango de temperaturas de -40 ºC a 125 ºC (grados centígrados) y produce una salida de 10 mV/ºC, entregando 750 mV (0,75V) a 25 ºC.

Este sensor está disponible en varios encapsulados, el que utilizaremos es TO-92, con la siguiente distribución de pines:

Pines del TMP36 (fuente Analog Devices)

El circuito

El circuito que utilizaremos puede verse a continuación:

Circuito de protoboard

Como se puede ver consta de un sensor de temperatura TMP36 y dos leds, además del Arduino UNO. El sensor mide la temperatura del aire y los leds indican si el valor medido está dentro del rango permitido (led verde) o si la temperatura es demasiado elevada (led rojo). Un circuito como este podría emplearse en una cámara frigorífica que almacena alimentos o medicamentos y si la temperatura es demasiado elevada, estos corren riesgo de deteriorarse.

Esquemático

El programa

El programa está hecho en el lenguaje NEPO de Open Roberta. Lo primero que debemos hacer es definir los bloques asociados con las entradas y salidas utilizadas.

Para ello debemos ir a la solapa “Configuración del Robot” en el editor de bloques y en la sección “Acción” agregamos las dos salidas para los leds, con dos bloques “Actuator digital” (actuador digital) a los que daremos los nombres “TempAlta” y “TempOK” ya que actúan sobre el led rojo y el led verde respectivamente, y los asociamos a los pines 2 y 3 del Arduino, como se ve en la imagen.

Bloques para los leds y el sensor

Luego vamos a la sección “Sensores” y agregamos un bloque “Temperature sensor TMP36” al que llamaremos “SensorTemp” y le decimos a NEPO que la salida del sensor está conectada a la entrada A0 del Arduino, como se ve mas arriba. Con esto tenemos ya todos los bloques listos.

Ahora en la solapa “PROGRAMA NEPOprog” haremos un programa de prueba para comprobar el funcionamiento del sensor. El mismo consistirá en una repetición sin fin dentro de la cual leeremos el sensor y enviaremos el valor de temperatura medido por el monitor serie, para poder verlo con comodidad. Haremos uso de los bloques avanzados (los del grupo 2) para poder acceder al bloque del sensor de temperatura.

Programa de prueba

Usando el método ya visto en el artículo anterior, descargamos el programa al Arduino empleando “Open Roberta Connect”. Para poder ver los datos enviados al monitor serie, en el mismo “Connect” debemos elegir la opción “Arduino UNO” – “Serial Monitor” del menú principal, lo que abrirá el monitor serie

Iniciando el monitor serie

Una vez hecho esto podemos ver los valores de temperatura medidos, actualizados cada 3 segundos. Tocando el sensor con la mano podemos comprobar su correcto funcionamiento.

Valores de temperatura en grados mostrados en el monitor serie

Ahora si haremos el programa completo. Usaremos una variable numérica para guardar la temperatura y otra para establecer la temperatura máxima. Luego leeremos el sensor y compararemos el valor medido con el valor máximo, prendiendo el led verde (Temperatura OK) si es menor o el rojo (Temperatura máxima) si es mayor o igual.

Programa de la alarma completo

Este el prototipo funcionando:

Prototipo

Espero que este proyecto haya servido como ejemplo de las posibilidades de Open Roberta. Cualquier duda o consulta, pueden escribirme mas abajo en los comentarios. Hasta la próxima!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Habilitar notificaciones OK No, gracias