jueves, 7 de abril de 2016

Registrando temperatura ambiente con LM35 y lector de tarjetas micro SD


Hoy os traigo un simple y económico sistema para registrar los valores de temperatura que hay en un determinado lugar a lo largo del tiempo, para ello, vamos a utilizar un sensor de temperatura LM35 y un módulo lector de tarjetas micro SD, que junto con nuestro Arduino y una sencilla programación lograremos crear un robusto dispositivo para el registro climático. El LM35 es un sensor de temperatura de muy bajo coste con una precisión calibrada de 1 °C. Su tensión de salida es lineal y proporcional a la temperatura, por lo que cada grado Celsius equivale a 10 mV, abarcando un rango de medición desde -55 °C (-550mV) hasta 150 °C (1500mV). Debido a su baja corriente de alimentación (60 μA) se produce un efecto de auto calentamiento muy reducido, además se encuentra en el mercado en diferentes tipos de encapsulado, el más común es el TO-92, utilizado también por los transistores de baja potencia. El LM35 no requiere de circuitos adicionales para su correcto funcionamiento, la baja impedancia de salida y su precisa calibración interna hacen posible su fácil instalación a nuestro Arduino.

Sensor de temperatura LM35

Este dispositivo consta de tres pines de conexión, los dos de los extremos para la alimentación (+5V y GND) y el central para el voltaje de salida “Vout”, que será el pin que conectaremos a la entrada analógica A0 de nuestro Arduino para que a través de su conversor A/D de 10 bits de resolución podamos obtener ciertos valores con los que poder operar y de esta manera obtener la temperatura real que está detectando el sensor en cada momento. Partiendo de la premisa de que 1 °C equivale a 10mV en Vout, lo primero que hacemos es obtener el valor que nos entrega el conversor A/D tras la lectura del pin Vout del sensor, después multiplicamos este valor por la precisión para obtener el voltaje real y por último dividimos el voltaje entre los 10mV para obtener los grados centígrados (°C), quedando la siguiente fórmula matemática.



A partir de aquí lo que nos interesa conocer es que nuestro Arduino puede leer y escribir datos en tarjetas micro SD a través de un módulo específico, pero no formatearlas, debido a ciertas limitaciones de la librería  #include que utilizamos, aunque como siempre estas limitaciones o especificaciones pueden cambiar en el futuro, pero es importante que las tengáis en cuenta. Por ahora solo soporta tarjetas micro SD en formato FAT16 y FAT32, en principio si usas FAT32 deberías poder usar hasta una tarjeta de 32Gb, además los nombres y archivos quedan limitados al viejo formato 8.3, es decir,  nombre de 8 caracteres y extensiones de tres,  y nada de acentos en los nombres,  ni nuestra querida letra “Ñ”,  ni espacios en blanco, en definitiva  nada que no sean letras y números, sin signos raros. Si usas Windows en cualquier versión, puedes introducir la tarjeta micro SD en un adaptador SD o similar y formatearla desde el administrador de archivos, eligiendo la opción formatear y en sistema de archivos debes seleccionar FAT32 (predeterminado), manteniendo en las opciones de formato el rápido. También debéis de conocer que la librería puede no escribir inmediatamente los datos que le envías a la tarjeta micro SD, y para asegurarse de que es así, debes hacer una llamada a flush (Vaciar) o close (Guardar y cerrar).

Lector de tarjetas micro SD

Para finalizar os tengo que decir que el módulo lector de tarjetas micro SD se conecta a nuestro Arduino mediante comunicación SPI, que no es más que uno de los protocolos de comunicación serie que soporta, además tenemos que cargarle el programa para que se escriba en la tarjeta micro SD cada 5 segundos el valor de la temperatura ambiente en un archivo llamado “LM35.TXT” (Si este archivo no existe lo crea y si ya existe añade los datos a continuación de los anteriores), cuyo contenido tendrá el siguiente aspecto.

Monitor serie del IDE de Arduino

A través del monitor serie del IDE de  Arduino podremos ir visualizando la temperatura a tiempo real además de los distintos mensajes que irá enviando el programa en función del comportamiento del lector de tarjetas micro SD (Error al leer la tarjeta, valor almacenado correctamente, error al escribir en LM35.TXT…).



Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Sensor de temperatura LM35.

·         Módulo lector de tarjetas micro SD.

·         Tarjeta micro SD genérica de 2GB.

·         Protoboard.

·         Cables de conexión.


Código del programa:



Video:


3 comentarios:

  1. ¿Se puede hacer este proyecto con el Shield Adafruit 1.8" Color TFT con lector SD? link del Shield https://www.adafruit.com/product/802

    ResponderEliminar
    Respuestas
    1. Por supuesto que si, puesto que todos los lectores de tarjetas SD funcionan bajo la misma librería (SD.h). Lo unico a tener en cuenta es el pin cs(chipselect) que entregue tu lector SD integrado en el TFT y cambiarle en la programacion (cambiar el pin 10 por el pin cs que tenga tu placa TFT)

      Eliminar