Se ocupan dos sensores:

Uno para medir la temperatura que podría ser un termistor, un RTD, un termopar, etc, cualquiera de estos necesitará un acondicionador de señal para poder enviar el valor de la temperatura al micro controlador.

El sensor de humedad puede ser uno tipo capacitivo, es decir, un capacitor que puede variar su capacitancia dependiendo de las condiciones de humedad del ambiente, de ahí, tendríamos que diseñar algún circuito oscilador incluyendo dicho capacitor para luego medir la frecuencia o el ancho de pulso de salida y relacionar estos valores con la humedad ambiental.

En ambos casos tendríamos que invertir tiempo en diseño y posiblemente nos salga mas caro todo el desarrollo que comprar un sensor o un dispositivo que nos pueda realizar la tarea.

Otro inconveniente es, que si el sensor se encuentra a una distancia considerable, una salida del tipo analógica presentará problemas debido al largo del cable, este debe de compensarse y tomarse en cuenta durante el diseño del sistema de medición.

Muchos de estos problemas pueden ser controlados desde el inicio del proyecto desde la selección del sensor, una buena opción es utilizar un sensor que pueda entregarnos ambas lecturas  y así eliminar el uso de dos sensores como por ejemplo un DHT22.

El DHT22 es un módulo sensor de temperatura y humedad que en su interior incluye dos sensores, uno para medir la temperatura y otro para medir la humedad ambiental, ambos son comandados por un micro controlador el cual se encarga de tomar el valor de ambas magnitudes y digitalizarlas, de tal manera de que puedan ser enviadas a un MCU para ser decodificadas y mostradas al usuario.

El DHT22 tiene las siguientes características:

Salida digital: Puede estar localizado a 25 metros del MCU sin perder datos por el largo del cable

Calibración de fábrica: Se encuentran calibrados de fábrica, tienen su calibración almacenada en memoria, este coeficiente de calibración se utiliza en las mediciones realizadas por el dispositivo.

Consumo de corriente reducido.

No se necesitan componentes extras para hacerlo funcionar.

Fácil de reemplazar.

Especificaciones técnicas del DHT22

Voltaje de alimentación: 3.3 – 6 V dc.
Señal de salida: Digital bus simple (una línea).
Elemento sensor: Capacitor de polímero.
Rango de operación: 0-100% Rh   -40, 80 C Temperatura.
Precisión: +-2% tip. +-5% max Rh.
Sensibilidad: 0.1%Rh - 0.1C.
Repetibilidad: +-1%Rh  +-0.2 C.
Histéresis Rh: +- 0.3%Rh.
Estabilidad: +- 0.5%Rh /Año.
Tiempo de sensado: 2 seg. Promedio.
Intercambiabilidad: Completamente intercambiable.
Dimensiones 14X18X5.5 mm.

Principio de funcionamiento:

Cuando el DHT22 es comprado ya montado, es decir, viene en una pequeña placa de circuito impreso, se presenta con solo tres terminales dos para la alimentacion de 3.3 -5 Volts DC y la restante es el puerto de datos bidireccional.

Protocolo de comunicación:

El DHT22 (o AM3202) utiliza un bus simple de comunicación, es un bus de una sola línea para la transmisión y recepción de datos, solo se necesita de un micro controlador para realizar la comunicación.

Cuando el bus se encuentra inactivo (sin transferencia de datos), éste se encuentra en estado alto (bus = VCC),  la transferencia de datos es iniciada por el micro controlador el cual manda el bus a nivel bajo al menos por 18 milisegundos, transcurrido este tiempo, el micro controlador debe de mandar el bus a estado alto, en éste punto el micro queda en espera de la respuesta del sensor la cual tiene un tiempo de 20 a 40 micro segundos, es decir, para iniciar la transferencia de datos, se debe de poner el bus a nivel bajo por al menos 18 milisegundos (ver línea negra en la figura 1) y luego mandarlo a nivel alto, una vez hecho esto esperaremos de 20 a 40 micro segundos la respuesta del sensor.

Respuesta del sensor:

Antes de que el DHT22 envíe algún dato, éste nos debe responder confirmando que ha recibido la petoción de transmitir los datos de temperatura y humedad, ésto lo hace mandando el bus a nivel bajo por 80 micro segundos y luego regresando el bus a nivel alto por otros 80 micro segundos, una vez terminada la confirmación, empieza la transmisión de dartos. (ver linea gris en la figura 1)

comunicacion1

Figura 1 (petición de enviar datos)
Transmisión de datos:
No esperemos recibir caracteres en ASCII por parte de este sensor, el sensor envía un tren de pulsos el cual debe de ser decodificado, el sensor envía 40 bits (5 bytes de información) es decir:
Supongamos que recibimos este valor Humedad = 70.5% y temperatura = 30.4 C
 
Byte 0 % Hummedad 70
Byte 1 % Humedad (decimales) 5
Byte 2 Temperatura C 30
Byte 3 Temperatura (decimales) 4
Byte 4  Checksum  
 Cada bit es separado por un pulso bajo que dura 50 micro segundos, después el sensor nos enviará un pulso alto y dependiendo de la duración de dicho pulso, sabremos si lo que se está enviando es un cero o un uno como se muestra en la siguiente imagen que corresponde al envío de un 1.
comunicacion3
En la imagen se puede ver que antes de enviar un bit, el sensor manda el bus a nivel bajo durante 50 micro segundos, ésto lo hace con el fin de separar los bits y poder diferenciarlos, como se ve en la imagen, un pulso que dura 70 micro segundos o mas, corresponde a un 1 lógico.
En la siguiente imagen se observa la representación de un 0 lógico enviado por el sensor.
comunicacion2
Se puede observar al inicio un pulso bajo de 50 micro segundos seguido de un pulso alto de una duración de 26 a 28 micro segundos lo cual equivale a que el sensor nos esté enviando un cero lógico.
Ahora podemos entender como es que el DHT22 se comunica con un micro controlador, en la siguiente imagen podemos ver parte de dicha comunicación.
comunicacion
Como crear un sensor de temperatura y humedad partiendo del DHT22 y conseguir una salida digital?
Ahora bien, como lo controlamos?
Bien, para Arduino, se que hay librerias que se agregan al programa fuente y es todo, personalmente prefiero hacer todo el desarrollo para entender correctamente lo que debe de hacer un programa para comunicarse con el sensor, para el desarrollo utilizaremos un PIC de gama baja como puede ser el PIC 12F683
Empecemos a programar:

'****************************************************************
foto codigo

 
Lo primero que vamos a hacer es configurar el PIC en algunos aspectos.(se incluyen comentarios en cada linea o bloque para su mejor comprensión)
Nuestro programa va a estar monitoreando el sensor DHT22, tomando la temperatura y la humedad par aluego enviarla a una computadora via puerto serial.
---------------------------------------------------------------------------------------------------------------------------------

 

Aquí dejamos un video de las pruebas realizadas con el dispositivo.

 

De igual forma, si deseas obtener el archivo del programa y demás información, consulta nuestra sección de descargas pulsando aquí.