martes, 17 de noviembre de 2015

Componentes (5): Sensores de temperatura

Una de las primeras cosas que se nos viene a la cabeza cuando queremos hacer nuestro primer montaje con un Arduino es medir la temperatura...
  • Me he comprado un Arduino...
    • ¿Y para qué?
  • Pues.... quiero hacer un termómetro.
    • ¿Y no tienes un termómetro en casa?
  • Ya, pero.....
Bueno, vale, es verdad, lo de las estaciones meteorológicas no es ningún invento nuevo, pero... mola más cuando lo haces tú mismo. Además, es mucho menos limitado, podemos hacer muchas cosas: termómetros conectados a internet, una red de termómetros repartidos por todas partes, conexión con LCD's, mostrar las máxima y mínimas diarias, calcular las tendencias....

Vamos a ver dos tipos de componentes que nos permiten medir la temperatura en nuestros montajes.

DHT11 / DHT22

Estos componentes de DFRobot son de los más conocidos a la hora de medir temperatura, por su bajo coste y también por ser de los más fáciles de utilizar. Además de la temperatura, también miden la humedad.
Existen dos versiones, cada una con una precisión distinta:
  • DHT11.
    Mide la temperatura y la humedad en grados enteros (o puntos porcentuales en caso de la humedad). Su rango de temperatura va entre 0ºC y 50ºC, con una precisión de 2ºC, y el de la humedad va entre 20% y 80%, con una precisión del 5%.


  • DHT22.
    Mide la temperatura y la humedad en décimas de grado (o décimas porcentuales), y sus rangos admisibles son de -40ºC a 125ºC con una precisión de 0.5ºC y de 0% a 100% de humedad con una precisión de 2-5%.
Básicamente su comportamiento es idéntico, salvo las diferencias de precisión indicadas. El DHT11 está empaquetado normalmente en color azul mientras que el DHT22, algo más grande y caro, está empaquetado en blanco.

Funcionamiento

Su funcionamiento es muy sencillo: tienen cuatro patillas, de las cuales conectaremos sólo tres. Si miramos el componente tal como se muestran en las fotos, las conexiones son las siguientes:

  1. Alimentación. Requieren  de un voltaje de entre 3 y 5V.
  2. Salida. Este pin es el que nos proporciona la medida. La señal que proporciona no es analógica, sino digital.
  3. No conectado.
  4. Masa. Este pin irá conectado a GND.
Para utilizarlo con Arduino, podemos usar una de las muchas librerías que existen, pero yo recomiendo la de Adafruit:

https://github.com/adafruit/DHT-sensor-library

Es importante remarcar la velocidad a la que podemos leer los datos. En el caso del DHT11 podemos leerla como máximo una vez por segundo (1Hz), mientras que en el caso del DHT22 podremos leer como mucho una vez cada dos segundos (0,5Hz).

Para más información y para ver ejemplos de código, os recomiendo esta página de adafruit.

Precios

Si ya habéis leido otras entradas del blog sabréis mi afición por las compras orientales. Pues bien, aquí van algunos enlaces de Aliexpress donde podéis comprar estos componentes:

  • DHT11: este sale muy barato. En el enlace está a 0.73$ (unos 0.70€).
  • DHT22: este es el que yo tengo, sale un poco más caro pero nada del otro mundo. 2.50$ (unos 2.38€).

Dallas DS18B20

Este es otro sensor muy conocido. Lo fabrica Dallas Semiconductors y sólo mide la temperatura, no la humedad.



La precisión y el rango de temperaturas son muy similares a los del DHT22: entre -55ºC y +125ºC y precisión de 0.5ºC, y existen muchas formas de empaquetado: en forma de transistor, en forma de integrado para zócalo, impermeable para exterior, etc.

Funcionamiento

La característica más destacable de este sensor es que se comunica por medio un bus denominado "1 Wire", que utiliza un sólo cable (más la masa) tanto para leer los datos como para alimentarse. En un mismo bus "1 Wire" puede haber multitud de sensores conectados (de este o de otro tipo). A la hora de leerlos, se diferencian unos de otros en que cada uno de ellos tiene una dirección física de 64 bits distinta, parecido a las MAC que utilizan las tarjetas de red.

De las tres patillas que tiene el sensor de la imagen, el conexionado es el siguiente, de izquierda a derecha:

  1. GND.
  2. Entrada / salida digital de datos.
  3. Vdd. Alimentación opcional a 5V.
Existen dos modos de funcionamiento:
  • Modo alimentado.
    En este modo se utilizan los 3 pines del sensor. Alimentaremos a 5V por medio del pin 3 y conectaremos el 2 a una entrada digital, con una resistencia de "pull-up" entre los pines 2 y 3. Esta resistencia en principio puede ser de cualquier valor alto, pero os recomiendo encarecidamente que utilicéis una de 4.7KΩ. A mi sólo me ha funcionado así.
  • Modo parasitario.
    En este modo tan sólo se utilizan dos pines, el 1 y el 2, mientras que el 3 lo conectamos a tierra junto con el 1. El sensor "tomará prestada" la alimentación del bus de datos acumulando energía por medio de un condensador interno. Para que funcione bien, tenemos que utilizar de nuevo la resistencia de 4.7KΩ entre +5V y el pin de datos. La diferencia, es que a los sensores sólo mandamos dichos dos pines. En el siguiente esquema se puede ver mejor lo que digo:

A la hora de conectarlo a un Arduino, el pin de datos lo conectaremos a cualquier entrada/salida digital, al igual que los sensores DHT.

En cuanto a las librerías que tendremos que usar, utilizaremos estas dos:

Precios

Este sensor es más barato que el anterior.
Yo lo compré en Aliexpress y aquí tenéis el enlace.  Me salieron a 0,53€ cada uno, comprándolo en un paquete de 10.

Y eso es todo por hoy. Hay más sensores de temperatura, pero creo que con estos cubrimos el expediente de momento.
Related Posts Plugin for WordPress, Blogger...

No hay comentarios:

Publicar un comentario