Ciao a tutti, non sto proprio facendo il controllo per la temperatura di rugiada ma più o meno l'ambito è lo stesso. Sto giocando con l'arduino relay shield e un DHT22 (sensore di temperatura e umidità).
Così ho pensato ad uno skecth di Arduino che legga l'umidità e la temperatura dell'aria e, quando si avvicina al punto di rugiada, chiuda un relay a cui è collegata la fascia anticondensa: ne ho impostati due di relay, il 5 e il 6, volendo uno dei due si può disabilitare.
Ho impostato anche una temperatura massima (25°C) oltre la quale i relay non si attivano.
Codice:
/* Dew Point controller
HW:
- Arduino UNO
- Arduino Relay Shield
- DHT22 (AM2302)
SW:
- Adafruit Sensor: https://github.com/adafruit/Adafruit_Sensor
- DHT22 library: https://github.com/adafruit/DHT-sensor-library
Simone Martina - 2018/05/02
https://creativecommons.org/licenses/by/4.0/
*/
#include <DHT.h>;
//Max temperature
const int maxTemp = 25;
//Pause between readings
const long intervallo = 300000; //5 minutes
//Constants
const int DHTPIN=4; // DHT22 Pin
const int RELAY5=5;
const int RELAY6=6;
// initaliaze variables
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino
double hum; //Stores humidity value
double temp; //Stores temperature value
void setup()
{
Serial.begin(9600);
pinMode(RELAY5,OUTPUT);
pinMode(RELAY6,OUTPUT);
dht.begin();
digitalWrite(RELAY5,LOW);
digitalWrite(RELAY6,LOW);
}
void loop()
{
//Read data and store it to variables hum and temp
hum = dht.readHumidity();
temp = dht.readTemperature();
//calculate dew point
double gamma = log(hum / 100) + ((17.62 * temp) / (243.5 + temp));
double dp = 243.5 * gamma / (17.62 - gamma);
//Print temp and humidity values to serial monitor
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.print(" °C, Dew point: ");
Serial.print(dp);
Serial.print(" °C: ");
if(temp < maxTemp && temp < dp) {
Serial.println("Relays ON");
digitalWrite(RELAY5, HIGH);
digitalWrite(RELAY6, HIGH);
} else {
Serial.println("Relays OFF");
digitalWrite(RELAY5, LOW);
digitalWrite(RELAY6, LOW);
}
delay(intervallo); //Delay 5 minutes
}
Nella speranza che sia utile.
_________________
Simone Martina(a.k.a. gaeeb)- - - - - - - - - - - - - - - - - - - -
Gruppo Astrofili Edward Emerson Barnard
Home Page: www.gaeeb.org
Facebook: facebook.com/gaeeb
Twitter: twitter.com/gaeeb_org
autocostruttite.wordpress.com