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:
// 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 asciendedelayMicroseconds(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 salidaPORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PINSerial.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ñalesPORTC &= ~_BV(DHT11_PIN); // Llevar abajo DATA_PIN por 18msdelay(18);PORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PIN por 18msdelayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN); // Establecer DATA_PIN como entradawhile (PINC & _BV(DHT11_PIN)); // Espera hasta que el flanco desciendedelayMicroseconds(100);while (!PINC & _BV(DHT11_PIN)); // Espera hasta que el flanco desciendedelayMicroseconds(80);
// Recibir Datosfor (i=0; i<5; i++) {dht11_dat[i] = read_dht11_dat();}
DDRC |= _BV(DHT11_PIN); // Establecer DATA_PIN como salidaPORTC |= _BV(DHT11_PIN); // Llevar arriba DATA_PIN
// Verificar Suma de Chequeodht11_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.
Espero que les guste y sirva
EXELENTE APORTEAMIGO
ResponderEliminarFelicitaciones, excelente
ResponderEliminarLo conecte como indicaste y funciona, lastima que solo mida la temperatura al grado, tenia pensado usarlo como dataloger de condiciones ambientales. gracias
ResponderEliminarHola 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;
ResponderEliminarhttp://learn.adafruit.com/dht
Salu2
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
ResponderEliminarHola 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/
ResponderEliminarEn 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
Hola porque despues de copiarlo al arduino el codigo no me compila ''/''
ResponderEliminarHola 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?
EliminarSalu2