Reto-08. Sensor de temperatura LM35¶
Enunciado¶
Utilizaremos este sensor de temperatura para medir la temperatura de la habitación en la que estemos resolviendo el reto mostrando el resultado en la consola.
Teoría¶
LM35¶
El LM35 es un circuito integrado de medida de temperatura de precisión con una tensión de salida lineal y proporcional a la temperatura en grados centígrados. Algunas de las características que se pueden extraer de la hoja de datos del LM35 son:
- Directamente calibrado en grados Celsius (Centígrados)
- Factor de escala lineal de +10-mV/°C
- Resolución asegurada de 0.5°C
- Rango de medida de −55°C a 150°C
En la imagen siguiente vemos su representación en circuito y el aspecto físico que tiene en uno de sus encapsulados mas usual.
Representación esquemática y aspecto |
---|
Bloques de tiempo¶
Para este reto vamos a explicar los bloques de tiempo que se implementan en ArduinoBlocks. Las funciones de tiempo o retardo nos permiten realizar pausas y obtener información sobre el tiempo transcurrido dentro del microcontrolador.
1.- Bloques esperar. Realizan una pausa del tiempo que establezcamos hasta seguir con la ejecución del siguiente bloque. Se corresponden con las instrucciones delay(1000) y delayMicroseconds(1000). Tenemos disponibles los dos de la imagen siguiente:
Bloques esperar |
---|
2.- Tiempo transcurrido. Obtiene un valor con el tiempo transcurrido desde el inicio o reset del microcontrolador de la placa UNO. Se trata de las funciones millis() y micros(). El valor puede ser en milisegundos o microsegundos, tal y como vemos en la imagen siguiente:
Bloques tiempo transcurrido |
---|
En la imagen siguiente tenemos un ejemplo de uso sacado del manual del programa: Ejecutar la Tarea1 cada 3 segundos y la Tarea2 cada 7 segundos sin bloquear la ejecución del programa :
Ejemplo de uso del bloque tiempo transcurrido |
---|
3.- Esperar por siempre. Bloquea indefinidamente la ejecución finalizando por tanto el programa. Vemos el bloque en la imagen siguiente:
Bloque esperar por siempre |
---|
4.- Ejecutar cada. Es un bloque que NO bloquea la ejecución del programa y que implementa automáticamente la función millis(). En la imagen siguiente vemos su aspecto:
Bloque ejecutar cada |
---|
El resto de bloque y la ampliación de información la podemos consultar en el manual del programa.
Funciones¶
Una función permite crear un grupo de bloques de código que realizan una determinada tarea y que se repite a lo largo del programa en varias ocasiones. Con la creación de una función evitamos repetir todos esos bloques y simplemente tendremos que invocar a la función. Es muy conveniente que los nombre que usemos sean lo mas descriptivos posibles de lo que hace la función. Existen dos tipos de funciones: las que no retornan un valor y las que si lo hacen. En la imagen siguiente vemos los bloques correspondientes a las mismas:
Bloques para crear funciones en ArduinoBlocks |
---|
Cuando creamos funciones automáticamente se crea el bloque con su nombre que permite invocarla, tal y como vemos en la imagen siguiente:
Bloques para llamada a funciones |
---|
También es posible crear funciones a las que se le envían datos o parámetros haciendo uso del signo + que aparece en los bloques. En la imagen siguiente vemos como le hemos añadido un par de parámetros a cada tipo de función y como se han modificado sus respectivos bloques de invocación.
Bloques para llamada a funciones con parámetros |
---|
Un ejemplo típico descriptivo del funcionamiento de las funciones es el de calculo del área de un triángulo. Para ello definimos la función que realiza el cálculo, le pasamos dos parámetros, la base y la altura, realizamos los cálculos pitagóricos y nos devuelve el área del triángulo para esos datos. En la imagen siguiente tenemos la idea de resolución con la función creada y el bloque para llamarla.
Ejemplo de calculo del área de un triángulo |
---|
En las imágenes siguiente vemos como se han creado diferentes funciones y la forma de llamarlas. En concreto se corresponden con la base del programa de Educacont para configurar y grabar en la correspondiente estación. La primera función es "leer sensores" y la vemos en la imagen siguiente:
Función leer sensores de Educacont |
---|
En la imagen siguiente podemos ver la función encargada de subir los datos leídos a la nube.
Función subir datos a la nube de Educacont |
---|
La siguiente función permite detener las mediciones durante 15 minutos.
Función detener medición nn minutos de Educacont |
---|
El bucle principal tiene la configuración que vemos en la imagen siguiente:
Llamada a las funciones definidas |
---|
En la TdR STEAM¶
El LM35 en la TdR STEAM |
---|
Programando el reto¶
La programación del reto es muy similar a la de retos anteriores y el programa Reto-08 lo vemos en la imagen siguiente:
Reto 8 |
---|
En la imagen tenemos el aspecto de la consola:
Consola del reto 8 |
---|
Actividades de ampliación¶
R8.A1. Alarma óptico/acústica por sobrepasar una temperatura de 25ºC. Utilizaremos el zumbador para emitir algún pitido y el LED rojo para la indicación óptica.
R8.A2. Semáforo indicador de rangos de temperatura. Se trata de programar un semáforo con un LED RGB que mostrará color verde si la temperatura está por debajo de 25ºC, rojo si está por encima de 35ºC y amarillo si está entre ambos valores.
Solución R8.A1¶
El Programa de la imagen siguiente está disponible en el enlace Reto-08-A1. El LED parpadeará y el zumbador emitirá los dos sonidos establecidos si la temperatura detectada por el LM35 está por encima de los 25ºC.
Actividad 1 del reto 8 |
---|
Solución R8.A2¶
El Programa de la imagen siguiente está disponible en el enlace Reto-08-A2.
Actividad 2 del reto 8 |
---|