Arduino ile devir daim programı yardım

Başlatan eml581, 02 Mart 2017, 22:57:46

eml581

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

mehmet

#1
Kaç tank, kaç motor pompa var anlayamadım.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

eml581

2 tank 4 seviye olcum icin sensor 2 adet pompa

mert3162

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ı
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

mehmet

"... 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?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Murat Mert

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

}
mert07

eml581

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

eml581

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

eml581

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

mehmet

Umarım noktaların değersiz olduğu bir
dünya içinde olursunuz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

eml581

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

eml581

benim yukarda yazdığım arduino kodun da bir sıkıntı görebilen varmı dogrumu yazdım acaba kodları  ?

Murat Mert

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.
mert07

eml581

#13
@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
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

Murat Mert

@EnesYazıcı  senaryoyu tam yazarmısın pic e göre yardımcı olmaya çalışayım.
mert07