//Created by Barbu Vulc!
//This is an automation project for a co-generation power plant (gas turbine).
//Libraries:
#include <Servo.h>
#include <DHT.h>
// Definire tip senzor DHT
#define DHTTYPE DHT22
// Declarații pentru servomotoare
Servo servoC1; // Clapeta către atmosferă
Servo servoC2; // Clapeta către circuitul tur-retur
// Pinuri senzor și servomotor
const int pinDHTTur = 2; // Pin DHT22 pentru temperatura tur
const int pinDHTRetur = 3; // Pin DHT22 pentru temperatura retur
const int pinServoC1 = 9;
const int pinServoC2 = 10;
// Praguri de temperatură
const float pragMinTur = 75.0; // Prag minim temperatură pe tur
const float pragMaxTur = 85.0; // Prag maxim temperatură pe tur
// Obiecte DHT pentru fiecare senzor
DHT dhtTur(pinDHTTur, DHTTYPE);
DHT dhtRetur(pinDHTRetur, DHTTYPE);
// Variabile pentru poziția servomotoarelor
const int pozitieDeschis = 90; // Poziția deschis (90 de grade)
const int pozitieInchis = 0; // Poziția închis (0 grade)
void setup() {
// Inițializare DHT
dhtTur.begin();
dhtRetur.begin();
// Atașare servomotoare
servoC1.attach(pinServoC1);
servoC2.attach(pinServoC2);
// Setare poziții inițiale
servoC1.write(pozitieInchis);
servoC2.write(pozitieInchis);
// Inițializare comunicare serială (pentru debugging)
Serial.begin(9600);
}
void loop() {
// Citire temperaturi de la DHT22
float tempTur = citireTemperaturaDHT(dhtTur);
float tempRetur = citireTemperaturaDHT(dhtRetur);
// Debugging - afișare temperaturi
Serial.print("Temp Tur: ");
Serial.print(tempTur);
Serial.print(" °C, Temp Retur: ");
Serial.print(tempRetur);
Serial.println(" °C");
// Control clapete în funcție de temperatură
if (tempTur < pragMinTur) {
// Deschide circuit tur-retur, închide atmosferă
servoC1.write(pozitieDeschis);
servoC2.write(pozitieDeschis);
} else if (tempTur > pragMaxTur) {
// Deschide evacuare în atmosferă, închide circuit tur-retur
servoC1.write(pozitieInchis);
servoC2.write(pozitieInchis);
}
// Pauză pentru stabilizare
delay(2000); // DHT22 necesită o citire la fiecare 2 secunde
}
// Funcție pentru citirea temperaturii de la un senzor DHT
float citireTemperaturaDHT(DHT &senzor) {
float temperatura = senzor.readTemperature();
if (isnan(temperatura)) {
Serial.println("Eroare citire senzor DHT!");
return -100.0; // Valoare de eroare
}
return temperatura;
}