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

Katılım
26 Mar 2020
Mesajlar
23
Puanları
1
Yaş
25
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.
 
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

  • DEVRE.PNG
    DEVRE.PNG
    23 KB · Görüntüleme: 22
  • DEVRE2.PNG
    DEVRE2.PNG
    16.3 KB · Görüntüleme: 21
  • kod1.PNG
    kod1.PNG
    27.6 KB · Görüntüleme: 17
  • kod2.PNG
    kod2.PNG
    23.2 KB · Görüntüleme: 14
  • kod3.PNG
    kod3.PNG
    19.4 KB · Görüntüleme: 11
  • kod4.PNG
    kod4.PNG
    20.3 KB · Görüntüleme: 10
  • kod5.PNG
    kod5.PNG
    23.8 KB · Görüntüleme: 10
  • kod6.PNG
    kod6.PNG
    19.3 KB · Görüntüleme: 14
Moderatör tarafında düzenlendi:
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.
 
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?
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,831
Kullanıcılar
449,595
Son üye
Ferden1011

Yeni konular

Geri
Üst