Limit Switch ve Pic Problemi

Başlatan mustafacil38, 10 Ocak 2019, 21:23:35

mustafacil38

Selamünaleyküm Beyler;

Bir problemim var öneri ve yardımlarınızı bekliyorum.
Vito aracım var w638 elime sürgülü kapıyı otomatik yapmak için dişli ve motor sistemi geçti fakat kumanda devresi yok
basit bir h köprüsü ve 4 adet role ile 2 dc motoru süreceğim.
Buraya kadar herşey güzel fakat durma noktasında limit switch kullanmayı düşünüyorum. Fakat kapı tamamen açıldığında yada kapandığında limit switch den gelecek olan sinyal Pic'i sürekli meşgul ediyor ve tekrar açma yada kapatma komutlarını kullanmama izin vermiyor.
Nasıl yaparız bu işi  :)

ete

Ortada bir terslik olsa gerek. Hiç böyle şey duymadım. Limit sw motoru meşgul etmez yazılm eder.
Motora sağa dön diye emir verirsin motor başlar dönmeye ardından Sağ_Limit kapandığında dur dersin motor limit sw yi görünce durur. Artık bu noktadan sonra motor o yöne birdaha gidemez gitmemelidirde zaten.
Ardından motora sola dön emri verilir kapıyı açmak için motor sola döner. Onada sola_limit kapandığında dur dersin oda limiti görünce durur. Bu mantık içinde motoru meşgul edecek herhangi bir şey varmı yok. O halde bu mantığı uygula bence. Çalışır.

Ete

mustafacil38

Ete hocam dönmede durmada bir problem yok motoru meşgul edende bir durum yok limit switch kapandığında sürekli pic'in bacağına sinyal gönderdiği için pic'i meşgul ediyor. Tam uyanmadan okudunuz sanırım mesajımı  :)

Şöyle bir çözüm buldum fakat bu sefer pic'in diğer bacakları kullanılmaz oluyor.

if ((input(pin_a0)==1)&&(input(pin_a2)==1))
a0 pini kapı açma butonu a2 pini switch
if ((input(pin_a1)==1)&&(input(pin_a2)==1))
a1 pini kapı açma butonu a2 pini switch

bu şekilde bir sıkıntı yok çalışıyor kapı kapalı yada açık konumda iken sw pini(a2) aktif olduğu için  problem yok fakat sürekli pic'i meşgul ederek bütün pic'i ziyan ediyor.

İnternette araştırdım baya bu konu ile ilgili ne böyle bir proje ne böyle bir konu yok.
Bitince güzelce hazırlayıp fotoğraflandırarak paylaşacağım. Ek olarak camları kaldırma indirme fonksiyonu vb. de koymayı düşünüyorum. Çözüm bulabilirsek ne ala bulamazsak 12 serisi bir pic ile bu işi ayıracağım.

Saygılar Mustafa ÇİL

İlyas KAYA

Yazılımı limit switch neden kilitlesin ki ? While döngüsüne sokmuş olmanız lazım ki kilitlesin ama ortada ne bir yazılım ne de şema gormedigim için ne söylesek boş.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Makmuh

Ben çok acemiyim bu konularda ama ben olsam şunu yapardım
Döngü olustururdum sağ limite a değişkeni sola b değişkeni tanımlardım döngüye başlamadan önce limitleri kontrol ettiririm a=1 işe şuraya git şunu yap değilse şunu yap gibi program dondugu müddetçe kilitlenme olmaz gibi

ete

Tam uyanıp okudum mesajını. Ne alakası var uyanmakla uyanmamakla onuda anlamadım. Sen ortaya bir teori koyuyorsun ama detay vermeden kendi sabit fikrini ortaya koyarak konuşuyorsun bizde aksini iddia ediyoruz.  Halada ısrar ediyorum. Mikrosw pic'i meşgul etmez sen ettirirsin. Yazılımın ettirir.

Tabiiki akıllı bir yazılım pici meşgut ettirmeyecek komut diilimi içerebilir.
Sen kısa yoldan o yazdıklarını buraya koymazsan bu konuşma alıp başını gidecek. Koy ki bizde nasıl meşgul ediyormuş senin SW pici görelim. Belki bir akıl veririz ne dersin?

Ete

mustafacil38

Buyrun Hocam dosyalar ekte basit bir yapı olduğu için yada daha önceden karşılaştığını varsayarak yüklemedim kusura bakmayın.
Saygılar..

ete

#7
C dilinden çok süper anlamam. Ancak kodu takip edebilirim. Senin kodu da edebildiğim kadar ettim.
En başta bir pini SET edip ardınan 2000 ms (2 sn) bekleme koymak çok akıllıca değil. Pic'i bu gecimeler meşgul eder.
İkincisi  Motora hareket verip B0 daki butona basınca kesme oluşması gerekiyor. Kesme içinde is A2 pinini 1000 ms süre ile HIGH yapıp ardından 1000 ms LOW yapıyorsun. Peki A2 pini giriş pini değilmidir Normalde butonlardan birine basınca A2 pini HIGH oluyor bu giriş pini olması gerekir. TRISA da bu giriş pinlerine 1 vermemişsin. Nasıl oluyorda çalışabiliyorlar onuda anlamadım. Belki C dilinin bir özelliğidir.

Sonuç olarak programında bana göre kusurlar var. İstersen buraya işin senaryosunuda yaz birde ben vereyim bir program onu denersin bakalım arada nasıl bir fark olacak.

Bu arada tasarım da da kusurlar var. Opto IR led seri dirençlerini koymadığın için B protunda bağlı olduğu pinleri gri yapıyor. Bu fazla akım çekildiğinin işaretidir. Gerçek de bu devren zaten çalışmayacaktır.  Ayrıca Motoru süren rölelerin sürücüleride ters olmuş. Devrenin doğru halini ilişikte veriyorum bakarsın.
Bu arada Limit sw leri göremedim devrende belki var ama isimlendirmediğin için hangisi limit sw anlayamadım.
Bu tür devrelerde limit switchler arıza yapmaya meyillidirler Mutlaka bir zaman kontrolü de koyman lazım sisteme.
Yani motora kapyı açmak için hareket verdin. Zaman tutup ne kadar zamanda kapının açıldığına bakman gerekiyor. Diyelimki 4 sn sürede (4000 ms de açılıyor ) sen 4500 ms lik bir sayac da yapman gerekki şayet limit switch durdurmaz ise zamanlayıcın o motoru durdurması gerekir. Aksi halde bir şeyleri yakarsın arabada.

Olay basitçe bir kapnın kotrolü ise senaryo aşağıdaki gibi olmalı bence.
1. Kapyı aç emrini (butonla) verdik. Kapı zaten açık değil ise Motor açma yönünde harekete başlar.
- Aynı zamanda Sayac 4500 ms lik zamanı saymaya başlar.
- Şayet LimitSW_ACIK=0 olursa motora dur emri verilir. Bu noktada bir bit değişkeni set edilerek (ACIK=1) kapının açık olduğunu belirlemiş oluruz. Bu sayede yeniden bir aç ameri verilirse ACIK=0 olmadığı için emri yerine getirmez sistem.
- Şayet 4500 ms içinde motor LimitSW_ACIK=0 olmaz ise motora dur emri verilir çünki açılmıştır ve Limit sw arızalıdır. Heme bir arıza ledi ne flash yaptırılarak durum kullanıcıya belirtilir.

2. Kapıya  Kapat emrini verdik kapı zaten kapalı değil ise (ACIK=0) motor kapatma yönünde harekete başlar.
- Sayaca 4500 ms lik sayma emri verilir.
- Kapama yönünde LimitSW_Kapalı=0 olursa motora dur emri verilir ve durur. Dur emri verildiğinde bütün girişler sıfırlanır başlangıç haline alınır.
- 4500 ms içinde LimitSW_Kapalı=0 olmamış ise motora dur emri verilir ve hata ledi flash yaptırılır.
Bütün senaryo budur eksikleri varsa eklersin.

Bu arada Limit switchlerin motoru süren röleleri besleyen hatta bağlanmasında yarar var. Motor konumu limitsw hizasında değil ise switch kaplı kalır ve röleye voltaj aktarır. Limit siwitche ulaşılınca devre açılır ve rölenin enerjisi kesildiği için motorda durur. Bu aşamada B1 girişinin otomatik sıfırlanması gerekir. Benzer şekilde kapatma kısmına B2 girişinin sıfırlanması (LOW a çekilmesi) gerekir.
Belkide daha akıllıca bir switch konumu olarak B1 ve B2 hatlarına seri bağlamak gerekir. Böylece bu hatlar kesilirse motor da durur. Motor switch konumundan uzaklaşınca (ters yöne hareket sonucu) hat otmatikman aktif hale gelecek ve bir sonraki komut için hazır olacaktır.

Ete

not: versiyon farklılığı nedeni ile simule devresini yükleyemez iseniz jpeg olarak da ekledim.


mustafacil38

Ete Hocam önceki attığım karmaşa ve kalabalık biraz denemelerden kaynaklıydı. Son Temiz hali incelerseniz eksik, yanlışımız veya şöyle daha iyi olur dediğiniz durum varsa memnun olurum.
Tüm dosyalar ekte mevcuttur.

ete

Bir sürü işin arasında üyelere yardımcı olabilmek adına mesajları dikkatlice inceliyor ve detaylı cevaplar vermeye çalışıyorum. Bir sürü site mesajı ve aynı zamanda da özel mesajlar geliyor hepsine cevap yazmak için saatlerce pc başında kalıyorum. Bu olmadı şunu incele demek biraz harcadığım emeğe saygısızlık oluyor.
Verdiklerini inceledim ve olması gerekenleride söyledim. En baştan bunları verseydin ona göre yapardım açıklamamı.
Şimdi sen incele ve varsa kendi kusurunu kendin bul artık.

Ete

İlyas KAYA

Q1, Q2 , Q3 ve Q4 gereksiz bence.

RL7 ve RL8 Neden var onu anlamadım.

Transistörler bağlı iken "Pullup" dirençleri olmayacağına göre "pulldown" dirençleri nerede ?

Ayrıca hiç input tanımlanmamış. IF ile kontrol edilirken input yapar ama ilk anda butonlardan biri basılı ise veya limit switch basılı ise kısa devre olur.

Giriş portlarını giriş çıkışları çıkış olarak tanımlayınız derleyiciye bırakmayınız.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Akaan

Konu biraz eski ama fonksiyon eksik. Kapı açma butonu ve swich 1 ise demişsin işlemcinin ne yapacağını belirtmemişsin. Başka ihtiyacı olanlar için benim uyguladığım yöntemi yazayım. Ben stop swichleri normalde açık olarak kullanıyorum. Buton 1 swich 1 ise ileri yön çıkışı aktif. Buton 1 swcih 0 ise ileri yön çıkışı pasif şeklinde.


Powered by EzPortal