piccolo problema con DHT11

Salve ho 2 piccolissimi problemi (per mia ignoranza) con il sensore DHT11 (il mio ha solo 3 piedini).

Con la parte temperatura è stato facile,ho un termometro digitale a fianco con cui confrontarmi e mi è bastato fare una semplice calcolo (con calcolatrice da 2 euro) e mi sembra preciso(provata solo sopra lo 0)

Qui il semplice schetc

const byte ST(A5);
int SensorTemp=0;
float Temperatura=0.0;

void setup()
{
 Serial.begin(9600);
 pinMode(ST,INPUT); 
}

void loop() 
{
 SensorTemp=analogRead(ST);
 Temperatura=SensorTemp/38.0;//38.0 è il valore che leggo ad ogni grado +\- partendo da 0 gradi
 Serial.println("");
 Serial.print(Temperatura);
}

I problemi arrivano con l'umidità;

1-non ho nulla con cui confrontarmi. 2-non ho la piu pallida idea di come calcolarla. 3-non sà neppure come differenziare le letture(visto che ho un solo pin come segnale)

Due cose ...

  1. Appena puoi butta il DHT11 e prendi un DHT22

  2. Usa la libreria di Adafruit che ti permette tutte le letture e correzioni (... o studiatela per vedere come fa, se lo vuoi fare tu senza usare la libreria). La trovi, come sempre, nel "library manager" del IDE.

Guglielmo

Ciao Guglielmo non mi sento ancora pronto per le librerie.

Già è tanto che sto facendo un piccolo approccio con i pin analogici.

Di solito nel mio lavoro uso le classiche PT100 e li è facile 100 ohm corrispondono a 0 gradi poi è sufficente il tester.

Col simulatore è stato facile(faceva solo la temperatura)quindi più o meno stessa procedura,ma senza tester.

Col dht11 idem per la temperatura,non sapevo niente dei suoi parametri ma avendo un termometro digitale a fianco è stato facile fare un confronto e la semplice operazione matematica.

Con l’umidità sono in alto mare,non ho nulla di esperienza,nulla con cui fare un confronto,e sulle schede tecniche del sensore(ho trovato solo quello a 4pin…ed il mio è a 3pin…3 e 4 sono in parallelo) quindi immagino che i tempi di lettura siano diversi,ma non son neppure il punto di partenza per l’umidità.

Ma guarda che tu [u]stai sbagliando TUTTO[/u] ... i DHTxx sono sensori DIGITALI non ANALOGICI ... non puoi leggere la temperatura con un analogRead() !!! Occorre seguire un ben preciso protocollo, ricevendo i bits con determinate tempistiche ...

DEVI usare la libreria. Vai nel "*library manage*r", la installi e ti guardi gli esempi ... sono banali ... ;)

Guglielmo

P.S.: Tre pin sono nomali ... tanto in quello con quattro pin uno non è collegato !

Ti allego i datasheet così te li studi …

Guglielmo

DHT11.pdf (466 KB)

DHT22 (Humid + Temp).pdf (596 KB)

:drooling_face: :drooling_face:
Che cavolo stai dicendo Whills.(come direbbe Arnold)

ok grazie

Ci ho dato un occhiata, provo anche se non sono convinto di riuscirci.

A grandi linee se ho capito bene funziona tipo un sensore ad ultrasuoni ovviamente con tempi diversi e con letture diverse.

Una cosa non mi è chiara, nell'ultrasuono ovviamente è la velocità del suono tra quando lo invio e quando lo ricevo che mi permette ti calcolare la distanza da un oggetto,ma col DTH cosa mi fa tornare byte diversi in base alla temperatura e l'umidità???

Puso: ma col DTH cosa mi fa tornare byte diversi in base alla temperatura e l'umidità???

... la piccola MCU che è nel sensore che è programmata per prelevare dei dati analogici (temperatura ed umidità) e trasformarli in digitale con l'implementazione di un protocollo che viaggia su un pin.

Guglielmo

Puso:
Ci ho dato un occhiata, provo anche se non sono convinto di riuscirci.

Scusa è, ma dove è la difficoltà ? ? ? :o :o :o

  1. scarichi la libreria dal “library manager”

  2. all’inizio del programma metti la #include <DHT.h>

  3. segui uno dei banali esempi a corredo della libreria

Guglielmo

La difficoltà era senza libreria....tentavo solo di capire cosa faceva variare i valori.

Tento di spiegarmi. Nel sensore ad ultrasuoni è il tempo che ci mette il suono a tornare indietro che mi da una differenza. In una PT100 è una sostanza chimica nella saldatura che varia la sua resistenza in base alla temperatura.

In sta scatolinaDHT con MCU che trasforma i dati analogici in digitali(complica una cosa semplice),non capisco cosa fa la differenza.

Puso: In sta scatolinaDHT con MCU che trasforma i dati analogici in digitali(complica una cosa semplice),non capisco cosa fa la differenza.

La comodità di avere dati digitali e non analogici !!! Non ti servono ADC, non ti servono cavi speciali per i disturbi sul segnale analogico, ecc. ecc.

Guglielmo

Puso: In sta scatolinaDHT con MCU che trasforma i dati analogici in digitali(complica una cosa semplice),non capisco cosa fa la differenza.

Intanto ti voglio vedere a collegare due sensori classici (umidità e temperatura) con solo tre fili a disposizione (e con un diodo e un condensatore anche con solo due fili twisted ad almeno 100 mt).

E questo al medesimo prezzo del DHT22...

Poi, naturalmente, questo potrebbe essere a scapito della semplicità della lettura di un dato analogico e non un treno di impulsi, ma questo non è un problema tuo: carichi la libreria e poi leggi quasi come fosse un analogico. Senza libreria, specie per un non esperto, la vedo dura scrivere e leggere (si, perchè prima devi dare uno Start e poi aspettarti che il sensore risponda, e questo con rigorose temporizzazioni...).

Fai "pace" con le librerie e vivrai meglio !

DHT11, come tutti i sensori digitali, non ha SOLO un trasduttore (quelle cose che dici tu, che trasformano grandezza fisiche in grandezze elettriche) al suo interno, bensì ha anche un microcontrollore (pensalo come un piccolo arduino) che legge il trasduttore, digitalizza il dato e lo rende disponibile in qualche modo, secondo un qualche protocollo, tipo SPI, i2c, o, in questo caso, uno proprio descritto nel datasheet.

Per questo motivo devi “parlare” con l’altro microcontrollore e chiedergli il dato, non interfacciarti direttamente col trasduttore.

Il protocollo in questione, anche se semplice, è piuttosto complicato da gestire correttamente per quanto riguarda le tempistiche per cui l’uso della relativa libreria è fortemente consigliato. Anche perché qua c’è un’altra delle tue convinzioni errate: in generale usare la libreria è semplice, è farne a meno che è complicato. Per questo motivo ne esistono così tante per Arduino.

ok ho capito e ringrazio tutti per avermi fatto capire.

PS
Non ho litigato con le librerie,solo che fondamentalmente mi piace almeno avere un idea di ciò che sto facendo.

Le librerie sono utilissime e per fortuna che ci sono,ma io le vedo ancora per me, al momento solo come strumenti per esprimermi meglio.

Tipo i bambini,prima devono imparare ad emettere suoni,poi devono imparare a renderli comprensibili ad altri,poi devono imparare a comprendere i suoni emessi dagli altri,…poi devono perfezionare il tutto(e qui per fortuna ci sono le librerie).

Io diciamo che per il momento sto ancora tentando di rendere comprensibili i miei di suoni.

Puso:
Non ho litigato con le librerie,solo che fondamentalmente mi piace almeno avere un idea di ciò che sto facendo.

Ci sono cose che, senza le librerie, salvo non passare anni a studiare molto seriamente, NON arriverai mai a fare causa la complessità delle cose coinvolte.

Abituati ad usarle !

Guglielmo

finito il semaforo e finito il trenino.....lo prendo come obbiettivo(prima o poi ci salto fuori)

Ripeto, stai ragionando al contrario. Quando parti sai che la libreria X fa funzionare il sensore X in qualche modo. Bene, la usi senza farti troppi problemi.

Quando tutto funziona, se vuoi fare un passo avanti devi dire a te stesso: "Bene, ora facciamo a meno della libreria!".

2 persone guardano uno stesso oggetto solo che una vede un tondo e l’altra vede un rettangolo,eppure stanno guardando lo stesso oggetto

Certo, ma uno vede bene e l'altro vede male.

Fai come vuoi, i nostri consigli sono volti ad aiutarti ad imparare e a fartelo fare in maniera più semplice. Se preferisci complicarti la vita e magari arenarti senza arrivare da nessuna parte per la tua testardaggine, sei libero di farlo.