Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
499
Tıklama
0
Öne Çıkarma
Arduino ve RTC kullanarak zamanlayıcılı damlama sulama sistemi
E
5 yıl
Er
Konu Sahibi

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); }}

< Resime gitmek için tıklayın >

< Resime gitmek için tıklayın >

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



K
5 yıl
Binbaşı

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.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.