SENSORE DHT11 PER TEMPERATURA E UMIDITÀ

Tutorial per Illustrare il Funzionamento del Sensore di Umidità e Temperatura Ambiente siglato DHT11…

 

 

 
 




 

INTRO

Il sensore DHT11 viene usato per misurare la temperatura e l’umidità ambientale fornendo un segnale digitale con valore che dipende da queste due grandezze fisiche. Grazie al suo segnale digitale calibrato e un apposito sistema di acquisizione dati garantisce un dato affidabile e stabile nel tempo. Per la misura della umidità utilizza un metodo resistivo mentre utilizza una NTC (termoresistenze con coefficiente di temperatura negativo) per la misura della temperatura. Questi due sensori vengono eccitati con un apposito circuito e la tensione da essi generata viene convertita da un ADC ad 8 bit che permette di avere una risposta rapida e un segnale senza rumore.

Il sensore ha il seguente aspetto:

Oltre all’ADC all’interno di questo sensore vi è un microcontrollore che contiene i coefficienti di calibrazione per la misura della temperatura e dell’umidità, quindi come riportato sul datasheet, ogni sensore è testato in modo tale da caricare nel software i corretti coefficienti di conversione.

È un sensore a basso costo (circa un euro) a basso consumo e permette di trasmettere il segnale su cavo fino a 20 metri. Tutte queste caratteristiche lo rendono ideale per una gran varietà di progetti.

 




 

CARATTERISTICHE

Anche se vi sono 4 pin solo 3 sono utilizzati e il pinout è solitamente stampato sul retro del sensore. Si ha VCC ovvero la tensione di alimentazione positiva, GND la tensione di alimentazione negativa o massa e il segnale DATI.

Le caratteristiche elettriche descrivono la tensione di alimentazione e la corrente assorbita e si ha una tensione minima di 3V e massima di 5.5V con una tensione consigliata di 5V. La corrente assorbita è intorno gli 1.5mA se il sensore sta misurando il dato di temperatura o umidità mentre è di circa 120uA se il sensore è in standby, ovvero aspetta il segnale di start dal microcontrollore.

Le caratteristiche di misura dei due sensori sono:

L’umidità relativa è un indice di quantità di vapore contenuta nell’aria. È definito come il rapporto tra la densità del vapore contenuto nell’aria e la densità dell’aria satura di vapore. 100% significa che l’umidità è la massima possibile mentre 0% significa che non vi è vapore in aria, quindi aria secca.

Quindi il range di misura della umidità va da un minimo di 20%RH ad un massimo di 90%RH con una risoluzione di 1% che vuol dire che il sensore non discrimina variazioni minori dell’1% di RH. L’accuratezza è pari a 4%RH, quindi il sensore potrebbe sbagliare di questo valore sia in positivo che in negativo e inoltre se vi è una variazione brusca di umidità il sensore impiega 10 secondi circa per rilevarla.

Per quanto riguarda la temperatura il range di misura va bene sono per temperature positive e inferiori a 50°C con una risoluzione di 1°C e tempo per rilevare le variazioni brusche di temperature di 13 secondi circa.
 

PROTOCOLLO DI COMUNICAZIONE

La connessione tra microcontrollore e sensore viene così fatta:

Per la comunicazione viene usato un formato a singolo bus. Per una comunicazione ci vogliono circa 4ms e il dato è formato da 40bit con il ordinati dal MSB al LSB. Il formato dei dati è composto da 8bit per il dato di umidità integrale, 8bit per la parte decimale del dato di umidità, 8bit per il dato di temperatura integrale, 8bit per la parte decimale del dato di temperatura e infine 8bit di controllo.

Per avviare la comunicazione il microcontrollore deve inviare lo start, il sensore esce dalla modalità standby e inizia a comunicare con il microcontrollore, finita la comunicazione ritorna in standby.

Il timing della linea data per avviare la comunicazione è il seguente:

Se non vi è comunicazione il bus sta a livello logico alto e quando il microcontrollore vuole avviare una comunicazione fa una transizione da alto a basso e mantiene il livello logico basso per 18ms, poi porta il livello logico alto e aspetta che il sensore risponda portando a sua volta il bus a livello logico basso per 80uS e poi 80uS a livello logico alto. Dopo questi 160uS parte la comunicazione dei dati ovvero i 40bit vengono trasmessi.

Se si ha un bit 1 o un bit 0 logico si identifica con una codifica temporale, ovvero:

Tra un bit e l’altro vi è un livello logico basso di 50uS poi, lo 0 logico del bit viene identificato con uno stato alto di durata 26-28uS mentre l’1 logico del bit viene identificato con uno stato alto del bus di durata 70uS.

Anche l’ultimo bit del dato è seguito da uno stato basso di durata 50uS e successivamente il bus viene mandato  a livello logico alto grazie alla resistenza di pull-up.




 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *