Arduino ile zamanlayıcılı damlama sulama sistemi.

Katılım
26 Mar 2020
Mesajlar
10
Puanları
1
Yaş
21
Konum
Tekirdağ
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 transistör ve 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 solenoid vana uçlarını ölçtüğümde anlık olarak 1400 V gibi gerilim değerleri görüyorum bunun sebebi ne olabilir acaba? Yardımcı olabilirseniz çok sevinirim şimdiden teşekkür ederim, iyi günler.
 

mehmet.bey

Usta Üye
Katılım
19 Ara 2011
Mesajlar
1,105
Puanları
183
Bu konuya yakın bir konu için cevabını
yazmıştım.
 
Konu Sah
E
Katılım
26 Mar 2020
Mesajlar
10
Puanları
1
Yaş
21
Konum
Tekirdağ
Bu konuya yakın bir konu için cevabını
yazmıştım.
cevabınızı okudum fakat ben solenoid vana uçlarına diyot bağlamama rağmen sorun yaşıyorum. Bağladığım diyot 1N4007 1000V a kadar dayanabiliyor fakat ben vanayı tetiklediğimde 1400V gibi değerler ölçüyorum. Kullandığım transistör ise BDX53C modeli. Devreyi ve kodları da burada paylaşıyorum müsait olduğunuzda bir bakabilirseniz çok sevinirim.

kodları fotoğraftan incelemek zor olursa diye buraya yazı olarakta ekliyorum;
Kod:
#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);

  }





}
 

Ekli dosyalar

Moderatör tarafında düzenlendi:

omurkosem

Üye
Katılım
18 Kas 2008
Mesajlar
239
Puanları
3
Yaş
35
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 transistör ve 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 solenoid vana uçlarını ölçtüğümde anlık olarak 1400 V gibi gerilim değerleri görüyorum bunun sebebi ne olabilir acaba? Yardımcı olabilirseniz çok sevinirim şimdiden teşekkür ederim, iyi günler.
En iyi çözüm opto kublör. Pic'i tamamen yalıtıyorsun.

En iyi çözüm opto kublör. Pic'i tamamen yalıtıyorsun.
Arduino'yu yalıtacaksın,ben genel olarak pic kullandığım için öyle yazıvermişim, Ben pic ile yaptım damla sulama işini 3 yıldır kullanıyorum,başta röle ile problemler yaşadım, sorunu opto kublör ile çözdüm.
 
Konu Sah
E
Katılım
26 Mar 2020
Mesajlar
10
Puanları
1
Yaş
21
Konum
Tekirdağ
Arduino'yu yalıtacaksın,ben genel olarak pic kullandığım için öyle yazıvermişim, Ben pic ile yaptım damla sulama işini 3 yıldır kullanıyorum,başta röle ile problemler yaşadım, sorunu opto kublör ile çözdüm.
attığım devreye optocoupleri nasıl bağlayacağım? Direk BDX53C transistörün basesini tektikleyen arduinonun dijital çıkış pinine mi bağlayacağım? Zamanınız olursa devre üzerinde gösterebilir misiniz acaba?
 

Sponsor Bağlantı

Forum istatistikleri

Konular
111,259
Mesajlar
783,723
Kullanıcılar
410,023
Son üye
SandersReview

Yeni konular

Üst