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
}
}
Kaç tank, kaç motor pompa var anlayamadım.
2 tank 4 seviye olcum icin sensor 2 adet pompa
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ı
"... 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?
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);}
}
}
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
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
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
Umarım noktaların değersiz olduğu bir
dünya içinde olursunuz.
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
benim yukarda yazdığım arduino kodun da bir sıkıntı görebilen varmı dogrumu yazdım acaba kodları ?
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.
@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
@EnesYazıcı senaryoyu tam yazarmısın pic e göre yardımcı olmaya çalışayım.
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