The Most/Recent Articles

Top Menu

This Week's/Trending Posts

SUBMIT VIDEO

Visitas

Historial

About

Hand-Picked/Curated Posts

Labels

Translate

Instagram

Copyright © Flashnews Theme. Designed by OddThemes

Hand-Picked/Weekly News

Most Popular/Fun & Sports

Headline News

Trending Videos

Popular Posts

Popular Posts

Ir al contenido principal

SENSOR DHT11 + ARDUINO: Medición de Temperatura y Humedad Relativa



Hola lect@r hoy les traigo un tutorial para hacer un Medidor de Temperatura y Humedad Relativa con Arduino y el Sensor DHT11.

Este tutorial viene con el diagrama de conexiones echo en FRITZING, como vean en la imagen dentro de la descarga, tan solo se debe alimentar y mandar el OUT del sensor a Analog PIN 0 del Arduino. 

Al igual que se ve en la siguiente imagen:



Luego subimos el siguiente código a arduino y probamos nuestro experimento;
// Lectura de Humedad y Temperatua por Sensor DHT11
// fecha 01/01/2012
// limpiado, traducido y compartido por GUILLENXT

#define DHT11_PIN 0 // Analog pin 0

byte read_dht11_dat () {
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while (!(PINC & _BV(DHT11_PIN))); // Espera hasta que el flanco asciende
delayMicroseconds(30);

if (PINC & _BV(DHT11_PIN)) 
result |= 1 << (7-i);
while ((PINC & _BV(DHT11_PIN))); // Espera hasta que el flanco desciende
}
return result;

}
void setup () {
DDRC |= _BV(DHT11_PIN); // Establecer DATA_PIN como salida
PORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PIN 
Serial.begin(19200);
Serial.println("GUILLENXT Sensor DHT11 Preparado");
}

void loop () {
byte dht11_dat[5];
byte dht11_check_sum;
byte i;

// Enviar datos de lectura de señales
PORTC &= ~_BV(DHT11_PIN); // Llevar abajo DATA_PIN por 18ms
delay(18);
PORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PIN por 18ms
delayMicroseconds(40);

DDRC &= ~_BV(DHT11_PIN); // Establecer DATA_PIN como entrada
while (PINC & _BV(DHT11_PIN)); // Espera hasta que el flanco desciende
delayMicroseconds(100);
while (!PINC & _BV(DHT11_PIN)); // Espera hasta que el flanco desciende
delayMicroseconds(80);

// Recibir Datos
for (i=0; i<5; i++) {
dht11_dat[i] = read_dht11_dat();
}

DDRC |= _BV(DHT11_PIN); // Establecer DATA_PIN como salida
PORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PIN 

// Verificar Suma de Chequeo
dht11_check_sum = dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3];
if (dht11_dat[4] != dht11_check_sum) {
Serial.println("DHT11 checksum error");
return;
}

Serial.print("Humedad Relativa = ");
Serial.print(dht11_dat[0], DEC);
Serial.print(".");
Serial.print(dht11_dat[1], DEC);
Serial.print("%; ");
Serial.print("Temperatura = ");
Serial.print(dht11_dat[2], DEC);
Serial.print(".");
Serial.print(dht11_dat[3], DEC);
Serial.println("C");
delay(2000);

}


Si tienen problemas a la hora de ver los valores en el MONITOR SERIAL revisen la velocidad introducida en la programación que coincida con la del monitor, ok.

Les dejo un video de como me quedo a mi;


Espero que les guste y sirva


Comentarios

  1. Lo conecte como indicaste y funciona, lastima que solo mida la temperatura al grado, tenia pensado usarlo como dataloger de condiciones ambientales. gracias

    ResponderEliminar
  2. Hola Daniel, puedes usar esta programación con un sensor DHT22 y modificando la librería. Este sensor es de la misma familia que el del tutorial y de mayor exactitud de medicion como para tu proyecto, te dejo un enlace que te ayudara;
    http://learn.adafruit.com/dht
    Salu2

    ResponderEliminar
  3. AMIGO LE HABLO DESDE COLOMBIA LO QUE PASA ES QUE TENGO EL SENSOR DHT 11 PERO TIENE CUATRO PATAS OSEA LA PRIMERA ES DCC LA SEGUNDA ES GND (TIERRA) Y LA TERCERA ES DC Y LA CUARTA ES LA AC LA VERDAD QUEDO PERDIDO EN LA INSTALACION DE ESTE SENSOR Y EL MONTAKEJE, USTED SOLO LO TIENE ES CON 3 PINES ME PODRIA AYUDAR CON ESA ES KE NO ENCUENTRO

    ResponderEliminar
  4. Hola Zamir Perez, lo que sucede es que usted tiene solo el sensor y mal la información del montaje, en este enlace podrá resolver sus dudas; http://rduinostar.com/documentacion/datasheets/dht11-overview/
    En este post se usa el sensor mas el circuito recomendado ya en smd y modulo listo para el montaje, por eso solo los 3 pines.
    Salu2

    ResponderEliminar
  5. Hola porque despues de copiarlo al arduino el codigo no me compila ''/''

    ResponderEliminar
    Respuestas
    1. Hola Nilser Velasco, disculpa pero sino me dices el error que sale en la parte de abajo en tu IDE no puedo hacer mucho por ayudarte, por cierto, viste en post la opción de descargar el código sin errores?
      Salu2

      Eliminar

Publicar un comentario