DHT22

Lectura de la humedad relativa y de la temperatura ambiente:

Humedad relativa:
La humedad relativa es la cantidad de humedad en el aire comparada con la cantidad de humedad que puede retener a una temperatura.
Temperatura:
La temperatura es una magnitud física que refleja la cantidad de calor, ya sea de un cuerpo, de un objeto o del ambiente.
Está relacionada con la energía interior de los sistemas termodinámicos, de acuerdo al movimiento de sus partículas, y cuantifica la actividad de las moléculas en la materia: a mayor energía sensible, más temperatura.

El sensor DHT22:


El DHT22 en un sensor que nos permite la medida de temperatura y humedad relativa (RH). Para comunicarse con el microcontrolador utiliza un protocolo de comunicación propietario muy similar al conocido 1-wire de Dallas semiconductor y solo requiere un pin de datos para la comunicación con el microcontrolador.
El sensor está compuesto por dos partes, un sensor de humedad capacitivo de polímero y un termistor para medir la temperatura. El sensor también dispone de un circuito integrado que hace la conversión analógica-digital y se encarga de enviar los datos digitales por el bus de comunicación.

Características DHT22:
  • Alimentación de 3.3V a 5.5V DC
  • Corriente máxima durante conversión 2.5mA
  • Rango de medición de temperatura -40ºC a 125ºC
  • Precisión temperatura ±0.5ºC a ±1ºC en condiciones adversas
  • Resolución de temperatura 0.1ºC
  • Rango de medición de humedad 0%RH a 100%RH
  • Precisión humedad relativa ±2% a 25ºC
  • Resolución de humedad 0.1% RH
  • Velocidad de muestro 0.5Hz


Conexión del sensor al microcontrolador:
Conectamos el pin1 a Vcc, el pin2 es el pin de datos y necesita una resistencia de pull-up de al menos 3.3K para garantizar el correcto funcionamiento del bus de datos, esta resistencia permite mantener el bus en alto cuando no está siendo utilizado para la comunicación.El pin de datos lo conectaremos al pin RF3 del microcontrolador y será este el que determine si el pin actua como entrada o como salida dependiendo de si está enviando instrucciones o recibiendo datos. El pin 3 no se utiliza y el pin 4 lo conectamos a Gnd.
Hay dos tipos de encapsulado del sensor DHT22, el primero que solo está el sensor y un segundo encapsulado que añade una pequeña circuitería que consiste en una resistencia de pull-up y un condensador entre Vcc y Gnd que actúa de filtro para interferencias de la alimentación. En nuestro caso y para más comodidad hemos optado por el sensor que ya viene con la circuitería incorporada.

Protocolo de comunicación del DHT22:
El protocolo de comunicación del sensor DHT22 es un protocolo propietario similar al conocido 1-wire de Dallas semiconductor aunque en el caso del DHT22 cada sensor tiene que disponer de su propio pin de datos no pudiendo compartir el mismo bus más de un sensor.

El microcontrolador empieza la comunicación configurando el pin RF3 como salida y poniendo el nivel en alto (Vcc), después envia la señal de Start estableciendo el nivel bajo durante al menos 18ms y nuevamente a nivel alto entre 20us-40us. Seguidamente se pone el pin como entrada y esperamos la respuesta del sensor que establecerá un nivel bajo durante 80us y un nivel alto durante otros 80us. Ahora el sensor ya está preparado para enviar la información de humedad y temperatura. El sensor enviará 5 bytes de información (40 bits) seguidos. Una vez termina la transmisión de los 40 bits el sensor pone el bus a nivel bajo durante 50us y luego a nivel alto para liberarlo y entrar en modo de bajo consumo hasta que en el microcontrolador envíe de nuevo la señal de Start.

La información de temperatura y humedad está estructurada de la siguiente manera en los 40 bits:
  • Byte 1: Parte entera de humedad relativa
  • Byte 2: Parte decimal de la humedad relativa
  • Byte 3: Parte entera de la temperatura
  • Byte 4: Parte decimal de la temperatura
  • Byte 5: Byte de paridad o checksum
El checksum se utiliza para comprobar que los bits recibidos no contienen errores de transmisión. Se calcula sumando los 4 bytes de humedad y temperatura y el resultado de esta suma tiene que ser igual al byte de checksum para que la transmisión de datos sea correcta.

El sensor puede medir temperaturas negativas. Para expresar una temperatura negativa utiliza el bit más significativo de la parte entera enviando un '1' y envía un '0' si quiere expresar números positivos.

El protocolo para enviar los bits por parte del sensor es la siguiente:
  • Formato Bit '0': 50us en nivel bajo y 26us en nivel alto
  • Formato Bit '1': 50us en nivel bajo y 70us en nivel alto
La secuencia completa de la transmisión sería la siguiente:

Flowchart para la lectura del sensor DHT22:


Implementación: 
  • Diagrama FSM:

Para poner en funcionamiento el sensor hay que pulsar el botón RB0. Si no detecta el sensor se muestra un mensaje de error por el LCD y por el Terminal Virtual. si detecta el sensor muestra cada 2 segundos (0,5Hz) la información de humedad y temperatura actual. Para volver al modo Idle solo hay que pulsar de nuevo el botón RB0 y el sensor y el envió de los datos se detiene.

  • Esquema Proteus:

El esquema para simular el funcionamiento del sensor DHT22 con Proteus está basado en la placa de pruebas DM240313 e incluye el propio sensor,tres pulsadores, 7 LEDs una pantalla LCD 16x2 y un terminal virtual que simula un puerto COM para la comunicación USART.




  • Sensor en funcionamiento en Proteus:


  • Sensor en funcionamiento en placa de pruebas DM240313:

ċ
DHT22.cof
(129k)
Alberto Gómez,
19 jul 2016, 10:24
ċ
DHT22.pdsprj
(36k)
Alberto Gómez,
19 jul 2016, 10:24
Comments