program yardım

Başlatan nihatari, 01 Mart 2006, 00:16:30

nihatari

merhaba arkadaşlar benim bir program sorunum var.
Programda iki fotoselim olacak.Birisi normalde açık diğeri ise normalde kapalı. Benim sorunum normalde açık olan fotosel malı gördüğünde çıkış verecek diğer fotosel ise normalde kapalı iken açıktan kapalıya geçtiği anda (yükselen kenarda) ilk fotoselin verdiği çıkışı kesecek.Program etiket yapıştırma programı. İlk fotosel malı görecek motoru döndürecek. Diğer fotosel ise normalde etiketi görüyor iken motor döndüğünde etiket arasını görecek tekrar etiketi gördüğü sırada motoru durduracak. Yardımcı olursanız çok sevinirim arkadaşlar..

nihatari

arkadaşlar yardım edecek kimse yok mu?
Acil yardım lütfen

Lütfi AYYILDIZ

Bi algoritmasını oluştursan iyi olacak bu şekilde ne yapmak istediğin pek anlaşılmıyor.

nihatari

Sistemimiz etiket ünitesi olacak.Bantdan sürekli geçen her malzemeye etiket yapıştıracak.
Sistemde 2 adet fotoselim ve sürücülü servo motorum var.
1 nolu fotosel bantdaki malı gören fotosel.
2 nolu fotosel etiketi gören fotosel.(etiketi sürekli görüyor)

1 nolu fotosel malı gördüğünde etiket motoru çalışacak
2 nolu fotosel normalde etiketi görüyor iken motor hareket ettiğinde etiket arası yani boşluğu görecek va daha sonra tekrar etiketi gördüğünde motor duracak
(yani normalde 1 iken 0 olacak tekrar 1 olduğunda çıkış verecek)

Sistem bu şekilde senkron olarak çalışacak.

Lütfi AYYILDIZ

Program mantığı böle, geliştirilebilir. Bunu pic kullanmadanda yapabilirsin fotosellerin kontakları ile biraz uğraşman yeterli.


TRISB=%00000011
fotosel1 var portb.0
fotosel2 var portb.1
motor var portb.2
basla:
if fotosel2=0 then low motor
if fotosel1=1 then high motor
if fotosel1=0 then low motor  
goto basla

kesmez

2 fotosel 4 durum demektir..
00,01,10,11 durumları
bu mantık durumlarında nasıl bir çıkış fonksiyonu istiyorsan
karnough diyagramından devreni oluşturabilirsin..
"İnned dine indallahil İslam" (2-19)

nihatari

Ben asıl sorunumua anlatamadım herhalde;

Normalde 2.çıkışım benim high konumunda ve bu konumda motorum diğer sensörden high aldığı için çalışıyor.
2.Çıkışım low pozisyonuna geliyor motor hala çalışıyor.
2.Çıkış high pozisyonuna tekrar geldiğinde motor stop ediyor.

Yani yükselen kenar mantığını programda nasıl belirtiyoruz.

ftsahin

Fotoseller ve motorun lojik durumları aşağıdaki gibi mi olacak?

Fotosel1.....High.....Low.....Low.....High............
Fotosel2.....High.....Low.....High....High............
Motor.........On.......On.......Off......On..............

Eğer böyle ise değişimi algılamak için her iki fotoselin de Low olduğu durumu başlangıç olarak kabul edersin. Bu durumu bir flag ile tespit ettikten sonra fotosel2'nin High olmasını beklersin.

TRISB=%00000011 
fotosel1 var portb.0 
fotosel2 var portb.1 
motor var portb.2 
motordurdur var bit

motordurdur=0
basla: 
if (fotosel1=1) and (fotosel2=1) then high motor 
if (fotosel1=0) and (fotosel2=0) then motordurdur=1 
if fotosel2=1 and motordurdur then 
low motor  
motordurdur=0
endif
goto basla

kesmez

anladığım kadarıyla  2 ye kadar binary sayıcı yapmalısın..

çıkış               fotosel
-----------------------
   0                    0
   0                    1
   1                    0
   1                    1
-------------------------


fotosel 2 defa durum değiştirdiği halde çıkış 1 defa durum değiştirecek...mi :)
"İnned dine indallahil İslam" (2-19)