domenica 15 gennaio 2023

SENSORE DI TEMPERATURA E UMIDITA' DHT11 E DHT22

Il DHT11 e DHT22 sono sensori di temperatura e umidità relativa che possono essere utilizzati per misurare queste condizioni ambientali.

Entrambi i sensori sono progettati per essere facili da utilizzare con Arduino e altre schede microcontrollore, ma ci sono alcune differenze tra i due.

Il DHT11 è un sensore economico e facile da utilizzare, ideale per progetti di base o per l'uso in ambienti con temperature e umidità relativa stabili. Ha un'accuratezza inferiore rispetto al DHT22, ma è più economico e consuma meno energia.




Il DHT22, noto anche come AM2302, è un sensore più preciso e versatile rispetto al DHT11. Ha una maggiore gamma di misura per la temperatura e l'umidità relativa, e una maggiore accuratezza. Inoltre, è in grado di funzionare in una gamma più ampia di temperature e umidità relativa.




Per collegare il sensore DHT11 o DHT22 ad Arduino, è necessario utilizzare i pin di alimentazione, di dati e di GND. Il pin di alimentazione va collegato alla alimentazione (3-5V), il pin di dati va collegato ad un pin digitale dell'Arduino e il pin GND va collegato al GND dell'Arduino.


In particolare per il DHT11, essendo un sensore a bassa potenza, non richiede resistenze di pull-up sulla linea dati, mentre per il DHT22 è necessaria una resistenza di pull-up da 10kOhm tra la linea dati e la alimentazione.

Ecco un esempio di come collegare il sensore DHT11:

  • Pin 1 (Vcc) al 3-5V di Arduino
  • Pin 2 (Data) ad un pin digitale di Arduino (esempio: 2)
  • Pin 3 (NC) non utilizzato
  • Pin 4 (GND) al GND di Arduino

Ecco un esempio di come collegare il sensore DHT22:

  • Pin 1 (Vcc) al 3-5V di Arduino
  • Pin 2 (Data) ad un pin digitale di Arduino (esempio: 2) e una resistenza di pull-up da 10kOhm tra questo pin e la alimentazione
  • Pin 3 (NC) non utilizzato
  • Pin 4 (GND) al GND di Arduino

In entrambi i casi è importante rispettare la polarità delle connessioni per evitare danni al sensore o alla scheda Arduino.

Per leggere i valori di temperatura e umidità dal sensore, è possibile utilizzare una libreria come la DHT sensor library, che semplifica la comunicazione tra l'Arduino e il sensore. Una volta che i valori sono stati letti, è possibile utilizzare un display LCD I2C per visualizzarli.
Ecco un esempio di codice per misurare la temperatura e l'umidità con un sensore DHT11 e visualizzare i valori su un display LCD 16x2 I2C:
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); lcd.setCursor(0, 1); lcd.print("Hum: "); lcd.print(h); lcd.print(" %"); delay(2000); }

In questo esempio, si utilizza la libreria DHT per leggere i valori di temperatura e umidità dal sensore DHT11 e la libreria LiquidCrystal_I2C per la comunicazione con il display LCD. Il codice imposta la connessione con il display LCD, legge i valori di temperatura e umidità dal sensore DHT11 e li visualizza sulla prima e seconda riga del display LCD.

In generale, il DHT11 e DHT22 sono entrambi sensori affidabili e facili da utilizzare per misurare la temperatura e l'umidità relativa.

La scelta tra i due dipende dalle esigenze specifiche del progetto e dall'accuratezza richiesta. Utilizzando questi sensori in combinazione con un display LCD, è possibile creare progetti interessanti come un sistema di monitoraggio dell'ambiente, un sistema di controllo dell'irrigazione o un sistema di allarme per umidità eccessiva.

E PER MISURARE IL PUNTO DI RUGIADA?

Il punto di rugiada è la temperatura alla quale l'aria diventa satura di umidità, cioè quando la pressione della vapore acqueo nell'aria è uguale alla pressione del vapore acqueo alla temperatura di rugiada.
Il punto di rugiada è importante perché a temperature inferiori, l'acqua condensa sulla superficie fredda, formando rugiada o condensa, questo può essere un problema in alcune situazioni, come ad esempio nei sistemi di raffreddamento.
Per calcolare il punto di rugiada è possibile utilizzare una formula nota come "formula di Magnus-Tetens" o "formula di Magnus".
Questa formula utilizza la pressione atmosferica, la temperatura e l'umidità relativa per calcolare la pressione del vapore acqueo nell'aria.
La formula di Magnus-Tetens è:
Td = (243.04*(log(rh/100) + ((17.625T)/(243.04 + T)))/(17.625 - log(rh/100) - ((17.625T)/(243.04 + T)))
Dove:
Td = punto di rugiada in gradi Celsius
T = temperatura in gradi Celsius
rh = umidità relativa in percentuale
Per utilizzare questa formula è necessario avere i valori di temperatura e umidità relativa, che possono essere letti dal sensore DHT11 o DHT22, e la pressione atmosferica. In caso non fosse disponibile la pressione atmosferica si può utilizzare una pressione standard di 1013hPa.
Una volta che si ha il punto di rugiada, si può utilizzare questo valore per prendere decisioni sulle condizioni ambientali, come ad esempio accendere un sistema di riscaldamento o di deumidificazione, o per evitare condensa in apparecchiature delicate.
Ecco un esempio di codice per visualizzare il punto di rugiada su un display LCD 16x2 I2C utilizzando i valori di temperatura e umidità relativa letti dal sensore DHT11 o DHT22:

#include <DHT.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); // Calcolare il punto di rugiada utilizzando la formula di Magnus-Tetens double Td = (243.04*(log(h/100) + ((17.625*t)/(243.04 + t))))/(17.625 - log(h/100) - ((17.625*t)/(243.04 + t))); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); lcd.setCursor(0, 1); lcd.print("Dew point: "); lcd.print(Td); lcd.print(" C"); delay(2000); }

In questo esempio, si utilizzano le librerie DHT e LiquidCrystal_I2C per leggere i valori di temperatura e umidità dal sensore DHT11 o DHT22 e per comunicare con il display LCD.
Inoltre, si utilizzano la formula di Magnus-Tetens per calcolare il punto di rugiada utilizzando i valori di temperatura e umidità relativa. Il codice visualizza i valori di temperatura e punto di rugiada sulla prima e seconda riga del display LCD.
Si noti che l'espressione utilizzata per calcolare il punto di rugiada è valida solo per pressioni atmosferiche standard. In caso la pressione atmosferica non sia costante, occorre utilizzare una formula più complessa che tiene conto della pressione atmosferica rilevata.


Nessun commento:

Posta un commento