DHT22 blocco lettura e valori molto variabili umidità

Ciao,
ho messo in opera nel mio sketch la lettura del sensore DHT22, vi allego il pezzettino di programma atto alla lettura, copiato dall'esempio della libreria; però mi accadono 2 cose strane: casualmente, dopo minuti, o anche giorni, il valore visualizzato nella variabile diventa: nan (presumo un errore di lettura?)
Avevo comprato 2 sensori, li scambio per le prove e quindi ripartono...
L'altra cosa strana è il valore di umidità, appena messo, ho rilevato un 80%, poi tenuto un poco il sensore in mano per scambiarlo con l'altro perchè non funzionava, e ritrovo un valore del 58% circa, è normale che cambi così tenendolo in mano? Oppure non dovrebbe variare così tanto?

Preciso che il sensore è cablato con circa 8 mt di cavo schermato (avevo letto quà sul forum che qualcuno ha provato anche con 10 e 12 metri...)

Ecco lo sketch:

if (millis() - temperature >= 5000)           // ogni 5 secondi
  {
    press_baro = (bmp.readPressure());          // leggo pressione barometrica
    temp_vano = (bmp.readTemperature());        // leggo temperatura dal sensore press
    pres_baro = (float) press_baro / 100.00;    // divido per 100 per vedere la virgola

    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    float f = dht.readTemperature(true);

    // Compute heat index in Fahrenheit (the default)
    float hif = dht.computeHeatIndex(f, h);
    // Compute heat index in Celsius (isFahreheit = false)
    float hic = dht.computeHeatIndex(t, h, false);

    temp_sala = t;                              // metto valore temp nella mia variabile
    umid_sala = h;                              // metto valore umidità nella mia variabile

    temperature = millis();                     // azzero contatore
  }

le prime 3 istruzioni sono riferite ad altro sensore temperatura e pressione barometrica.

Grazie per l'aiuto

Ciao,
vi do un aggiornamento, la visualizzazione della temperatura e umidità è casuale, a volte ci sono i dati reali, a volte appare la scritta nan.
Avevo messo una resistenza di pullup al cavo dati, da 10K, poi sostituita con 4,7K come letto in qualche post, data la lunghezza del cavo, ma non è cambiato nulla.

Grazie

La visualizzazione della temperatura e umidità NON E' mai casuale. Il DHT22 è un sensore digitale e se trasmette correttamente vedi i dati mentre se la trasmissione è disturbata oppure incompleta mostra nan.
Intanto comincia dall'inizio togliendo i cavi e collegandolo vicino ad Arduino: se le cose non cambiano hai problemi sulla libreria e sul programma. Quando tutto sarà a posto potrai metterci un cavo e potrai arrivare anche a decine di metri.

steve-cr:
La visualizzazione della temperatura e umidità NON E' mai casuale. Il DHT22 è un sensore digitale e se trasmette correttamente vedi i dati mentre se la trasmissione è disturbata oppure incompleta mostra nan.
Intanto comincia dall'inizio togliendo i cavi e collegandolo vicino ad Arduino: se le cose non cambiano hai problemi sulla libreria e sul programma. Quando tutto sarà a posto potrai metterci un cavo e potrai arrivare anche a decine di metri.

Ciao,
non avevo pensato a montarlo direttamente su arduino, l'ho appena fatto, vedo cosa fa durante la giornata :wink:
Dico che i dati sono casuali perchè è capitato di leggere valori irreali, come 15 gradi (quando adesso si sta fra i 25 e i 32), ma molto probabilmente è dato da errori nella trasmissione? Magari solo un bit errato?
La resistenza di pull up io l'ho messa lato sensore (mi riferisco a quando era collegato col cavo lungo), è corretto? O forse era meglio metterla lato arduino?
Attendo la giornata per vedere come si comporta e vi riferisco.
Grazie mille

Penso di poter già affermare che il problema sia il cavo, per ora sempre tutto ok, le letture sono veritiere e mai una mancata...
Ora devo capire qual è il problema del cavo, sto utilizzando un cavo chiamato per antifurto 6X0,22 + 2X0,50 naturalmente schermato, lo schermo è messo a gnd dal lato arduino e scollegato dal lato sensore.
Detto cavo passa vicino a una scatola dove passa anche tensione di rete, può essere questo?
Grazie

Sull'alimentazione del DHT (vicino al DHT stesso) metti anche un elettrolitico 47µF, vuoi mai che senta anche un'alimentazione traballante che manda in crisi il suo ADC.

Grazie,
ci avevo pensato anche io, l'ho messo, ma non cambia nulla, la lettura col cavo diventa random...
L'unica mi sa che è provare un cavo schermato diverso...

Potresti provare con un citofonico o anche un cat5 però con lo schema allegato. Io lo uso da sempre e funziona bene. La resistenza l'ho abbassata a 470 ohm.

Ciao,
scusate la tarda risposta, questa settimana ero in ferie...
Non sapevo di quello schemino, interessante :smiley:
Così bassa la resistenza? Sto provando con 1K, vediamo il responso, altrimenti proverò con 2 wire.
Grazie