Mikroişlemci kontrollü mini pnomatik pres - YARDIM

Başlatan atmaca, 10 Mart 2015, 17:22:25

atmaca

Merhaba Arkadaşlar,
Fırsat buldukça picbasic ile pic programlama konusunda kendimi geliştirmeye çalışıyorum,  daha yolun başındayım, şimdiye kadar led animasyonu gibi basit projeler yaptım. Kendimi , uygulamalı geliştirmek üzere  işyerinde ihtiyacımız olan mini pnomatik bir presi yapmaya karar verdim. Mekanik tasarımlarını bitirdim ve kullanacağım elektronik parçaları da internetten araştırarak belirledim ve mekanik tasarıma adapte edebilmek için aldım.  Programlama konusunda takıldım kaldım. Pic Basic ile Programlama konusunda hangi yolu izlemeliyim, Ana hatları nasıl olmalı, program nasıl dallanmalıdır konu hakkında yardımcı olursanız sevinirim.
Presin çalışma sistemini aşağıdaki iki slaytda görebilirsiniz; Ayrıca Pic16f84 ile yaptığım örnek şemayı da görebilirsiniz.
Kısaca
Ayar; 7segment 2 digit katod display üzerinde presin kapalı kalma zamanı ayarlanır. Aynı anda Set ve yukarı tuşuna basılarak veya Aynı anda Set ve aşağı tuşuna basılarak ayarlanır.

1- kalıp parçası prese takıldığında 1 nolu switch sinyal alır.
2-Pres üzerinde 2 adet start butonu vardır. 1 nolu switch + 2 adet start butonuna basıldığında pres kapanır.
3-Pres aşağı son pozisyonuna geldiğinde 2 nolu switch sinyal alır ve 7 segment ekranda sayıcı sayar. Daha önce set edilen değere geldiğinde pres otomatik yukarı kalkar.

Malzemelerim;
Mikroişlemci:   PIC 18F4520,
Display:   2x 7 segment katod,
Delikli plaket   10x17 ,
Röle:    12V 2 kanal röle kartı,
Optocopler   MOC 3083 ,
Soket   precision - 40lı ,
Entegre   CD 4511 ,
Regulatör   7805CV ,
Trafo   2x12V 8W ,
Diyot , Resistance   ,
Pnomatik silindir,
Pnomatik valf  : 5/2 selenoid

ete

Çok zor bir senaryo değil. Biraz gayretle ve düşünme ile yapılabilir.
Öncelikle bu işlem için düşündüğün işlemci bu işe çok bile. Ama madem düşündün örnek şema neden 16F84 ile çizildi.
Bırakın artık şu 16F84A yı. Taş devrinde kaldı o işlemci artık.
Her neyse belirlenen senaryo şöyle;
1. Sistem çalışmaya başladığında henüz start verilmeden gerekirse süre ayarı yapılmalıdır. Bunu yalnızca stand-by modunda yani start beklerken yapmak gerekir. Bu aşamada stand-by modu yalnızca ;
- Set tuşuna basılmışmı bakacak basılmış ise ayar alt programına gidecek.
   Ayar alt programında hem set hemde aynı anda aşağı veya yukarı tuşuna basılmışmı bakılacak. Hangisi basılmış ise ona göre bekleme zamanı ayarlanacak ayarlanan zaman ekranda gösterilecek.bu alt programdan ayarlama bittikten sonra ya direk çıkılacak yada set tuşuna yeniden basılarak çıkılacak. Aslında girerkende önce set tuşuna basılarak ayar menüsüne girilse çıkarkende yine set tuşuna basılarak çıkılsa daha uygun olurdu.
- Standby modunda ayrıca Sw-1 kandımı bakılacak. Kapanmış ise sistem çalışma moduna geçecek.
- sw-1 kapandı diyelim ardından tus-1 ve tus-2 basıldımı ona bakıp bekleyecek. Basıldığı anda;
  sel-1 aktive edilerek punomatik pistona hava gitmesi sağlanacak ve pres tablası aşağı inecek.
- Tabla aşağı inince sw-2 aktif olacak. Bu aşamada sw-2 nin aktif olup olmadığı ne işimize yarayacak belirtilmemiş. Bu sw aktif olunca belkide sel-1 pasif hale getirilmelidir. Burası açıklığa kavuşmalı bence. Ayrıca tablanın yukarı kalkması için belkide sel-1 de bir konum değişikliği gerekecek. Belkide bu yapılmalıdır.
- Tabla aşağı inince ve sw-2 aktif olunca set zamanı saymaya başlayacak. Süre dolunca sayac duracak ve tabla yukarı kalkacak ama nasıl????
Diyelimki tabla yukarı kalktı bir şekilde. Yeşil parça hala orada takılı duruyor ve SW1 aktif konumda bu nasıl olacak.
Tabla yukarı kalkınca birisi o yeşilparçayı yerinden çıkartacakmı.? Kısaca ikinci çalışma peryodu nasıl başlayacak burasıda açıklığa kavuşmalı.

Bu sıralamaya göre sen bir çalışmaya başla bakalım. Nerede takılacaksın. Gerisinde yardım edeceğim.

Ete

atmaca

ETE Hocam öncelikle ilginiz için teşekkür ederim.
--Presin çalışma sisteminde yeşil parça; her pres işlemi ardından çıkarılıp üzerine preslenecek malzemeler yerleştirilip tekrar yerine takılacak. SW1 ile parça yerine takılıp takılmadığı kontrol edilecek.
--SW2 ile presin pozisyonu kontrol edilecek ve pres alt pozisyonda ise timer çalışacak. ayarlanan bekleme zamanı kadar sayıp Röleyi kapatacak böylece valf eski konumuna geldiği için pres yukarı çıkacak.

Ben yönergeleriniz doğrultusunda bir ön çalışma yaptım fakat programı derlerken hata verdi, nerde yanlış yapıyorum bulamadım. yardımcı olursanız sevinirim.

ete

Öncelikle hemen belirteyim Simulasyon V.8 dosyalarını açamıyorum. Bu nedenle şemayı jpg olarak dosya içine mutlaka koyunuz.

İkincisi yazdığın programı derledim sorunsuz derleniyor. Hata verdi demişsin ama hatanın ne olduğunu nedense söylememişsin.

Üçüncüsü, Pic denetleyicileri tasarlayanlar PORTB yi biraz özel kılmışlar. Dahili pullup ları var. BU nedenle B portu mutlaka ve mutlaka Tuş, Anahtar, Tuş takımı, Sensör gibi harici elemanların giriş portu olmalıdır. Mesela A portunada analog özellikler (genelde) vermişler dolayısıyla bu port da analog girişler ,komparatör işlemleri gibi işler için kullanılmalıdır. C portu genellikle Donanımsal seri haberleşme  (I2C- SPI - USART) işlemleri için kullanılıyor. D portun da da bazı özellikler var ama daha az kullanılan özellikler olduğında genelde display , 7 segment gibi elemanları buraya bağlamakta yarar var.
Bu açıklamaları dikkate alarak tasarımını yeni baştan yapmalısın. Bu özellikleri uygun değerlendirirsen bazı malzemeleri (pullup dirençleri gib) kullanmamış olacaksın. Buda kartın tasarımını kolaylaştıran bir husustur. Yolun başınd aiken bu değişikliği yapmanda fayda görüyorum.

Gelelim program konusunda. Sana bazı açıklamalar verdim hatta program senaryosu ile ilgili bazı sıralamalar verdim.
Son mesajına dayanarak bu senaryoyu yenidenveriyorum. Kodları buna göre yazmanda yarar var.
Program bazı aşamalardan meyadana gelecek. Bu şekilde aşamalı çalışma düşünme mantığınızı geliştirir ve hata yapma olasılığınızı azaltır.
Programın birinci aşaması yalnızca SET tuşuna basılmışmı basılmamışmı kontrol edecek. Basılmış ise program otomatikman ayar menüsüne geçecek.
Basılmamış ise bir sonraki kontrol olan Start anahtarı (SW1) kapanmışmı kapanmamışmı kontrol edilecek. Kapanamış ise program yeniden Basla etiketine atlayarak bu kontrolleri yeniden ve sürekli yapacak.

SW1 anahtarı kapanmış ise bu sefer program ikinci aşamaya geçecek. Bu aşamada TUS1 ve TUS2 butonlarına aynı anda basılmışmı basılmamışmı kontrol edilecek.
Bu tuşların ikisine de basılıncaya kadar program orada bekleyecek Basılmış ise program bir sonraki aşama olan Üçüncü aşamaya geçecek. Üçüncü aşamada;
ROLE-1 çektirilerek işlem başlatılacak ve bu sayede Tabla aşağı inecek. Tabla aşağı inince SW2 kapanmışmı bakılacak.
Kapanmış ise Program Dördüncü aşamaya geçecek.
Dördüncü aşamada SET süresi kadar zaman sayılacak. Sayılan zaman SET süresine ulaşınca Role-1 kapatılacak. İşin mekanik kısmını çok iyi bilmediğim için soruyorum!!, şayet Role-1 kapanınca tabla otomatik olarak eski konumuna geri dönüyor ise mesele yok. Ama dönmesi için Role-1 kapatılıp Role-2 çektirilecek ise burada Role-2 çektirilmesi gerekecek.
Diyelimki Role-1 in kapatılması tablayı yukarı alıyor. O halde Program Dördüncü aşamadan çıkmak için SW2 anahtarının açılmasını bekleyecek. BU anahtar açıldığında sistem Beşinci aşamaya geçmiş olacak.Bu son aşama olup SW1 anahtarının açılması beklenecek. Yani başlangıçta içeri yerleştirilen Yeşil malzeme kullanıcı tarafından geri çıkartılacak.
İşte SW1 anahtarı açılır açılmaz sistem Birinci aşamaya (BASLA etiketine) geri dönecek ve SW1 anahtarının kapatılmasını bekleyecek.

Şimdi gereken değişiklikleri yapıp programını bu sıralamaya göre aşama aşama yaz bakalım.

Ete




sonmoikan

#4
Erol Hocam Ben de ilk olarak dosyayı indirdim, derledim ve hata verdi.
Sigorta ayarlarını silip denediğimde derleme yaptı. Girilen sigorta ayarlarından farklı bir sigorta ayarı girdiğimde derliyor,
sebebini araştırırken "C:\PBP\18F4520.INC" dosyası içerisindeki ayarlarla bire bir aynı sigorta ayarları yapılmış.
Tekrardan aynı sigorta ayarlarını program içerisine yazınca hata veriyor imiş.
ABDULLAH

ete

Hatanın sebebi INC dosyasındaki sigorta ayarlarının kapatılmamış olmasıdır. Başka bir şey değil.
Bende kapalı olduğu için hata vermeden derlemiş oldu.

Bu arada ben çalışmayı tamamladım. Kolaylık olsun diye hazırladığım şemayı buraya veriyorum.
Elbette sen kendi şeman üzerinden de gidebilirsin. Ama ben bu şemayı tercih ettim. Devreye ledler ilave ettim.
Programın safhalarında ledler yeri geldikçe yanmakta ve sönmektedir.

Ete

atmaca

#6
Hocam açıklamalarınız için teşekkür ederim, devre ve programı ekteki gibi hazırladım. yine hata veriyor diye soracaktım ki siz inc dosyasında bir kapatma işlemi yapmam gerektiğini belirtmişsiniz Kapattım derleme yapıyor.Programın son halini kontrol ederseniz sevinirim.

ete

Programı sen kontrol etsen ve bana çalışıyor yada çalışmıyor yada şurada sorun var desen daha iyi olmazmı.
Ete

atmaca

Hocam eksik yazmisim kusura bakmayin. Proteusta simule etmeye calistim fakat set tusuna ve yukari asagi tuslarina bastigimda ekranda herhangi bir degisiklik olmadi.

ete

Ne yazdığını farkında değilsin anlaşılan. Başlangıç bölümünde ekranla ilgili bir komut varmı?
Zaman sayma esnasında ekranla ilgili bir komut koymuşmusun?
Bunların hiç birisi yok. Ekrana yazdırmayı bir alt programa al ve lazım olunca oraya gosub ile gidip return ile dön.

Ete

atmaca

Hocam en başta da dediğim gibi pic programlamada yeniyim, kendimi geliştirmeye çalışıyorum. Dediklerinizi yapmaya çalışıyorum ve eminim basit komik hatalar yapıyorum, çünkü bir türlü devreyi çalıştıramadım. Ayar tuşlarına bastığımda ekranda bir değişiklik olmuyor. Nerde hata yapıyorum bulamadım. 

ete

İlişikte hem benim program hemde senin programın düzeltilmiş halini görebilirsin.

Ete


atmaca

Hocam çok teşekkür ederim ellerinize sağlık.

Powered by EzPortal