#include <math.h> // https://www.youtube.com/watch?v=E-2xufzj-Nw veya https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.htmlA-B-C DEĞERLERİNİN HESAP YÖNTEMİ
#include <Smoothed.h> // fark kütüphaneli sensör ve pot dengeleme
//************************************* TALEP DEĞERLERİ ***********
int KAZAN_CEL_POT_TALEP; // KAZAN_POT_anlg,KAZAN_POT_anlg=A0, siyah 50 cm 10k NTC İÇİN A-B-C DEĞERLERİ sicaklik = 1/(0.001115148+(0.000234125+(0.0000000876741*sicaklik*sicaklik))*sicaklik);
int CH_CEL_POT_TALEP; //CH_POT_anlg, CH_POT_anlg=A1
int DHWU_CEL_POT_TALEP; //DHWU_POT_anlg, DHWU_POT_anlg=A2
int HAV_CEL_POT_TALEP; //HAV_POT_anlg, HAV_POT_anlg=A3 ctrl F kelime arama
int SUN_CEL_POT_TALEP; // SUN_POT_anlg,SUN_POT_anlg= A4
int DH_KLI_CEL_POT_TALEP; //DH_KLI_POT_anlg, DH_KLI_POT_anlg=A5
// ************************************ MEVCUT OKUNAN DEĞERLER******
int KAZAN_SENS_CEL; // KAZAN_SENS_anlg,KAZAN_SENS_anlg=A6 klemens = 1
int CH_SENS_CEL; //CH_SENS_anlg, CH_SENS_anlg=A7, klemens = 2
int DHWA_SENS_CEL, DHWU_SENS_CEL; // DHWA_SENS_anlg,DHWA_SENS_anlg=A8, ,DHWU_SENS_anlg,DHWU_SENS_anlg=A9 , klemens = 3,4
int HAV_SENS_CEL; // HAV_SENS_anlg,HAV_SENS_anlg=A10 klemens = 5
int SUN_SENS_CEL; // SUN_SENS_anlg,SUN_SENS_anlg=A11 klemens = 6
int DH_KLI_SENS_CEL; //DH_KLI_SENS_anlg, DH_KLI_SENS_anlg=A12 klemens = 7
int KLI_KOND_SENS_1_CEL; //KLI_KOND_SENS_1_anlg, A13 klemens = 8
int KLI_KOND_SENS_2_CEL; //KLI_KOND_SENS_2_anlg, A14 klemens = 9
//***********************klıma***************************************************************
int KLI_BUTON = 3;
int KLIMA_Q3 = 28; // ****** POT İLE SIRALI LED KONTROLÜ İLGİNÇ https://www.youtube.com/watch?v=k8GCbiODYrw&ab_channel=ElektronikOfisim
int PELTIER = 48;
int KLI_KOND_FAN = 50;
int KLI_EVAP_FAN = 52;
//******************* MODLAR *******************
int DNMA_KORUMA, MANUEL_MOD, OTOMATIK_MOD, KONFOR_MODU, KISITLI_MOD, TATIL_MODU, PARTI_MODU; // MANUEL MOD while kullan
//*******************************DEĞİŞKENATAMALARI***********************
int durum;
int SUN_fark1 = 1, SUN_fark2 = 2;
//**********************TALEP DEĞERLERİ SANTİGRAD SAYISAL GİRDİ TANIMLAMALAR***********************
int KAZAN_Aktif_Fark = 5;
int KAZAN_talep_fark = 4; // talep fark ünitenin devreye gireceği poT
int DHW_talep_fark = 3;
int DHW_U_A_fark = 1;
int SUN_talep_fark = 4;
int HAV_talep_fark = 4; // || = VEYA, &&= VE
int CH_talep_fark = 2;
int SUN_DHWU_cel_fark = 15;
//******************* POMPALAR *******************
int KAZ_SEN_PRES, B_S_KAZ = 41; //BASINC SONDASI 2 BAR SİSTEME BİR ADET TE ANALOG BASINÇ SENSÖRÜ İLAVE EDİLEBİLİR
int SUN_SEN_PRES, B_S_SUN = 43; //BASINC SONDASI 2 BAR
int KIS_MODU, K_MOD = 4; //aç kapa anahtar
int KAZAN_Q1 = 30;
int SUN_Q2 = 32;
int K_BRULOR = 5;
int SUN_ISITICI = 6;
//******************* SELENOİD VANALAR *******************
int Vuc1_KAZAN_CH = 42; // UYV CH HATTI KONTROL VALFİ
int Vuc2_KAZAN_ORT = 44; // UYV HAVUZ VE BOYLER HAT ANA KONTROL VALFİ
int V1_KAZAN_DHW = 34;
int V2_KAZAN_HAV = 36;
int V3_SUN_HAV = 38;
int V4_SUN_DHW = 40;
//************************LEDLER***********************
int LED_Vuc1_DEVREDE = 23;
int LED_Vuc2_DEVREDE = 25;
int LED_V1_DEVREDE = 27;
int LED_V2_DEVREDE = 29;
int LED_V3_DEVREDE = 31;
int LED_V4_DEVREDE = 33;
int LED_KAZAN_Q1_DEVREDE = 35;
int LED_SUN_Q2_DEVREDE = 37;
int LED_K_BRULOR_DEVREDE = 39;
int LED_KLI_DEVREDE = 7;
int LED_KLI_SIST_HAZIR = 8;
float KAZAN_SICAKLIK;
String UYV_KONUM;
int sayac;
int SUN_AKTIF = 1; //güneş enerji sistemini kullan
int SUN_DHW_AKTIF = 1;
int SUN_HVZ_AKTIF = 1;
int SUN_DESTEK = 1; // güneş enerjisi ısıyı sonuçlandıramayacaksa katkı sağlasın mı?
Smoothed <float> KAZAN_POT_anlg;
Smoothed <float> CH_POT_anlg;
Smoothed <float> DHWU_POT_anlg;
Smoothed <float> HAV_POT_anlg;
Smoothed <float> SUN_POT_anlg;
Smoothed <float> DH_KLI_POT_anlg;
Smoothed <float> KAZAN_SENS_anlg;
Smoothed <float> CH_SENS_anlg;
Smoothed <float> DHWA_SENS_anlg;
Smoothed <float> DHWU_SENS_anlg;
Smoothed <float> HAV_SENS_anlg;
Smoothed <float> SUN_SENS_anlg;
Smoothed <float> DH_KLI_SENS_anlg;
Smoothed <float> KLI_KOND_SENS_1_anlg;
Smoothed <float> KLI_KOND_SENS_2_anlg;
void setup() {
attachInterrupt(1, KLIMA_AKTIF, RISING); //attachInterrupt(3, kesme, RISING)şeklindede yazılabilir. (2, 3, 21, 20, 19 ve 18 pinleri sırasıyla Int.0 Int.1 Int.2 Int.3 Int.4 Int.5 şeklinde kullanılabilir)
/* https://elektromanyetix.com/arduino/arduino-programlama-dili-kesmeler-ve-dis-kesmeler/ */
Serial.begin(9600);
Serial.println("Bismillahirrahmanirrahim.");
pinMode(K_MOD, INPUT); //on/of ANAHTAR İLE KONTROL EDİLECEK
pinMode(B_S_KAZ, INPUT); //BASINÇ SONDASI KAZAN DEVRELERİ
pinMode(B_S_SUN, INPUT); //BASINÇ SONDASI GÜNEŞ ENRJ. DEVRELERİ
pinMode(KLI_BUTON, INPUT);
pinMode(Vuc1_KAZAN_CH, OUTPUT); // ÜÇ YOLLU VANA ISITMA DEVRESİNE
pinMode(Vuc2_KAZAN_ORT, OUTPUT); // HAVUZ VE BOYLER HAT ANA KONTROL
pinMode(V1_KAZAN_DHW, OUTPUT);
pinMode(V2_KAZAN_HAV, OUTPUT);
pinMode(V3_SUN_HAV, OUTPUT);
pinMode(V4_SUN_DHW, OUTPUT);
pinMode(KAZAN_Q1, OUTPUT);
pinMode(SUN_Q2, OUTPUT); // SUN DEVRELERDEN UZUN SÜRE ÇIKAMAMA İHTİMALİNE KARŞI 10 DK LIK TIMERLER KONABİLİR
pinMode(K_BRULOR, OUTPUT);
pinMode(SUN_ISITICI, OUTPUT);
pinMode(KLIMA_Q3, OUTPUT); // KLIMA ÜNİTESİ
pinMode(KLI_KOND_FAN, OUTPUT);
pinMode(KLI_EVAP_FAN, OUTPUT);
pinMode(PELTIER, OUTPUT);
pinMode(LED_Vuc1_DEVREDE, OUTPUT);
pinMode(LED_Vuc2_DEVREDE, OUTPUT);
pinMode(LED_V1_DEVREDE, OUTPUT),
pinMode(LED_V2_DEVREDE, OUTPUT);
pinMode(LED_V3_DEVREDE, OUTPUT);
pinMode(LED_V4_DEVREDE, OUTPUT);
pinMode(LED_KAZAN_Q1_DEVREDE, OUTPUT);
pinMode(LED_SUN_Q2_DEVREDE, OUTPUT);
pinMode(LED_K_BRULOR_DEVREDE, OUTPUT);
pinMode(LED_KLI_DEVREDE, OUTPUT);
pinMode(LED_KLI_SIST_HAZIR, OUTPUT);
KAZAN_POT_anlg.begin(SMOOTHED_AVERAGE, 1); // son x değer
CH_POT_anlg.begin(SMOOTHED_AVERAGE, 1);
DHWU_POT_anlg.begin(SMOOTHED_AVERAGE, 1);
HAV_POT_anlg.begin(SMOOTHED_AVERAGE, 1);
SUN_POT_anlg.begin(SMOOTHED_AVERAGE, 1);
DH_KLI_POT_anlg.begin(SMOOTHED_AVERAGE, 1);
KAZAN_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
CH_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
DHWA_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
DHWU_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
HAV_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
SUN_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
DH_KLI_SENS_anlg.begin(SMOOTHED_AVERAGE, 1);
KLI_KOND_SENS_1_anlg.begin(SMOOTHED_AVERAGE, 1);
KLI_KOND_SENS_2_anlg.begin(SMOOTHED_AVERAGE, 1);
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW);
for (int a = 0; a < 3 ; a++ )
{
digitalWrite(LED_KAZAN_Q1_DEVREDE, HIGH), digitalWrite(LED_SUN_Q2_DEVREDE, HIGH), digitalWrite(LED_K_BRULOR_DEVREDE, HIGH), digitalWrite(LED_Vuc1_DEVREDE, HIGH);
digitalWrite(LED_Vuc2_DEVREDE, HIGH), digitalWrite(LED_V1_DEVREDE, HIGH), digitalWrite(LED_V2_DEVREDE, HIGH), digitalWrite(LED_V3_DEVREDE, HIGH), digitalWrite(LED_V4_DEVREDE, HIGH);
delay(500);
digitalWrite(LED_KAZAN_Q1_DEVREDE, LOW), digitalWrite(LED_SUN_Q2_DEVREDE, LOW), digitalWrite(LED_K_BRULOR_DEVREDE, LOW), digitalWrite(LED_Vuc1_DEVREDE, LOW);
digitalWrite(LED_Vuc2_DEVREDE, LOW), digitalWrite(LED_V1_DEVREDE, LOW), digitalWrite(LED_V2_DEVREDE, LOW), digitalWrite(LED_V3_DEVREDE, LOW), digitalWrite(LED_V4_DEVREDE, LOW);
delay(300);
}
} // void setup
void loop(){ //durum != 0 durum 0 değilse, durum <> 0 durum sıfırdan farklıysa
VERI_OKU();
sayac = sayac+1; Serial.print("DÖNGÜ NUMARASI: ");Serial.print(sayac);
Serial.print("\tÇALIŞMA ZAMANI:"); Serial.println (CalismaZamani(0));
if ((SUN_SEN_PRES == LOW) && (KAZ_SEN_PRES == LOW))durum = 5;
if ((DHWU_CEL_POT_TALEP < (DHWU_SENS_CEL + DHW_talep_fark)) && (CH_CEL_POT_TALEP < (CH_SENS_CEL + CH_talep_fark)) && HAV_CEL_POT_TALEP < (HAV_SENS_CEL + HAV_talep_fark))durum = 4;
if ((HAV_CEL_POT_TALEP >= (HAV_SENS_CEL + SUN_fark1) && (DHWA_SENS_CEL > 7)) && (CH_CEL_POT_TALEP < (CH_SENS_CEL + CH_talep_fark)) && (DHWU_CEL_POT_TALEP < (DHWU_SENS_CEL + DHW_talep_fark)))durum = 3; //!durum=0&&!durum=1&&!durum=2 denenecek 09/12/2020 kaldırıldı &&(SUN_SENS_CEL<(DHWU_CEL_TALEP+SUN_fark1))
if (CH_CEL_POT_TALEP >= (CH_SENS_CEL + CH_talep_fark) && (KIS_MODU == HIGH) && (KAZ_SEN_PRES == HIGH) && (DHWU_CEL_POT_TALEP < (DHWU_SENS_CEL + DHW_talep_fark)))durum = 2; // oda ısıtması &&!durum=0 dene
if (DHWU_CEL_POT_TALEP >= (DHWU_SENS_CEL + DHW_talep_fark) && ((SUN_SEN_PRES == HIGH) || (KAZ_SEN_PRES == HIGH)))durum = 1; // yerine &&!durum=0 olabilir se çok daha iyi sahada denenecek
if ((KAZ_SEN_PRES == HIGH) && ((KAZAN_SENS_CEL <= 7) || (DHWA_SENS_CEL <= 7) || HAV_SENS_CEL <= 7 || (DH_KLI_SENS_CEL <= 5 || SUN_SENS_CEL <= 5)))durum = 0;
switch (durum)
{
case 0:
Serial.print("DURUM = "), Serial.print(durum);
Serial.println(" DONMA KORUMA DEVREDE");
SUN_HAZIRLA(), DONMA_KORUMA();
break;
case 1:
Serial.print("DURUM = "), Serial.print(durum), Serial.println(" DHW DEVREDE ");
SUN_DHW(), KAZAN_DHW();
break;
case 2:
Serial.print("DURUM = "), Serial.print(durum), Serial.println(" ODA ISITMA DEVREDE");
ODA_ISITMA_CH();
break;
case 3:
Serial.print("DURUM = "), Serial.print(durum), Serial.println(" HAVUZ DEVREDE ");
SUN_HAZIRLA(), SUN_HAVUZ(), KAZAN_HAVUZ(); //örneğin SUN_SENS_CEL>=45 ve DHWU_SENS_CEL=49 derece olabilir dikkat !!!
break;
case 4:
Serial.print("DURUM = "), Serial.println(durum);
Serial.println("HERHANGİ BİR ISITMA TALEBİ YOK, SİSTEM BEKLEME KONUMUNDA");
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW);
// GÜNEŞ ENERJİ PANELİ ÇALIŞMASININ DÜZENLENMESİ Void SUN() ?????????? *************
break;
case 5:
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW); // bu case için sisteme bir buzzer eklenmeli !!!!!!!!!!!!!!!!!
digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW);
Serial.print("DURUM = "), Serial.println(durum);
Serial.println("HATA : KAZAN SU BASINCI DÜŞÜK, SİSTEM DEVRE DIŞI");
break;
default:
Serial.println();
}
LEDLER();
delay(3333); //döngü gecikmesi
} //void loop
void SUN_HAZIRLA() //bu fonksiyon sadece güneş paneli sıcaklığını istenen değerde tutmaya yönelik adı SUN_HAZIRLA()şeklide değişebilir
{
while ((SUN_SEN_PRES == HIGH) && (SUN_CEL_POT_TALEP >= SUN_SENS_CEL + SUN_talep_fark)) { //15/12/2020 DE EKLENDİ
VERI_OKU();
digitalWrite(SUN_ISITICI, HIGH);
Serial.println();
//!!!!! kazan su sıcaklı yeterli olup sirkülasyon başladığında dönen suyun düşük sıcaklığı dikkate alınmalı
Serial.println("GÜNEŞ ENERJİ ISITICI AKTİF ");
Serial.print("SUN_Q2\t="); Serial.println(digitalRead(SUN_Q2));
Serial.print("SUN_SENS_CEL\t="); Serial.println(SUN_SENS_CEL);
Serial.print("SUN_CEL_POT_TALEP\t="); Serial.println(SUN_CEL_POT_TALEP);
delay(1500);
} //while
if (SUN_SEN_PRES == LOW) {
digitalWrite(SUN_ISITICI, LOW);
digitalWrite(SUN_Q2, LOW);
digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(V3_SUN_HAV, LOW);
Serial.print("GÜNEŞ PANELİ SU BASINCI DÜŞÜK , "), Serial.println("GÜNEŞ PANELİ DEVRE DIŞI");
}
if (SUN_CEL_POT_TALEP <= SUN_SENS_CEL) {
digitalWrite(SUN_ISITICI, LOW);
Serial.println("GÜNEŞ ENERJİ ISITICI KAPALI, GÜNEŞ ENERJİ ISI TALEBİ YOK");
}
}
void UYV_KAZAN_CH() { //üç yollu peteğe
if (UYV_KONUM != "CH") {
digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(Vuc1_KAZAN_CH, HIGH);
delay(1700);
digitalWrite(Vuc1_KAZAN_CH, LOW);
UYV_KONUM = "CH";
}
}
void UYV_KAZAN_ORT() { // üç yollu havuz+kullanım suyu
if (UYV_KONUM != "ORT") {
digitalWrite(Vuc1_KAZAN_CH, LOW);
digitalWrite(Vuc2_KAZAN_ORT, HIGH);
delay(1700);
digitalWrite(Vuc2_KAZAN_ORT, LOW);
UYV_KONUM = "ORT";
}
}
void DONMA_KORUMA() {
Serial.println("####### KAZAN DONMA KORUMA BAŞLADI ########");
BRULOR(0);
if ((KAZ_SEN_PRES == HIGH) && ((KAZAN_SENS_CEL <= 7 || (DH_KLI_SENS_CEL <= 5 && SUN_SENS_CEL <= 5) || (CH_SENS_CEL <= 7) || (DHWA_SENS_CEL <= 7) || (HAV_SENS_CEL) <= 7))) { // 09/12/2020 de değişti. son üç art loop içindeki case şartından alınıp buraya eklendi
UYV_KAZAN_CH(); // üç yollu vanayı peteğe çevir
digitalWrite(V1_KAZAN_DHW, LOW);
digitalWrite(V2_KAZAN_HAV, LOW);
digitalWrite(KAZAN_Q1, HIGH);
//delay(20000); // 20 saniye biraz uzun değil mi?
if (HAV_SENS_CEL <= 7) {
UYV_KAZAN_ORT(), digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, HIGH), digitalWrite(KAZAN_Q1, HIGH);
//delay(20000); // HER ŞARTIN BEKLEMELERİ 09/12/2020 de eklendi. // 20 saniye biraz uzun değil mi?
}
if (DHWA_SENS_CEL <= 6) {
UYV_KAZAN_ORT(), digitalWrite(V1_KAZAN_DHW, HIGH), digitalWrite(V2_KAZAN_HAV, LOW), digitalWrite(KAZAN_Q1, HIGH);
// delay(3000);
}
if ((DHWA_SENS_CEL >= 18 || HAV_SENS_CEL >= 18)) {
digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW);
//delay(1000);
}
}
if (SUN_SENS_CEL <= 5 || DH_KLI_SENS_CEL <= 5) { // BU ŞART PANELLERİ KORUMAYA YÖNELİK ÇALIŞACAK ?????*
UYV_KAZAN_ORT(), digitalWrite(KAZAN_Q1, HIGH), digitalWrite(V3_SUN_HAV, HIGH), digitalWrite(V4_SUN_DHW, HIGH), digitalWrite(SUN_Q2, HIGH);
Serial.println("GÜNEŞ PANELİ DONMA KORUMA AKTİF");
if (SUN_SENS_CEL >= 20) { //GÜNEŞ ENERJİ SİST. İÇİNDE DONMA KORUMA PROGRAMI UYGULANDI, ANCAK KAZAN DEVRESİ PARAMETRELERİNE BAĞLANDI
digitalWrite(KAZAN_Q1, LOW), digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
delay(20);
} else {
digitalWrite(KAZAN_Q1, LOW), digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
}
}
Serial.println("####### KAZAN DONMA KORUMA BİTTİ ########");
}
//***********ODA SICAKLIĞI KONTROLÜ*****************************************
void ODA_ISITMA_CH() { //oda sensörü yok ise formül oluştur !!!!!!!!!!!!!!// CH_CEL_TALEP 20-26 *C CİVARI OLACAĞINDAN BİR ODA SENSÖRÜ İLE AKTİF EDİLMELİ VEYA FORMULE EDİLMELİ
if ((KAZ_SEN_PRES == HIGH) && (KIS_MODU == HIGH) && (DH_KLI_SENS_CEL <= 18) && (CH_CEL_POT_TALEP >= CH_SENS_CEL + CH_talep_fark) && !digitalRead(V1_KAZAN_DHW)) {
BRULOR(0);
UYV_KAZAN_CH(), digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW); // BU SATIR İPTAL EDİLEBİLİR
delay(5000);
Serial.println("ODA_ISITMA_CH BEKLENİYOR");
}
if (KAZAN_SENS_CEL <= 35)digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW); // KAZAN_Q1 bir süre daha çalıştırılması gerekir !!!
if (KAZAN_SENS_CEL > 35)UYV_KAZAN_CH(), digitalWrite(KAZAN_Q1, HIGH), Serial.println("ODA_ISITMA_CH DEVREDE");
if (CH_CEL_POT_TALEP <= CH_SENS_CEL)digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW);
}
void BRULOR(int HEDEF_ISI_) {
int HEDEF_ISI = max(HEDEF_ISI_,KAZAN_SICAKLIK);
// kazan sıcaklığı belirlenir, bu da talep sıcaklığının altında kalırsa ısıtma hedefi gerçekleşemez
if (KAZ_SEN_PRES == LOW) {
digitalWrite(K_BRULOR, LOW);
digitalWrite(KAZAN_Q1, LOW);
digitalWrite(V1_KAZAN_DHW, LOW);
digitalWrite(V2_KAZAN_HAV, LOW);
Serial.println("KAZAN SU BASINCI DÜŞÜK, BRULÖR ve POMPA DEVRE DIŞI");
} else if (HEDEF_ISI > KAZAN_SENS_CEL && !digitalRead(K_BRULOR)) { //11/12/2020 DEĞİŞTİRİLDİ&&(KAZAN_CEL_TALEP>=(KAZAN_SENS_CEL+KAZAN_talep_fark)&&(((DHWU_CEL_TALEP>=(DHWU_SENS_CEL+DHW_talep_fark)||CH_CEL_TALEP>=(CH_SENS_CEL)+CH_talep_fark||HAV_CEL_TALEP>=(HAV_SENS_CEL+HAV_talep_fark))))))
// CH_CEL_TALEP 20-30 *C CİVARI OLACAĞINDAN BİR ODA SENSÖRÜ İLE AKTİF EDİLMELİ VEYA FORMULE EDİLMELİ
digitalWrite(K_BRULOR, HIGH);
Serial.print("BRULÖR AKTİF. HEDEF SICAKLIK: ");
Serial.println(HEDEF_ISI);
} else if (HEDEF_ISI <= KAZAN_SENS_CEL-KAZAN_talep_fark && digitalRead(K_BRULOR)) {
digitalWrite(K_BRULOR, LOW);
Serial.print("KAZAN GEREKLİ SICAKLIĞIA ULAŞTI, BRÜLÖR BEKLEME KONUMUNDA ");
Serial.println(HEDEF_ISI);
}else if(HEDEF_ISI > KAZAN_SENS_CEL+KAZAN_talep_fark && digitalRead(K_BRULOR)){
Serial.print("BRÜLÖR DEVREDE KAZAN ISINIYOR: ");Serial.println(KAZAN_SENS_CEL);
}
} //void brulor
void SUN_DHW() {
if (SUN_AKTIF && SUN_DHW_AKTIF && SUN_SEN_PRES){
int fark_UA = (DHWU_SENS_CEL - DHWA_SENS_CEL); // fark değeri akümülason tankı-boyler kapasitesine göre yeniden değerlendirilir
int DHW_ORT = floor((DHWU_SENS_CEL - DHWA_SENS_CEL) / 2);
int DHW_MAX = max(DHWU_SENS_CEL, DHWA_SENS_CEL);
Serial.println("SUN_DHW");
if(!digitalRead(SUN_Q2) && (SUN_SENS_CEL > KAZAN_SENS_CEL && !digitalRead(KAZAN_Q1)) && ((SUN_SENS_CEL >= DHW_MAX + SUN_DHWU_cel_fark && SUN_DESTEK==1)||(SUN_SENS_CEL >= DHWU_CEL_POT_TALEP + SUN_DHWU_cel_fark))) {
digitalWrite(V4_SUN_DHW, HIGH);
digitalWrite(SUN_Q2, HIGH);
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA BAŞLADI");
}else if(digitalRead(KAZAN_Q1) && digitalRead(SUN_Q2) && SUN_SENS_CEL < KAZAN_SENS_CEL){
digitalWrite(SUN_Q2, LOW), digitalWrite(V4_SUN_DHW, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA: KAZAN SICAKLIĞI PANELİ GEÇTİ.");
}else if(digitalRead(SUN_Q2) && SUN_SENS_CEL <= DHW_ORT + SUN_DHWU_cel_fark) {
digitalWrite(SUN_Q2, LOW), digitalWrite(V4_SUN_DHW, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA: PANEL SICAKLIGI YETERLİ GELMEDİ, PANEL ISITMA SONLANDI");
}else if(digitalRead(KAZAN_Q1) && SUN_SENS_CEL >= DHWU_CEL_POT_TALEP + SUN_DHWU_cel_fark) {
digitalWrite(KAZAN_Q1, LOW); digitalWrite(V1_KAZAN_DHW, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA: GÜNEŞ BRULORU KISKANDI!");
}else if(digitalRead(SUN_Q2) && DHW_ORT >= DHWU_CEL_POT_TALEP + SUN_DHWU_cel_fark){
digitalWrite(SUN_Q2, LOW), digitalWrite(V4_SUN_DHW, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA: PANEL SICAKLIĞI YETERLİ OLDU");
}
}else if(!SUN_AKTIF){
Serial.println("ÜNEŞ ENERJİ PANELİ DHW ISITMA: SİSTEM KULLANILMIYOR");
}else if(SUN_AKTIF && !SUN_DHW_AKTIF){
Serial.println("ÜNEŞ ENERJİ PANELİ DHW ISITMA: SİSTEMDE DHW KULLANILMIYOR");
}else if(!SUN_SEN_PRES){
Serial.println("GÜNEŞ ENERJİ PANELİ DHW ISITMA: SİSTEMDE BASINÇ YOK!");
}
} //void sun_dhw
void KAZAN_DHW() {
if (KAZ_SEN_PRES) {
int fark_UA = (DHWU_SENS_CEL - DHWA_SENS_CEL); // fark değeri akümülason tankı-boyler kapasitesine göre yeniden değerlendirilir
int DHW_ORT = floor((DHWU_SENS_CEL - DHWA_SENS_CEL) / 2);
int DHW_MAX = max(DHWU_SENS_CEL, DHWA_SENS_CEL);
if(!digitalRead(KAZAN_Q1) && (SUN_AKTIF && SUN_DHW_AKTIF && (SUN_SENS_CEL < DHWU_CEL_POT_TALEP + DHW_talep_fark || SUN_SEN_PRES == LOW))) {
/* güneş panel sıcaklığı tam olarak yeterli değil, yada güneş basınç yok
SUN_AKTIF && SUN_DHW_AKTIF && SUN_SEN_PRES
*/
if (KAZAN_SENS_CEL <= DHWU_CEL_POT_TALEP + DHW_talep_fark && !digitalRead(K_BRULOR)){
Serial.println("KAZAN DHW ISITMA: BRULOR ISITMA TALEP EDİLDİ");
BRULOR(DHWU_CEL_POT_TALEP);
}
if (SUN_AKTIF && SUN_SENS_CEL < DHWU_CEL_POT_TALEP + DHW_talep_fark) Serial.println("KAZAN DHW ISITMA: PANEL YETERLİ DEĞİL");
if (SUN_AKTIF && SUN_SEN_PRES == LOW && !digitalRead(K_BRULOR)) Serial.println("KAZAN DHW ISITMA: PANEL BASINÇ YOK!");
if (((DHWU_CEL_POT_TALEP >= 35 && KAZAN_SENS_CEL >= 35) || (DHWU_CEL_POT_TALEP < 35 && KAZAN_SENS_CEL>=DHW_MAX+DHW_talep_fark)) && !digitalRead(KAZAN_Q1)) {
digitalWrite(V1_KAZAN_DHW, HIGH), digitalWrite(V2_KAZAN_HAV, LOW);
UYV_KAZAN_ORT(); digitalWrite(KAZAN_Q1, HIGH);
}
}else if(digitalRead(KAZAN_Q1) && DHW_ORT >= DHWU_CEL_POT_TALEP + DHW_talep_fark) {
digitalWrite(KAZAN_Q1, LOW); digitalWrite(V1_KAZAN_DHW, LOW);
Serial.println("BRULOR DHW ISITMA: ISITMA TALEBİ BRÜLÖR DESTEĞİYLE KARŞILANDI");
}
if (digitalRead(KAZAN_Q1)) BRULOR(DHWU_CEL_POT_TALEP); // brulor pompa çalıştığı sürece açık yada kapalı kalmasın
/* loop kısmına brulor fonksiyonu eklenerek kazandaki suyun sürekli sıcak kalması sağlanabilir */
}
} //void kazan_dhw
void KAZAN_HAVUZ() {
if (SUN_SENS_CEL <= HAV_CEL_POT_TALEP + HAV_talep_fark) {
UYV_KAZAN_ORT(), BRULOR(0);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, HIGH);
}
if (KAZAN_SENS_CEL >= 35)digitalWrite(KAZAN_Q1, HIGH), delay(2000);
if (HAV_CEL_POT_TALEP <= HAV_SENS_CEL) {
digitalWrite(KAZAN_Q1, LOW);
delay(500);
digitalWrite(V2_KAZAN_HAV, LOW);
Serial.println("KAZAN HAVUZU ISITMASINI TAMAMLADI");
}else{
Serial.println("KAZAN DHW ISITMA: KAZAN BASINÇ YOK, BRULOR ÇALIŞMAYACAK!");
}
}
void SUN_HAVUZ() {
SUN_HAZIRLA();
if (SUN_SEN_PRES == LOW) {
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW);
Serial.println("!!! GÜNEŞ ENERJİ PANELİ SU BASINCI DÜŞÜK; GÜNEŞ ENERJİ PANELİ DEVRE DIŞI !!!");
} else if (!digitalRead(SUN_Q2) && SUN_SENS_CEL >= HAV_SENS_CEL + HAV_talep_fark) {
//&&(SUN_SENS_CEL<=(DHWU_SENS_CEL+SUN_fark2))
// EN SON ŞART DHW ÖNCELİK ŞARTI OLARAK EKLENDİ ????????????? CASE DE VAR
digitalWrite(V3_SUN_HAV, HIGH), digitalWrite(V4_SUN_DHW, LOW), digitalWrite(SUN_Q2, HIGH);
Serial.println("GÜNEŞ ENERJİ PANELİ HAVUZ ISITMA DEVRESİ; AKTİF");
} else if (digitalRead(SUN_Q2) && HAV_CEL_POT_TALEP <= HAV_SENS_CEL) {
//||(DHWU_CEL_POT_TALEP>=(DHWU_SENS_CEL+DHW_talep_fark)&&(SUN_SENS_CEL>=(DHWU_SENS_CEL+HAV_talep_fark)))
// üstte ikinci şarta +SUN_fark1 sadece bir katsayı rakamı olarak eklendi bu sirkülasyon pompasının verimsiz çalışmaması için bir önlem
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ HAVUZ ISITMA TAMAMLANDI; DEVRE DIŞI");
} else if (digitalRead(SUN_Q2) && SUN_SENS_CEL <= HAV_SENS_CEL + SUN_fark2) {
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ ARTIK HAVUZU ISITAMAZ; DEVRE DIŞI");
}
// if(SUN_SENS_CEL<=30)digitalWrite(SUN_Q2,LOW),digitalWrite(V3_SUN_HAV,LOW);
}//sun_havuz
void VERI_OKU() {
int deger1sensor = analogRead(A0); // KAZAN_CEL_POT_TALEP ?
int deger2sensor = analogRead(A1); // CH_CEL_POT_TALEP?
int deger3sensor = analogRead(A2); // DHWU_CEL_POT_TALEP?
int deger4sensor = analogRead(A3); // HAV_CEL_POT_TALEP ?
float deger5sensor = analogRead(A4); // SUN_CEL_POT_TALEP?
float deger6sensor = analogRead(A5); // DH_KLI_CEL_POT_TALEP?
float deger7sensor = analogRead(A6); // KAZAN_SENS_CEL?
float deger8sensor = analogRead(A7); // CH_SENS_CEL ?
float deger9sensor = analogRead(A8); // DHWA_SENS_CEL?
float deger10sensor = analogRead(A9); // DHWU_SENS_CEL?
float deger11sensor = analogRead(A10); //HAV_SENS_CEL?
float deger12sensor = analogRead(A11); // SUN_SENS_CEL?
float deger13sensor = analogRead(A12); // DH_KLIMA_EVAP_SENS_CEL ? SENSÖR BAĞLANTILARI KONTROL ET BİR KAYMA VAR 14.07.2022
float deger14sensor = analogRead(A13); // KLIMA_KOND_SENS_1_CEL?
float deger15sensor = analogRead(A14); // KLIMA_KOND_SENS_2_CEL?
float deger16sensor = analogRead(A15); //
KAZAN_POT_anlg.add(deger1sensor);
CH_POT_anlg.add(deger2sensor);
DHWU_POT_anlg.add(deger3sensor);
HAV_POT_anlg.add(deger4sensor);
SUN_POT_anlg.add(deger5sensor);
DH_KLI_POT_anlg.add(deger6sensor);
KAZAN_SENS_anlg.add(deger7sensor);
CH_SENS_anlg.add(deger8sensor);
DHWA_SENS_anlg.add(deger9sensor);
DHWU_SENS_anlg.add(deger10sensor);
HAV_SENS_anlg.add(deger11sensor);
SUN_SENS_anlg.add(deger12sensor);
DH_KLI_SENS_anlg.add(deger13sensor);
KLI_KOND_SENS_1_anlg.add(deger14sensor);
KLI_KOND_SENS_2_anlg.add(deger15sensor);
KLI_KOND_SENS_2_anlg.add(deger15sensor);
float smoothed_KAZAN_CEL_POT_TALEP = KAZAN_POT_anlg.get();
float smoothed_CH_CEL_POT_TALEP = CH_POT_anlg.get();
float smoothed_DHWU_CEL_POT_TALEP = DHWU_POT_anlg.get();
float smoothed_HAV_CEL_POT_TALEP = HAV_POT_anlg.get();
float smoothed_SUN_CEL_POT_TALEP = SUN_POT_anlg.get();
float smoothed_DH_KLI_CEL_POT_TALEP = DH_KLI_POT_anlg.get();
float smoothed_KAZAN_SENS_CEL = KAZAN_SENS_anlg.get();
float smoothed_CH_SENS_CEL = CH_SENS_anlg.get();
float smoothed_DHWA_SENS_CEL = DHWA_SENS_anlg.get();
float smoothed_DHWU_SENS_CEL = DHWU_SENS_anlg.get();
float smoothed_HAV_SENS_CEL = HAV_SENS_anlg.get();
float smoothed_SUN_SENS_CEL = SUN_SENS_anlg.get();
float smoothed_DH_KLI_SENS_CEL = DH_KLI_SENS_anlg.get();
float smoothed_KLI_KOND_SENS_1_CEL = KLI_KOND_SENS_1_anlg.get();
float smoothed_KLI_KOND_SENS_2_CEL = KLI_KOND_SENS_2_anlg.get();
KAZAN_CEL_POT_TALEP = map(deger1sensor, 0, 1023, 20, 65); // POTANSİTOMETRE KAZAN SUYU SICAKLIĞI TALEP AYAR DEĞERİ (SANTİGRAD DERECE)
CH_CEL_POT_TALEP = map(deger2sensor, 0, 1023, 15, 34); // POTANSİTOMETRE CH ISITMA TALEP AYAR DEĞERİ (SANTİGRAD DERECE) KULLANILMAYABİLİR !!!
DHWU_CEL_POT_TALEP = map(deger3sensor, 0, 1023, 20, 65); // POTANSİTOMETRE DHWU ISITMA TALEP AYAR DEĞERİ (SANTİGRAD DERECE)
HAV_CEL_POT_TALEP = map(deger4sensor, 0, 1023, 12, 32); // POTANSİTOMETRE HAVUZ ISITMA TALEP AYAR DEĞERİ (SANTİGRAD DERECE)
// Spor havuzları= 24 °C,Serbest havuz = 28 °C,Çocuk havuzları = 32 °C sıcaklık gereklidir.
SUN_CEL_POT_TALEP = map(smoothed_SUN_CEL_POT_TALEP, 0, 1023, 10, 65);
DH_KLI_CEL_POT_TALEP = map(smoothed_DH_KLI_CEL_POT_TALEP, 0, 1023, -10, 30); // POTANSİTOMETRE klima DIŞ HAVA SICAKLIĞI TALEP AYAR DEĞERİ (SANTİGRAD DERECE)
Serial.println("------------------------------------------------------------");
Serial.print("KAZAN_CEL_POT_TALEP_SMOOT:"); Serial.print(smoothed_KAZAN_CEL_POT_TALEP);
Serial.print("\tCH_CEL_POT_TALEP_SMOOT...:"); Serial.println(smoothed_CH_CEL_POT_TALEP);
Serial.print("ODA POT TALEP.......:"), Serial.print(CH_CEL_POT_TALEP);
Serial.print("\t\tKAZAN_CEL_POT_TALEP....:"); Serial.println(KAZAN_CEL_POT_TALEP);
KAZAN_SENS_CEL = NTC_1(smoothed_KAZAN_SENS_CEL); // KAZAN SICAKLIĞI*C (SANTİGRAD DERECE)(DÖNÜŞTÜRÜLMÜŞ VERİ)
Serial.print("KAZAN SENSÖR........:"), Serial.print(KAZAN_SENS_CEL);
Serial.print("\t\tKAZAN POT TALEP........:"), Serial.println(KAZAN_CEL_POT_TALEP);
CH_SENS_CEL = NTC_1(smoothed_CH_SENS_CEL); // CH SICAKLIĞI *C, KAZAN SUYU SICAKLIĞI
Serial.print("CH SENSÖR...........:"), Serial.print(CH_SENS_CEL);
Serial.print("\t\tCH_CEL_POT_TALEP.......:"); Serial.println(CH_CEL_POT_TALEP);
DHWA_SENS_CEL = NTC_1(smoothed_DHWA_SENS_CEL); // DHWA DEPO ALT SICAKLIĞI*C
DHWU_SENS_CEL = NTC_1(smoothed_DHWU_SENS_CEL); // DHWU DEPO BOYLER UST SICAKLIĞI*C
// ??!! DHWU ISI TALEP DĞERİ KAZAN SUYU SICAKLIĞINDAN FAZLA OLAMAZ İKAZI EKRANA GÖNDER
Serial.print("DHWU SENSÖR.........:"), Serial.print(DHWU_SENS_CEL);
Serial.print("\t\tDHWA SENSÖR............:"), Serial.println(DHWA_SENS_CEL);
Serial.print("DHW SENSOR ORTALAMA.:"),Serial.print((DHWA_SENS_CEL+DHWU_SENS_CEL)/2);
Serial.print("\t\tDHWU POT TALEP.........:"), Serial.println(DHWU_CEL_POT_TALEP);
HAV_SENS_CEL = NTC_1(smoothed_HAV_SENS_CEL); // HAVUZ SICAKLIĞI*C (DÖNÜŞTÜRÜLMÜŞ VERİ)
Serial.print("HAVUZ SENSÖR........:"), Serial.print(HAV_SENS_CEL);
Serial.print("\t\tHAVUZ POT TALEP........:"), Serial.println(HAV_CEL_POT_TALEP);
SUN_SENS_CEL = NTC_1(smoothed_SUN_SENS_CEL); // GÜNEŞ PANELİ SICAKLIĞI*C (DÖNÜŞTÜRÜLMÜŞ VERİ)
Serial.print("GÜNEŞ PANELİ SENSÖR.:"), Serial.print(SUN_SENS_CEL);
Serial.print("\t\tGÜNEŞ PANELİ POT TALEP.:"), Serial.println(SUN_CEL_POT_TALEP);
DH_KLI_SENS_CEL = NTC_1(smoothed_DH_KLI_SENS_CEL); // DIŞ HAVA SICAKLIĞI*C (DÖNÜŞTÜRÜLMÜŞ VERİ)
Serial.print("DIŞ HAVA SENSÖR.....:"), Serial.print(DH_KLI_SENS_CEL);
Serial.print("\t\tDH KLIMA POT TALEP.....:"), Serial.println(DH_KLI_CEL_POT_TALEP);
KLI_KOND_SENS_1_CEL = NTC_1(smoothed_KLI_KOND_SENS_1_CEL); // CH SICAKLIĞI *C, KAZAN SUYU SICAKLIĞI
Serial.print("KLIMA KOND SENSÖR_1.:"), Serial.print(KLI_KOND_SENS_1_CEL);
KLI_KOND_SENS_2_CEL = NTC_1(smoothed_KLI_KOND_SENS_2_CEL);
Serial.print("\t\tKLIMA KOND SENSÖR_2....:"), Serial.println(KLI_KOND_SENS_2_CEL);
//kazan sıcaklığı tespit etme
KAZAN_SICAKLIK = max(KAZAN_CEL_POT_TALEP, CH_CEL_POT_TALEP);
KAZAN_SICAKLIK = max(DHWU_CEL_POT_TALEP, KAZAN_SICAKLIK);
KAZAN_SICAKLIK = max(KAZAN_SICAKLIK, HAV_CEL_POT_TALEP);
Serial.print("KAZAN_SICAKLIK DEĞERİ "); Serial.print(KAZAN_SICAKLIK); Serial.println(" OLARAK BELİRLENDİ.");
KAZ_SEN_PRES = digitalRead(B_S_KAZ);
SUN_SEN_PRES = digitalRead(B_S_SUN);
KIS_MODU = digitalRead(K_MOD);
Serial.print("KAZAN SU BASINCI:"), Serial.print((digitalRead(B_S_KAZ))?"VAR":"YOK!");
Serial.print(", GÜNEŞ PANELİ SU BASINCI:"), Serial.print((digitalRead(B_S_SUN))?"VAR":"YOK!");
Serial.print(", "), Serial.println((digitalRead(K_MOD))?"KIŞ MODU AKTİF":"KIŞ MODU PASİF");
Serial.println("------------------------------------------------------------");
/* EMNİYET SİSTEMİ: BASINÇ DÜŞÜNCE SİSTEMİ KAPAT */
if (digitalRead(SUN_Q2) && SUN_SEN_PRES == LOW) { // pompa çalışıyor ve basınç yok
digitalWrite(SUN_Q2, LOW),
digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(V3_SUN_HAV, LOW);
Serial.println("GÜNEŞ ENERJİ PANELİ BASINCI DÜŞTÜ. PANEL SİSTEMİ KAPATILDI. (EMNİYET)");
}
if (KAZ_SEN_PRES == LOW && (digitalRead(KAZAN_Q1) || digitalRead(K_BRULOR))) {
digitalWrite(K_BRULOR, LOW);
digitalWrite(KAZAN_Q1, LOW);
digitalWrite(V1_KAZAN_DHW, LOW);
digitalWrite(V2_KAZAN_HAV, LOW);
Serial.println("KAZAN BASINCI DÜŞTÜ. KAZAN VE BRULOR KAPATILDI. (EMNİYET)");
}
if (digitalRead(K_BRULOR) && KAZAN_SENS_CEL >= KAZAN_SICAKLIK + KAZAN_talep_fark) {
digitalWrite(K_BRULOR, LOW);
Serial.println("KAZAN GEREKLİ ISIYA ULAŞTI. BRÜLÖR DURDURULDU. (EMNİYET)");
}
}
void KLIMA_AKTIF()
{
interrupts();
VERI_OKU();
if (DH_KLI_CEL_POT_TALEP < (DH_KLI_SENS_CEL + 3))
{
digitalWrite(LED_KLI_DEVREDE, HIGH), Serial.println("KLIMA DEVREDE");
Serial.print("DIŞ HAVA (KLİMA) SENSÖR SICAKLIĞI = "), Serial.println(DH_KLI_SENS_CEL);
Serial.print("DIŞ HAVA POT TALEP SICAKLIĞI = "), Serial.println(DH_KLI_CEL_POT_TALEP);
digitalWrite(SUN_Q2, LOW), digitalWrite(V3_SUN_HAV, LOW), digitalWrite(V4_SUN_DHW, LOW);
digitalWrite(KAZAN_Q1, LOW), digitalWrite(Vuc1_KAZAN_CH, LOW), digitalWrite(Vuc2_KAZAN_ORT, LOW);
digitalWrite(V1_KAZAN_DHW, LOW), digitalWrite(V2_KAZAN_HAV, LOW), digitalWrite( K_BRULOR, LOW), digitalWrite(SUN_ISITICI, LOW);
delay(100);
digitalWrite(KLI_KOND_FAN, HIGH), digitalWrite(PELTIER, HIGH), digitalWrite(KLI_EVAP_FAN, HIGH); //,digitalWrite(KLIMA_Q3,HIGH)
delay(5000);
DH_KLI_SENS_CEL;
if (KLI_KOND_SENS_1_CEL >= (KLI_KOND_SENS_2_CEL + 20) || (KLI_KOND_SENS_2_CEL) >= (KLI_KOND_SENS_1_CEL + 20) || (KLI_KOND_SENS_1_CEL >= 60) || (KLI_KOND_SENS_2_CEL >= 60)) //peltieri korumaya yönelik
{
digitalWrite(PELTIER, LOW), digitalWrite(KLI_EVAP_FAN, LOW); //digitalWrite(KLIMA_Q3,LOW),
delay(3000);
digitalWrite(KLI_KOND_FAN, LOW) ;
Serial.println("KLIMA KONDENSER FAN SICAKLIĞINI KONTROL ET ") ;
Serial.print("KLİMA KONDENSER SENSÖR 1 SICAKLIĞI = "), Serial.println(KLI_KOND_SENS_1_CEL);
Serial.print("KLİMA KONDENSER SENSÖR 2 SICAKLIĞI = "), Serial.println(KLI_KOND_SENS_2_CEL);
Serial.print("DIŞ HAVA (KLİMA) SENSÖR SICAKLIĞI = "), Serial.println(DH_KLI_SENS_CEL);
delay(300);
}
}
if (DH_KLI_CEL_POT_TALEP >= DH_KLI_SENS_CEL) // KLIMA ŞARTLARI HAZIR
{
digitalWrite(PELTIER, LOW), digitalWrite(KLI_EVAP_FAN, LOW); //Write(KLIMA_Q3,LOW), BUZZER İKAZdigital
delay(3000);
digitalWrite(LED_KLI_SIST_HAZIR, HIGH);
Serial.println(" KLIMA HAZIR ");
delay(300);
digitalWrite(LED_KLI_DEVREDE, LOW);
delay(1000);
digitalWrite(LED_KLI_SIST_HAZIR, LOW);
Serial.print("DIŞ HAVA (KLİMA) SICAKLIK TALEP DEĞERİ = "), Serial.println(DH_KLI_CEL_POT_TALEP);
Serial.print("KLİMA KONDENSER SENSÖR 1 SICAKLIĞI = "), Serial.println(KLI_KOND_SENS_1_CEL);
Serial.print("KLİMA KONDENSER SENSÖR 2 SICAKLIĞI = "), Serial.println(KLI_KOND_SENS_2_CEL);
Serial.print("DIŞ HAVA (KLİMA) SENSÖR SICAKLIĞI = "), Serial.println(DH_KLI_SENS_CEL);
if (KLI_KOND_SENS_1_CEL <= 35 && KLI_KOND_SENS_2_CEL <= 35)
{
digitalWrite(KLI_KOND_FAN, LOW), digitalWrite(PELTIER, LOW) ;
digitalWrite(KLI_EVAP_FAN, LOW) ;
}
}
noInterrupts();
}
void LEDLER(){
digitalWrite(LED_KAZAN_Q1_DEVREDE, digitalRead(KAZAN_Q1));
digitalWrite(LED_SUN_Q2_DEVREDE, digitalRead(SUN_Q2));
digitalWrite(LED_K_BRULOR_DEVREDE, digitalRead(K_BRULOR));
digitalWrite(LED_Vuc1_DEVREDE, digitalRead(Vuc1_KAZAN_CH));
digitalWrite(LED_Vuc2_DEVREDE, digitalRead(Vuc2_KAZAN_ORT));
digitalWrite(LED_V1_DEVREDE, digitalRead(V1_KAZAN_DHW));
digitalWrite(LED_V2_DEVREDE, digitalRead(V2_KAZAN_HAV));
digitalWrite(LED_V3_DEVREDE, digitalRead(V3_SUN_HAV));
digitalWrite(LED_V4_DEVREDE, digitalRead(V4_SUN_DHW));
}
double NTC_1(int analogDonustur1) {
// analogDonustur1 ŞEKLİNDE ATADIĞIMIZ DEĞİŞKEN İSMİ BAĞIMSIZDIR KEYFİDİR BAŞKACA BİR YERDE KULLANILMAZ
double sicaklik1;
sicaklik1 = log(((10240000 / analogDonustur1) - 10000));
sicaklik1 = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik1 * sicaklik1)) * sicaklik1);
sicaklik1 = sicaklik1 - 273.15;
return sicaklik1;
}
String CalismaZamani (unsigned long currentMillis){
currentMillis = (currentMillis > 0) ? currentMillis : millis();
unsigned long seconds = currentMillis / 1000; unsigned long minutes = seconds / 60;
unsigned long hours = minutes / 60; unsigned long days = hours / 24;
currentMillis %= 1000; seconds %= 60; minutes %= 60; hours %= 24;
return (((hours<10)?"0":"") + String(hours) + ":" + ((minutes<10)?"0":"") + String(minutes) + ":" + ((seconds<10)?"0":"") + String(seconds) + "." + String(currentMillis));
}
KAZAN_CEL_
POT_TALEP
CH_CEL_
POT_TALEP
DHWU_CEL_
POT_TALEP
HAV_CEL_
POT_TALEP
SUN_CEL_
POT_TALEP
DH_KLI_
POT_TALEP
KAZAN_SENS_CEL
CH_SENS_CEL
DHWA_SENS_CEL
DHWU_SENS_CEL
HAV_SENS_CEL
SUN_SENS_CEL
DH_KLIMA_EVAP_SENS_CEL
Vuc1
Vuc2
V1
V2
V3
V4
B_S_KAZ
B_S_SUN
KIŞ
MODU
KAZAN Q1
SUN Q2
KAZAN Q1
SUN Q2
BLUROR
BLUROR
SUN_ISIICI
KLI_DEVREDE
KLI_HAZIR
V1_KAZAN_DHW
V2_KAZAN_HAV
SUN_HAV
SUN_HDV