DHT22 real time

Buongiorno a tutti, sto facendo un progettino con il sensore DHT22.
Nessun problema per quanto riguarda collegamenti e programmazione, ma qualcosa mi turba.
Il prototipo che ho costruito funziona con Atmega standalone. Quest'ultimo va in sleep per circa 1 minuto, poi si sveglia e trasmette al PC via wireless la lettura.
Stanotte l'ho lasciato girare per vedere stamattina i valori rilevati e qualcosa non va.
I caloriferi di notte sono spenti e partono alle 6:00.
Stamattina alle 7:00 il mio DHT22 segnava ancora 17.60 gradi nonostante il termostato a casa era attorno ai 20 (il circuitino l'ho messo apposta vicino al calorifero)
Ho analizzato anche le altre letture ottenute la notte.
Mi da l'impressione che quella che trasmette non sia la temperatura di quel momento ma qualcosa in memoria.
Dal datasheet ho estrapolato questa frase:
"Temperature and humidity values are each read out the results of the last measurement For
real- time data that need continuous read twice, we recommend repeatedly to read sensors, and each read sensor interval is greater than 2 seconds to obtain accuratethe data."

Come libreria uso questa:

A che intervallo hai impostato la lettura periodica ?
Hai provato ad impostarla a 30 sec./1min., invece che ogni 2 sec. (intervallo minimo) ?
Hai provato a confrontare le letture effettuate simultaneamente con un altro rilevatore ?
Fammi sapere.....

La lettura la faccio già ogni minuto.
Quello che non capisco dal DS è se la lettura la fa quando Atmega chiede il dato o se il sensore fa la lettura comunque ogni 2", converte e poi quando atmega chiede trasferisce il dato che ha in memoria.
Se fosse vera la seconda ipotesi quando io chiedo al DHT la lettura dopo 1 minuto (T0+60") lui mi da la temperatura di T0+2"
Non so se mi sono incasinato spiegando.

Ma se AtMega va in sleep, il dht non è alimentato finchè non si sveglia la MCU. Non è che leggi subito, senza lasciare il tempo al sensore dht di "scaldarsi" ? Avrà necessità di un suo "tempo" per fare lettura, penso.

Il DHT è sempre alimentato, quindi non penso debba scaldarsi. E' il bus dell'MCU che va in sleep.

mi aiutate a comprendere questa frase?

"the temperature and humidity data read by the host from the AM2302 is always the last measured value, such as the two measurement interval is very long, continuous read twice to the second value of real- time temperature and humidity values while two readtake minimum time interval be 2S"

Io la intendo che il sensore ha un registro interno dove memorizza il valore, quando gli chiedi dati tu leggi quello. E quel registro pare aggiornato ogni 2 secondi. Almeno io la interpreto così.

Invece sai io cosa penso?
Immediatamente dopo la lettura del dato da parte del microcontrollore il sensore converte ancora temperatura e umidità in digitale, tiene il dato immagazzinato fino alla richiesta di lettura dal proc.
Quindi se chiedo la lettura ogni minuto leggo quella di 1' + 2" fa.
Questo però non spiega l'enorme differenza tra 17,5 e 20.
Stasera indago meglio.

Non puoi banalmente fare 2 letture ogni volta e tenere buona la seconda?

... oppure passare ad un SHT31-D, che oltre ad essere piu preciso e stabile del DHT, dura anche di piu ? ... :wink:

SukkoPera:
Non puoi banalmente fare 2 letture ogni volta e tenere buona la seconda?

Infatti ora sto facendo prove in tal senso.
Non mi convince comunque. Sopra il calorifero mi segna una temperatura piu' bassa che non appoggiandolo al centro della stanza sul tavolo.
Se poi tocco il sensore per controllare qualcosa e poi riaccendo parte da 22 gradi e ci vogliono 10 minuti perché mi segni la temperatura ambiente che e' circa 20,5 gradi.

Etemenanki:
... oppure passare ad un SHT31-D, che oltre ad essere piu preciso e stabile del DHT, dura anche di piu ? ... :wink:

Per l'uso che devo farne (statistiche e ossarazione temperatura/umidita' nelle varie stanze) speravo che il DhT22 fosse sufficiente

Il problema è che ce ne sono in giro un sacco di copie cinesi più o meno ben riuscite. Ad esempio io stesso ho un paio di DHT21, presi in tempi diversi in posti diversi che riportano l'umidità palesemente sottostimata.

Al contrario, l'unico DHT22 che ho sembra dare valori sensati.

L'unico modo per avere (quasi) certezza è prenderli da rivenditori seri (RS, Mouser, Digikey, ecc...), ma costeranno di più, oppure accontentarsi.

Dopo svariate prove e due DHT22 diversi posso concludere che per assurdo, mettere il sensore sopra il calorifero crea esattamente l'opposto di quello che ci si aspetta: la temperatura cala.
Non so il perché, forse l'aria impercettibile che sale dal termosifone disturba le letture.
Ho appurato che se tengo il sensore in altri punti della stanza questo si stabilizza su valori reali e abbastanza costanti.
Non mi resta che tenerlo attivo tutta notte lontano dal termosifone e domattina verifichero' l'andamento.
Spero almeno che possa servire a qualcuno che se sta usando questi sensori eviti di piazzarli sopra una fonte di calore sperando di rilevarne la variazione.
Se qualcuno ha avuto un'esperienza simile o opposta mi faccia sapere per cortesia
Grazie

In ogni caso, a me sembra più interessante monitorare l'andamento del calore percepito "nella stanza". Del resto tu mica vivi sopra ai termosifoni :D.

Be quello sicuramente. Solo che essendo ancora in fase sviluppo e test pensavo che vicino alla fonte di calore avrei percepito meglio l'incremento della temperatura.
Nel orale utilizzo sicuramente va messo altrove

Butta i DHTxx, seriamente.
Prendi quello suggerito da Etemenanki oppure DS18B20 o BME280.
Consumano anche molto meno in standby.