3 Aralık 2011 Cumartesi

pic16f628a ile 3 saniye iptal butonu devresi

pic16f628a on off 3 saniye iptal butonu

Bulaşık ve çamaşır makinalarında çalışmayı 3 saniye basıldığında durduran butonu pic basic pro ile yazdığım basit bir kodla gerçekleştirdim. Uygulama çeşitli projelerde kullanılabilir.

Kod satırları arasında çalışmasını açıklamaya çalıştım. Ayrıca kontrol edilen satır iptal edilerek uzun zaman gecikmeleri için kullanılabilir. Tabi hassas bir zamanlama beklememek gerekir.

pic basic pro kodu:

@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_On
@ DEVICE pic16F628A, PROTECT_ON
@ DEVICE pic16F628A, MCLR_off
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
CMCON=7
OPTION_REG.7=0
PORTA=0
TRISA=%11111111
PORTB=0
TRISB=%11111101

elektroinfo VAR Byte

BASLA:

if PORTB.0=1 then portb.1=1 'BAŞLAT butonu motoru çalıştırır.

if PORTB.2=1 then portb.1=0 'DURDUR butonu motoru durdurur.

if portb.3=1 then goto saniye '3 SANİYE butonu saniye etiketine gönderir.

goto basla

saniye:

For elektroinfo=1 TO 5 step 1
Pause 100
'for next döngüsü ile 3 saniye boyunca her 100msde bir
'butonun
durumu kontrol edilir. İsis simulasyonu için step 5 verildi.Step
'değerleri simulasyonda bilgisayar özelliğinize göre değişiklik
gösterebilir.
'Gerçek uygulamada 30 verilmelidir.

'Ayrıca her komut satırının 1ms gecikmeye
'neden olduğu hesaplanmalıdır.


if portb.3=0 then goto basla 'Kontrol edilen pin.

Next

portb.1=0
'eğer buton durumunda bir değişme yoksa bu satıra gelinir ve motor, butona
'sürekli 3
saniye basıldığı için durur...

GoTo BASLA

Aşağıdaki linkten isis simulasyon pbp ve hex kodunu indirebilirsiniz.

3 saniye iptal butonu dosyalar download

Benzer bir uygulamanın pic12f675 örneğini aşağıdaki linkten indirebilirsiniz.

https://drive.google.com/file/d/0B9F3CyDwz-nIa2FLa1V0REVJd3M/view?usp=sharing

3 yorum

avatar

DAVUT hocam buda yeni ögrenciniz olarak benim kendi düşündüğüm birşey denedim işe yarıyor umarım kanaat kullanırsınız :))



BASLA:
IF TUS=0 THEN " eger tuş basılıysa "
PAUSE 3000 " 3 sny bekle "
ENDIF " dewam et "
IF TUS0=0 THEN " eger tus basılıysa "
HIGH ROLE " roleyi çek "
ENDIF " dewam et "
GOTO BASLA
END

buradaki pause degerini değiştirerek istediğimiz kadar süreyi uzatıp kısaltabiliriz.. ben buton vasıtasıyla 3 snyde röle çektirdim ama sonuç olarak hayal gücü sizin :))

avatar

hocam buda farklı bir düşünce buda kendi derlemem :)
buradada tuşa bastık ve parmagımızı çektigimiz andan itibaren 3 sny bekler ve röleyi çektirir.
konu 3 sny bekleme yapmak oldugu için böyle bir düşüncede geldi aklıma paylaşayım dedim :))



BASLA:
WHILE TUS0=0 " TUS BASILIYKEN "
PAUSE 3000 " 3 SNY BEKLE "
IF TUS0=1 THEN " TUŞ BASILI DEĞİLSE "
HIGH ROLE " ROLEYİ ÇEK "
ENDIF
WEND
GOTO BASLA
END


" bu endıf ve wend komutları döngü içerisindeyken tuşun hıgh olma durumu sadece
bekleme yaptıkdan sonra olur lakin wend komutu if baslangıc komutunun önüne alınırsa
sürekli röle çekili halde kalır.Bu nedenle döngüleri iyi ayarlamak gerekir "

avatar

Farklı bakış açıları için teşekkürler Tuncer katkılarının devamını beklerim.