pic16f628a ile 3 saniye iptal butonu devresi
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
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 :))
YanıtlaSilBASLA:
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 :))
hocam buda farklı bir düşünce buda kendi derlemem :)
YanıtlaSilburadada 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 "
Farklı bakış açıları için teşekkürler Tuncer katkılarının devamını beklerim.
YanıtlaSil