pic giriş pini parmaktan algılama sorunu '

Başlatan bahdiyarusta, 03 Şubat 2016, 08:30:09

bahdiyarusta

merhaba

bir projemde picin RB.4 pinini giriş olarak kullanıyorum. 1k ile şaseye çektim. butona basınca pibe 5v geliyor. programda da butona basılınca led yansın gibi bir yönlendirme yapıyorum. buton yerine klemens takip butonu 20-30cm uzatmak istedim burda kablonun ucuna parmağımı dokununca butona basmışım gibi işlem yapıyor. bunun nedeni ne olabilir. yazılımda sigorta ayarları filan etki eder mi devrem standart. 12v giriş 100uf var 7805 devamında 10nf mclr ucu 10k ile 5v da.

yazılım:
@ DEVICE pic16F628A                      'i?lemci 16F628A                                
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açyk
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açyk
@ DEVICE pic16F628A, PROTECT_ON         'Kod Protek kapaly
@ DEVICE pic16F628A, MCLR_ON            'MCLR pini kullanylMIYOR.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanylacak

DEFINE OSC 4
TRISA=%00000000   
TRISB=%11110000
CMCON=7
SAYAC VAR WORD
DEGER var word
DK   VAR BYTE
I VAr WORD
'*****LCD TANIMLAMALARI*****
DEFINE LCD_DREG     PORTA       'LCD DATA BACAKLARI PORTB YE BAĞLI
DEFINE LCD_DBIT     0           'LCD DATA BACAKLARI PORTB.4 DEN BAŞLIYOR
DEFINE LCD_RSREG    PORTB       'LCD RS BACAĞI PORTB YE BAĞLI
DEFINE LCD_RSBIT    0           'LCD RS BACAĞI PORTB.1 BAĞLI
DEFINE LCD_EREG     PORTB       'LCD ENABLE BACAĞI PORTB YE BAĞLI
DEFINE LCD_EBIT     1           'LCD ENABLE BACAĞI PORTB.3 BAĞLI
DEFINE LCD_LINES    2           'LCD 4 SATIRLI
DEFINE LCD_BITS     4           'LCD 4 BİT VERİ ALIŞ VERİŞİ YAPIYOR
PORTA=0
PORTB=0
sayac=0
DEGER=0
DK=1
I=0
SYMBOL START=PORTB.6
SYMBOL ARTIR=PORTB.7
SYMBOL AZALT=PORTB.5
SYMBOL SENSOR=PORTB.4

LCDOUT $FE,1,  "     SISTEM      "     
LCDOUT $FE,$C0,"    BASLIYOR     "
pause 1000
LCDOUT $FE,1
GOSUB REKLAM
READ 0,SAYAC.BYTE0
READ 1,SAYAC.BYTE1
PAUSE 20

SIFIR:
    READ 2,DK
    PAUSE 20
BASLA:
     PORTB.3=0
     IF SENSOR=1 THEN    ' buton burası
     WHILE SENSOR=1
     WEND
     GOSUB PARA
     GOTO CALIS
     ENDIF
     IF ARTIR=1 AND AZALT=1 THEN TOPLAM
     IF START=1 THEN I=I+1
     IF I>8000 then
     I=0
     GOTO AYARLA
     ENDIF
     GOTO BASLA
<<<***bahdiyarusta****>>>
                  - 66 -

ete

Aynı olayı o pin PULLUP ile çalışırken de denemeni çok isterdim.
Pin Pull_Down yapılmış ancak kablo ile uzatınca o kablo anten gibi çalışır ve senin elinde de 50 hz lik sinyal her zaman vardır. Bu sinyali çevrendeki AC kaynaklarından alırsın. Sonuçta bu sinyal elinden kabloya geçerek kablonun ucundaki pini anlık da olsa high yapıyor olabilir. 
Çözüm ne dersen o pulldown direncine paralel 100 bir 100nF kondansatör bağla. Sorun devam ediyor ise kondansatör değerini 100pf ta kadar düşür.

Ete

bahdiyarusta

anladım hocam,

bunları bi deneyim
yani bu tarz uygulamalarda kontrolü şaseye çekerek mi sağlamalıyım.
<<<***bahdiyarusta****>>>
                  - 66 -

Maxim

aynı resmi burayada koyayım..

şu an elimle probu tutuyorum, voltaja dikkat!

[/quote]

bahdiyarusta

<<<***bahdiyarusta****>>>
                  - 66 -

ete

İşlemcilere dahili pullup koymuşlar. Genelde B portundaki bütün pinler içeriden pullup lıdır. Ancak isterseniz açar isterseniz kapatırsınız bu özelliği. Neden adamlar pull-down yapmamışlarda pullup yapmışlar düşünüyormusunuz. Elbet bir sebebi olmalı.
Bu nedenle girişler daima pulluplı olarak çalıştırılmalıdır. Mümkün olduğunca dahili pullup lar kullanılarak hem malzemeden tasarruf hemde PCB de bir de direnç yerleştirme sorunundan kurtulmuş olursunuz.

Bu sorun belliki 50 Hz sinyalden kaynaklanıyor. Ama koyduğun 1K lık pulldown direncide yüksek bir değer değil. Bu direncin normal şartlarda o sinyali bastırmasını bekliyorsun ama o sinyal voltaj değil bir frekans paraziti ve dirence rağmen sinyal pine ulaşıyor. Yapman gereken o 50 Hz sinyali bir şekilde bastırman. Önerdiğim kondansatörler bunu halletmesi gerekir. Sorun yinede devam ederse bir de ferit yüksük denemen faydalı olur. Kabloyu küçük bir ferit yüzük üzerinden bir kaç defa dolandırarak pine bağla ve sonuçlarına bak. Olmadı artık bir 50 Hz lik RC filtre uygulaman gerekecek. Başka önerisi olan varsa söylesin.

Ete

İlyas KAYA

Program sensör verisini çok hızlı kontrol ediyor. Hiç bekleme verilmemiş. Bu nedenle ne yaparsanız yapın yinede sinyal alacaktır. öncelik ile BASLA etiketinin ister en başına ister en sonuna PAUSE 20 veya PAUSE 50 ekleyin.

Eğer 1 K lık direnci yenip gerilim yükseliyor ise sorun büyük demektir. 1K lık direnç zaten çok düşük.
ETE hocanın söylediği gibi pull up yapın ve mutlaka 100nf ile şaseye çekin. Kısa mesafelerde sorun çıkarmayacaktır.
Eğer kablo boyu çok daha uzun 2mt ve üstü olacak ise daha önceki konularda bahsini ettiğim transistörlü giriş devresini kurun. Hiçbir sorun yaşamayacaksınız.

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

bahdiyarusta

yardımlarınızdan dolayı çok teşekkür ederim,, pinleri şaseye çekerek şimdilik kontrolü sağlıyorum.. düzelttim.
<<<***bahdiyarusta****>>>
                  - 66 -

Powered by EzPortal