Şimdi Ara

Arduino ve RTC kullanarak zamanlayıcılı damlama sulama sistemi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
439
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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);

     }



    }


    Arduino ve RTC kullanarak zamanlayıcılı damlama sulama sistemi
    Arduino ve RTC kullanarak zamanlayıcılı damlama sulama sistemi







  • Merhabalar ben konu hakkında bilgili birisi sayılmam. lakin şemalara bakınca arduinoyu pwm tabanlı converter ile beslediğinizi görüyorum. bazı arduino uygulamalarında güç kaynağı gürültüsünün sorunlara neden olduğunu görmüştüm. Bu nedenle arduino beslemesini yaparken converterin çıkışına değil de tam arduinonun besleme girişine paralel kapasitör kullanın. Bir adet 100nF bir adet de 330uF paralel yapın. Bu besleme gürültülerini bastırır.

    Arduinonun resetlemesine gelince siz bu devreyi gerçekte kurdunuz mu emin olmak için soruyorum. Çünkü valfin devreye girme çıkma anında arduinonun sapıttığından bahsettiğinize göre aynı güç kaynağından besliyorsanız güç dalgalanması aklıma geliyor. Bir de benzer bir uygulamada transistörün beyzini dirençle de olsa direkt mikrodenetleyiciye bağlandığında benzer bir sorun olmuştu. Opto-kuplör ile yalıtarak sorunu çözmüştü arkadaş. Sizde deneyebilirsiniz. Transistörleriniz direkt olarak valfi sürmesin. Arduino ile arasında opto-kuplör bağlayın. Opto ile isterseniz yine darlington yapabilirsiniz sıkıntı olmaz.

    Benim yazabileceklerim bu kadar.




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.