DHT11. Registro de valores nulos [SOLUCIONADO]

Hola a todos:

Estoy teniendo problemas con un sistema que consta de un Arduino Nano conectado a un DHT11. Creo que los he conectado correctamente (resistencia de 10 kOhms incluida. De hecho, el primer día funcionó, así que creo que las conexiones estarán bien). En cualquier caso, no dejo de recibir valores de cero en las mediciones de temperatura y humedad, usando el ejemplo que viene con la librería de DHT. Da igual la librería que utilice, el problema persiste.

¿A alguien le suena este problema y me puede ayudar? He encontrado a más gente que le pasa, pero sus soluciones no me han servido. No tengo un multímetro a mano para comprobar las conexiones.

Gracias de antemano.

Hola PabloViGar, seguramente has probado de todo. Asi que poco hay para decirte. Entiendo que has usado los ejemplos provistos en las librerías, asi que eso descarta error de programa. Si estas usando además la R de 10K pull-up, con el sensor a 5V y GND poco queda para aconsejarte, salvo que consideres que en algún momento o lo quemaste o vieno dañado.

Solo para repasar las cosas, mira este tutorial En este tutorial no usan resistencia PULL UP asi que prueba a ver qué ocurre?

surbyte: Hola PabloViGar, seguramente has probado de todo. Asi que poco hay para decirte. Entiendo que has usado los ejemplos provistos en las librerías, asi que eso descarta error de programa. Si estas usando además la R de 10K pull-up, con el sensor a 5V y GND poco queda para aconsejarte, salvo que consideres que en algún momento o lo quemaste o vieno dañado.

Solo para repasar las cosas, mira este tutorial En este tutorial no usan resistencia PULL UP asi que prueba a ver qué ocurre?

Hola:

He probado con más de un DHT11, con el mismo resultado, así que quemado diría que no está. En cuanto al tutorial que me linkeas, hasta donde yo sé, el tipo de sensor que utiliza lleva ya incorporada la resistencia.

Probaste el código ? Te da el mismo problema?

Acabo de probarlo y sigo registrando valores de cero. He probado tanto en pin con la resistencia como en pin sin ella.

Entonces el sensor esta dañado. No hay manera que no funcione.

Acabo de probar el montaje de la fotografía adjunta con un sensor nuevo y el siguiente código:

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 3     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor for normal 16mhz Arduino
//DHT dht(DHTPIN, DHTTYPE);
// NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
// might need to increase the threshold for cycle counts considered a 1 or 0.
// You can do this by passing a 3rd parameter for this threshold.  It's a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
DHT dht(DHTPIN, DHTTYPE, 6);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHTxx test!");
 
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");
}

La respuesta ha sido la siguiente:

DHTxx test!
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
Humidity: 2.00 % Temperature: 0.00 *C 32.00 *F Heat index: 24.99 *F
...
...

Que te había dicho, sensor dañado.. no hay modo que no funcione. Realmente trabajan bien.

Pues ese ha sido el resultado con un sensor nuevo y no estamos a 2ºC y 0% de humedad, así que no sé cuál puede ser el problema.

Acabo de probar con 4 sensores y ninguno me da unos valores razonables de temperatura ni humedad.

Cambia de librería.

Solucionado.

El problema era que el sensor no era un DHT11, como yo había comprado, sino un DHT22 (AM2302). Ha sido cambiar la definición del sensor y listo.