12f675

Başlatan fuat16, 14 Ocak 2015, 13:28:05

fuat16

Diğer konuda yardımlarınız için teşekkürler dostlar.

Yeni bir devre tasarladık ve düşündük. devremiz bir bobin ve tuştan oluşuyor. Tuşa her bastığımızda bobin çekme süresini uzatıcak ve kendisi bunu kaydedicek.

birkere bastık 5 sanıye çalıştı durdu.
iki kere art arda bastığımda 10 sn çalışıp durdu
art arda 10 sefer bastığımızda 50 sn. tekabul edicek şekilde

Bu konuda kod yardımı edicek dostlar veya başka bir şekilde devreyi tasarlayabiliriz bize akıl verecek deşişik yollar gösterecek dostlarımızı cevaplarıyla bekliyorum. Kolay gelsin...

ete

Madem bir devre tasarladınız, devre nerede?
Bu şekilde tuşa bastıkça zaman artıran bir sistemin randımanlı çalışacağını düşünebiliyormusun.
İşin içine işlemci girecek ise neden tuşa bastıkça LCD ekranda süreyi görüp tamam bu kadar yeter diyecek bir sistem yapmıyorsunuz? Sonuçta devre çok zor değil ama hiç bir şey bilmeyip iş yapmaya kalınca her şey zor oluyor tabiiki.

Bu site daha ziyade bir şeyler yapıpda fikir ve bilgi olarak tıkanmışlara genelde hizmet ediyor. Benim bu konudaki prensibim açık ve sürekli dile getiriyorum. Ortaya bir şeyler koyacaksın ve bir yerde tıkanırsan orada ben yardım edeceğim. Sıfırdan projeleri yapmayı desteklemediğimi ve desteklenmesinede karşı olduğumu belirtiyorum sürekli. Şimdi sen mutlaka diyeceksinki akıl soruyorum işi yapın demiyorum. Böyle düşünüyor isen işte sana akıl,

İKi alternatifli seçenek sunuyorum,
Alternatif-Bir:
8 pini bir işlemci mesela 12F675 alırsın. Bir pinine buton bağlarsın (GPIO.0) diğer pinden den selenoid çıkışı alırsın (GPIO.1)
Program 10 nolu eprom hafızasını okuyarak açılır. Şayet okunan değer 255 den farklı ise yani önceden bir kayıt yapılmış ise çalışma süresi bu olacaktır demektir. Okunan değer SURE isimli değişkene aktarılır.
Bütün bunları yapabilmek için işlemcinin GPIO.0 pini giriş diğer pinler çıkış olarak ayarlanır.
Basla satırından itibaren program tuşa basılıp basılmadığını kontrol eder.
Basılırsa SURE=SURE+5 şeklinde bir ifade kullanıp elde edilen süre bilgisini yine 10 nolu eprom adresine kayıt edersin.
Tuşa bastıkça sürekli artırma yapmasın diye  WHILE TUS=0:WEND şeklinde bir komut satırı kullanıp tuşu bloke edersin ve bırakılıncaya kadar program orada bekler.

Bu aşamadan sonra bobin bir şekilde çektirilmelidir. Bunu sürekli yapacak ise program CIKIS=1 der altına PAUSE (SURE*1000) ve onunda altına CIKIS=0 deyip BASLA etiketine gider.
Buraya kadar açıkladıklarımla sistem sürekli çalışır durur. Şayet selenoid tuşa her basışta çalışıp duracak ise biraz ters bir durum var demektir. Zira her tuş basılışında sürede artacak aynı zamanda bobin çekecek. 10 defa bastıktan sonra ne olacak 11 defa basılınca süre 55 sn mi olacak. Bu belli değil. Bu konuda tedbir alınmalı üst limit tuş basımından sonra kontrol edilmelidir.

Alternatif-2:
18 bacaklı bir işlemci (16F628) kullanılır ve A portuna LCD bağlanır. B protuna hem tuş hemde Selenoid bağlanır.
Tuşa her basılışta ekranda süre değeri gösterilerek işe biraz daha görsel efekt katılmış olur.

Zaman uzadıkça Pause komutu hassasiyetide düşebilir. Bunu önlemek için TMR1 sayacını 500 ms lik dilimler halşnde kesme yaratacak şekilde kullanmak en akıllıcası olur. Böylece daha hassas bir zamanlama ile selenoid çalıştırılmış olacaktır.


Ete

Powered by EzPortal