En el día de hoy te voy a explicar como usar el sensor de temperatura y humedad relativa comúnmente utilizado con Arduino.
Si lo deseas aquí te dejo el vídeo en el que te enseño a medir temperatura y humedad con el sensor dht11
Caracteristicas técnicas del dht11:
Alimentación: 3´5v-5´5v
Consumo: 2´5mA
Tipo de salida: Digital
Temperatura:
Rango de 0ºC – 50ºC
Precisión: ±2ºC a 25ºC
Resolución: 1ºC (8 bit)
Humedad relativa:
Rango de 20% a 90%RH
Precisión del ±5%RH entre 0ºC – 50ºC
Resolución: 1% RH
Recomendaciones para usar el dht11
La resistencia pull-up de 5KΩ que hay que conectar entre Vcc e I/O es para una longuitud de cable inferior a 20m para distancias mayores poner una resistencia proporcional.
Es recomendado tomar medidas cada 5 segundos, ya que si bajamos este tiempo los datos obtenidos pueden no ser precisos.
Cuando estés alimentando a 3´5 voltios ten en cuenta que el cable de alimentación no debe tener una longitud mayor a 20cm para no tener problemas de caída de tensión.
*Si queremos mayor rango y precisión aconsejo usar el dht22
¿Cómo transmite los datos el sensor dht11?
Este sensor transmite los datos de forma digital, gracias a la circuitería interna ya que lleva incorporado un conversor analógico digital.
Utiliza 5 Bytes o lo que es lo mismo 40 bits dispuestos de la siguiente manera.
8 bits parte entera temperatura + 8 bits parte decimal temperatura + 8 bits parte entera humedad + 8 bits parte decimal humedad+ 8 bits de chequeo (comprueba los bits a transmitir sumando los 4 bytes anteriores.
Fuente datasheet Mouser electronics https://www.mouser.com/ds/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf
El protocolo de comunicación entre el microcontrolador en este caso Arduino y el sensor sería como se muestra en la figura anterior.
Cronograma de señales entre el Arduino y dht11
En el que el mcu envía una señal de start poniendo a nivel bajo el pin de datos durante un tiempo de al menos 18ms y acontinuación lo pone a nivel alto entre 20-40µs esperando la respuesta del sensor a continuación el sensor pone la línea del bus I/O a nivel bajo durante 80µs para a continuación poner a nivel alto el bus I/O durante otros 80µs a continuación se transmiten los 40 bits anteriormente comentados, como puedes observar en la figura en la que en un bit 0 la línea esta el mismo tiempo en alto y después en bajo y cuando se transmite un bit 1 el bus I/O esta un tiempo a nivel bajo y el doble a nivel alto. Cuando termina el bus se pone otra vez a nivel alto como en el estado inicial.
Para evitar tener que controlar nosotros directamente realizar estas lecturas y escrituras de las señales y hacer la conversión de los datos existe lo que se llama librería ¡Benditas librerías! Ya que nos facilitan muchísimo la vida a la hora de usar este sensor como veremos al final en el programa del sensor de temperatura y humedad relativa.
Patillaje del sensor dht11:
Lo puedes encontrar en dos formatos con 3 patillas y con cuatro, pero el funcionamiento es el mismo.
Formato 4 patillas: Necesita de la conexión de una resistencia de 5KΩ entre Vcc y la patilla I/O
1: Alimentación Vcc 3,5 voltios – 5´5 voltios
2: Datos entrada/salida
3: No conectado
4: Gnd masa.
Formato 3 patillas PCB:
Este formato trae incorporada la resistencia de 5KΩ entre Vcc e I/O por lo tanto no necesita de su conexión.
1: Alimentación Vcc 3,5voltios – 5´5voltios
2: Datos entrada/salida
3: Gnd masa
Si quieres convertirte en un experto en Arduino pincha en el siguiente botón
Conexionado del DHT11 a Arduino UNO
- Como la resistencia de 5000Ω no está normalizada tendrás que poner dos en paralelo de 10000Ω.
Tanto el esquema de conexionado como el programa para Arduino junto con los demás esquemas y programas lo tienes para descargar en la zona de descargas.
Debes registrarte para tener acceso de forma gratuita
Programa de Arduino para medir temperatura y humedad.
Lo primero que debes hacer si no tienes instalada la librería del DHT11 es instalarla como se muestra en la figura.
Programa:
/*AUTOR: JOSE ANTONIO RIVERA MORALES *FECHA: 8-8-2019 *www.pasionelectronica.com * Este programa lee el sensor de temperatura y humedad dht11 y lo muestra en pantalla * a traves del monitor serial */ #include <DHT.h>//incluimos las librerias del sensor dht #include <DHT_U.h> int sensor=2;//Indicamos el pin donde se conectara el sensor int temperatura;//variable para almacenar el dato de la temperatura int humedad;//variable para almacenar el valor de la humedad DHT dht11 (sensor,DHT11);//Creamos un "objeto" o variable de tipo DHT definido dentro de la librerÃa y el tipo de sensor void setup() { Serial.begin(9600);//Inicializo el monitor serie dht11.begin();//Inicializamos nuestro sensor } void loop() { delay(5000);//tomamos medidas cada cinco segundos como indica el datasheet de este sensor humedad=dht11.readHumidity();//leemos la humedad y la guardamos en la variable mediante la funcion readHumidity temperatura=dht11.readTemperature();//leemos la temperatura y la guardamos en la variable mediante la función readTemperature Serial.print("Temperatura ");//Imprimimos la temperatura y la humedad por el monitor serie Serial.print(temperatura); Serial.println("ºC"); Serial.print("Humedad "); Serial.print(humedad); Serial.println("%"); }
Si al compilar te da el siguiente error:
\Arduino\libraries\DHT_sensor_library/DHT_U.h:36:29: fatal error: Adafruit_Sensor.h: No such file
exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.
Debes instalar la siguiente librería:
adafruit unified sensor.
Si te ha gustado este articulo te agradecería enormemente que lo compartieras en las redes sociales, aquí debajo tienes los botones para hacerlo.?