Merhaba size bir projem hakkında teknik bir sorum olacaktı İnternette araştırmama rağmen çözüm bulamadım. Arduino ile kontrol ettiğim RTC ve Solenoid vana ile zaman ayarlı bir damlama sulama sistemi yapmak istiyorum fakat BDX53C transistör ve 1N4007 diyot ile solenoid vana için sürücü devresi kurmama rağmen vanayı tetiklediğimde RTC saati sıfırlanıyor hatta arka arkaya buton ile tetiklersem arduino kendine reset atıyor ve diyotun uçlarını ölçtüğümde anlık olarak 1400 V gibi gerilim değerleri görüyorum bunun sebebi ne olabilir acaba? Devreyi ve kodları ekleyeceğim yardımcı olabilirseniz çok sevinirim şimdiden teşekkür ederim, iyi günler. kodları fotoğraftan incelemesi zor olur diye yazı olarak ekliyorum; #include <virtuabotixRTC.h> int solenoidPin = 9; int solenoidPin2 = 10; int CLK_PIN=8; int DAT_PIN=7; int RST_PIN=6; int manualbuton=2; int stopbuton=3; int butondurum; int butondurum2; int greenled=4; int redled=5; int istenensaat=19; int istenensaat2=20; int sayac=0; int sayac2=0; virtuabotixRTC myRTC(CLK_PIN, DAT_PIN, RST_PIN); void setup() { Serial.begin(9600); pinMode(solenoidPin, OUTPUT); pinMode(solenoidPin2, OUTPUT); pinMode(manualbuton, INPUT_PULLUP); pinMode(stopbuton, INPUT_PULLUP); pinMode(greenled, OUTPUT); pinMode(redled, OUTPUT); myRTC.setDS1302Time(0,04, 18, 1, 22, 6, 2020); //Kodu yükle sonra kaldır tekrar yükle. } void loop() { myRTC.updateTime(); Serial.print(myRTC.hours); Serial.print(":"); Serial.print(myRTC.minutes); Serial.print(":"); Serial.print(myRTC.seconds); Serial.print(" "); Serial.print(sayac); Serial.print(" "); Serial.println(sayac2);
butondurum=digitalRead(manualbuton); if(butondurum == 0) { delay(10); while(digitalRead(manualbuton) == 0) { digitalRead(manualbuton); } sayac++; } butondurum2=digitalRead(stopbuton); if(butondurum2 == 0) { delay(10); while(digitalRead(stopbuton) == 0) { digitalRead(stopbuton); } sayac2++; }
switch(sayac) { case 1: if(sayac == 1) { digitalWrite(solenoidPin, HIGH); digitalWrite(solenoidPin2, HIGH); digitalWrite(redled, HIGH); digitalWrite(greenled, LOW); } break; case 2: if(sayac == 2 || sayac == 0) { digitalWrite(solenoidPin, LOW); digitalWrite(solenoidPin2, LOW); digitalWrite(redled, LOW); digitalWrite(greenled, HIGH); sayac = 0; } break;
}
if(myRTC.dayofweek == 1 || myRTC.dayofweek == 3 || myRTC.dayofweek == 5 || myRTC.dayofweek == 7) { if(myRTC.hours == istenensaat && myRTC.minutes == 45 && myRTC.seconds == 0) {
digitalWrite(solenoidPin, HIGH);
} if(myRTC.hours == 20 && myRTC.minutes == 0 && myRTC.seconds ==0) { digitalWrite(solenoidPin, LOW); } if(myRTC.hours == istenensaat2 && myRTC.minutes == 1 && myRTC.seconds ==0) { digitalWrite(solenoidPin2, HIGH); } if(myRTC.hours == 20 && myRTC.minutes == 16 && myRTC.seconds == 0) { digitalWrite(solenoidPin2, LOW); }
switch(sayac2) { case 1: if(sayac2 == 1) { digitalWrite(solenoidPin, LOW); digitalWrite(solenoidPin2, LOW); digitalWrite(redled, HIGH); digitalWrite(greenled, HIGH); } break;
case 2: if(sayac2 == 2) { sayac2=0; digitalWrite(redled, LOW); } break; }
} if(sayac !=1 && sayac2 !=1) { digitalWrite(greenled, HIGH); } } |
Bildirim