Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: eml581 - 02 Mart 2017, 22:57:46

Başlık: Arduino ile devir daim programı yardım
Gönderen: eml581 - 02 Mart 2017, 22:57:46
Merhaba;

Arkadaşlar arduino ile devir daim sistemi yapmaya çalışıyorum . Plc de bu sistemi kurmustum ama simulasyon yapamadım canlı olmadıgı için plc kodlarını arduinoya göre yazmaya calıştım ancak bir türlü sonuc elde edemedim. Arduino ile ilgilenen arkadaşlar yardım edebilirmi ?
Pic ile  yapsamda olur ama pek bilmiyorum. Beni yönlendirip beraber projeyi devam ettirecegim bir abi bir arkadaş varmı  :)

Sistem şu şekilde olucak ;
baslat butonuyla sistem çalışıcak 1 tank doldugunda 2 pompa durup 1 pompa çalışıcak 2 tanka dolum yapıcak bu şekilde sürekli kendini tekrarlıycak stop edildiğinde ilk basladıgı konumda durucak aşağıda kod yazmaya calıstım ancak mantığı kuramadım tam heralde bir türlü çalışstıramadım

1 pompa
2 pompa
1 tank max seviye sensörü
1 tank min seviye sensörü
2 tank max seviye sensörü
2 tank min seviye sensörü

arduino ile yapmaya calıştıgım kod
boolean I00;
boolean I01;
boolean I02;
boolean I03;
boolean I04;
boolean I05;
boolean Q00;
boolean Q01;
boolean M00;
boolean M02;
boolean M03;
boolean M04;
boolean M05;

void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT); //BAŞLAT
  pinMode(3, INPUT); //DURDUR
  pinMode(4, INPUT); //TANK1 MAX SEVİYE
  pinMode(5, INPUT); //TANK1 MİN SEVİYE
  pinMode(6, INPUT); //TANK2 MAX SEVİYE
  pinMode(7, INPUT); //TANK2 MİN SEVİYE
  pinMode(8, OUTPUT); //POMPA1
  pinMode(9, OUTPUT); //POMPA2
}

void loop() {
  // put your main code here, to run repeatedly:
  I00 = digitalRead(2);
  I01 = digitalRead(3);
  I02 = digitalRead(4);
  I03 = digitalRead (5);
  I04 = digitalRead (6);
  I05 = digitalRead (7);
  Q00 = digitalRead (8);
  Q01 = digitalRead (9);
  delay (100);


  if  (I00 == HIGH) {
    M00 = HIGH;
  }
   if (I01 == HIGH)  {
    M00 = LOW;
  }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    if  (I02 == HIGH) {
    M02 = HIGH;
  }
   if (I02 == LOW)  {
    M02 = LOW;
  }

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    if  (I03 == HIGH) {
    M03 = HIGH;
  }
   if (I03 == HIGH)  {
    M03 = LOW;
  }

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    if  (I04 == HIGH) {
    M04 = HIGH;
  }
   if (I04 == LOW)  {
    M04 = LOW;
  }

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    if  (I05 == HIGH) {
    M05 = HIGH;
  }
   if (I05 == LOW)  {
    M05 = LOW;
  }
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
   if (M00 == HIGH && M02 == HIGH && (M05 == HIGH || M05 == LOW) ){
    digitalWrite (8, HIGH); //Q00
}
  if (M00 == LOW || (M04 == HIGH || M03 == HIGH )) {
    digitalWrite(8, LOW); //Q00
  }
if (M04 == HIGH && (M03 == HIGH || M03 == LOW )){
digitalWrite(9, HIGH); //Q01

  }
  if (M00 == LOW || (M02 == HIGH || M05 == HIGH )) {
    digitalWrite(9, LOW); //Q01
  }
    }
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: mehmet - 03 Mart 2017, 12:48:39
Kaç tank, kaç motor pompa var anlayamadım.
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 03 Mart 2017, 22:07:06
2 tank 4 seviye olcum icin sensor 2 adet pompa
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: mert3162 - 04 Mart 2017, 01:09:31
keşke değişken isimlerini direk yazsaydın okumaya üşendim şimdi :) m1 falan yerine motor1 tank1dolusens tank2bossens gibi falan olsa daha rahat okurduk programını
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: mehmet - 04 Mart 2017, 02:24:46
"... 1 tank doldugunda 2 pompa durup 1 pompa çalışıcak 2 tanka dolum ..."
yerine;
"... 1. tank dolduğunda 2. pompa durup 1. pompa çalışacak 2. tanka dolum ..."
yazmak çok mu zor?
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: Murat Mert - 04 Mart 2017, 12:14:12
arduino ya uyarlarsın


#include <18F45K20.h>
#device ADC=10
#use delay(internal=32000000)

#define tank1_min   PIN_B0
#define tank1_max   PIN_B1
#define tank2_min   PIN_B2
#define tank2_max   PIN_B3
#define pom1   PIN_D0
#define pom2   PIN_D1

#define ON   output_high
#define OFF  output_low

void main()
{

   while(TRUE)
   {

      if(tank1_min) {delay_ms(200); ON(pom1);}
      if(tank1_max) {delay_ms(200); OFF(pom1);}
      if(tank2_min) {delay_ms(200); ON(pom2);}
      if(tank2_max) {delay_ms(200); OFF(pom2);}
     
   }

}
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 13:14:00
Alıntı yapılan: mert3162 - 04 Mart 2017, 01:09:31
keşke değişken isimlerini direk yazsaydın okumaya üşendim şimdi :) m1 falan yerine motor1 tank1dolusens tank2bossens gibi falan olsa daha rahat okurduk programını

Valla haklısın abi ben bu şekilde başladıydım üsendim uzun uzun yazmaya ,öyle yapcam değişkenleri benimde kafam karışıyo :D
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 13:16:17
Alıntı yapılan: mehmet - 04 Mart 2017, 02:24:46
"... 1 tank doldugunda 2 pompa durup 1 pompa çalışıcak 2 tanka dolum ..."
yerine;
"... 1. tank dolduğunda 2. pompa durup 1. pompa çalışacak 2. tanka dolum ..."
yazmak çok mu zor?

bu kadar sorun ediceğinizi bilsem noktaları koyardım hocam ama bu uyarı şekliniz bana yanlış geldi teşekkürler yinede
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 13:19:14
Alıntı yapılan: Murat Mert - 04 Mart 2017, 12:14:12
arduino ya uyarlarsın


#include <18F45K20.h>
#device ADC=10
#use delay(internal=32000000)

#define tank1_min   PIN_B0
#define tank1_max   PIN_B1
#define tank2_min   PIN_B2
#define tank2_max   PIN_B3
#define pom1   PIN_D0
#define pom2   PIN_D1

#define ON   output_high
#define OFF  output_low

void main()
{

   while(TRUE)
   {

      if(tank1_min) {delay_ms(200); ON(pom1);}
      if(tank1_max) {delay_ms(200); OFF(pom1);}
      if(tank2_min) {delay_ms(200); ON(pom2);}
      if(tank2_max) {delay_ms(200); OFF(pom2);}
     
   }

}


hocam yazdıgın kodun açıklamsını yapabilirmisiniz.

   if(tank1_min) {delay_ms(200); ON(pom1);}  mesela burası hangi durumda aktif oluyor
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: mehmet - 04 Mart 2017, 15:43:44
Umarım noktaların değersiz olduğu bir
dünya içinde olursunuz.
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 16:43:58
Alıntı yapılan: mehmet - 04 Mart 2017, 15:43:44
Umarım noktaların değersiz olduğu bir
dünya içinde olursunuz.

Hocam su açtıgım konuda bu şekilde hitapda bulunmanız bir  moderatör olarak dogru olmadığını düşünüyorum. teşekkürler cevabınız için
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 16:48:52
benim yukarda yazdığım arduino kodun da bir sıkıntı görebilen varmı dogrumu yazdım acaba kodları  ?
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: Murat Mert - 04 Mart 2017, 21:46:24
Sn. @EnesYazıcı burada

if(tank1_min) {delay_ms(200); ON(pom1);}

tank1_min sensörü ....1 ise 200 milisaniye bekle ve pompa1 çalıştır.
tank1_max sensörü ....1 ise 200 milisaniye bekle ve pompa1 durdur.
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 04 Mart 2017, 22:26:26
@Murat Mert hocam bu şekilde kodu yazdım denedim bu durumdada pompanın birisi aktıf oluyor tankın max sesnsörüne sıvı temas ettiğinde duruyor ancak diğer tanka doluma başlamıyor
sensör kısmınıda kendim yaptım sıvı proba temas edince transisitörü tetikleyip input pinine 5 v veriyor sensörleri ölçüyorum voltajlar geliyor anlamıyorum neden böyle , bir yanlış yapıyorum ama nerde
(https://s21.postimg.cc/y2ukdtd0z/LOJ_K.png) (https://postimg.cc/image/y2ukdtd0z/) arduıinodan önce plc üstünde bu şekilde bir devre kurmustum arduino programınıda bu şekilde geçirdim yanlış olan bir kısım varmı plc programında
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: Murat Mert - 05 Mart 2017, 00:02:06
@EnesYazıcı  senaryoyu tam yazarmısın pic e göre yardımcı olmaya çalışayım.
Başlık: Ynt: Arduino ile devir daim programı yardım
Gönderen: eml581 - 05 Mart 2017, 01:02:49
Söyle hocam ;
sistem start ile başlaycak stop butonuna basıldıgında son harekete bitirip stop ediicek ( stop kısmı nasıl olur şüpheliyim şimdi aklıma geldi)
tank1 min seviyede veya min seviyeden düşük ve tank 2 max seviyede ise pompa 2 devreye girecek tank1 e dolum başlıycak
tank1 max seviyede veya tank2 min seviyede ise pompa 2 duracak

aynı senaryo tank 2 içinde geçerli  @Murat Mert ben bu şekilde olabileeğini düşündüm, senaryoda eksik yanlış bir kısım varmı sizce ? Elimde 16f877 pic var bununlada yapabiliriz hocam arduino yerine