picbasic- ADC - yardım

Başlatan serdarecep, 16 Nisan 2008, 16:47:14

serdarecep

arkadaşlar merhaba. picbasic proda ADC ile ilgili bir sorunum vardı.

sharp uzaklık sensorunden veri almaya çalışıyorum. çıkışı 0 - 2.5Volt arasında bu sensorun.
herhangi bir şey görmeyince 0.4V veriyor. ben de bir şey gördüğünde bir LED yakmaya çalışıyorum.
bunu başardıktan sonra daha karmaşık işlere girişicem ama basit bi ADC işlemini başaramadm henuz.
aşağıdaki kodları yazdm ama hepsinde pic çok fazla akım çekiyo(500mA) ve çalışmıyor kod.
hata nerede yardımcı olabilirsenz sevnirm.

once ADCIN komutunu dendm. sample programlara baktım. şunu yazdm,çalışmadı;

       DEFINE ADC_BITS 8
       DEFINE ADC_SAMPLEUS 50
UZAK    VAR BYTE
       TRISA = 255
       ADCON1 = 2
       LOW PORTB.0
LOOP:   ADCIN 0,UZAK
       IF UZAK>30 THEN
           HIGH PORTB.0
           PAUSE 2000
       ENDIF
       GOTO LOOP
   END

burdaki 30 u 256 ya gore oranladım. bişi gorurse 1V çıkış verdi diyelim=50 gibi bişi vermeli, yani IF e girmesi gerek.
30 dışında sayilar da denedim bu arada.


bir de elle yapiyim dedim ADC yi. ona da şöyle bişi yazdm internetten araştırıpama yine çalışmadı,
çok akım çekti yine;

SENSOR  VAR BYTE          
SONUC   VAR WORD
TRISA = %11111111
ADCON1 = %10000000          ;sağa yanaşık yaz

       LOW PORTB.0
LOOP:   GOSUB GETSNSR
       IF SONUC>130 then
           HIGH PORTB.0
           PAUSE 2000
       ENDIF
       GOTO LOOP
       END

GETAD:      PAUSEUS 50              ' Wait for channel to setup
           ADCON0.2 = 1            ' Start conversion
           PAUSEUS 50              ' Wait for conversion
           RETURN
       
GETSNSR:    ADCON0 = %01000001      ' Set A/D to Fosc/8, Channel 0, On
           GOSUB GETAD
           SONUC=256*ADRESH+ADRESL
           ADCON0.0=0
           RETURN

hatam nerede? goren olursa lutfen yardm etsin.

bu arada bağlantılarım dogru. pic ADC dışında her şeyi yapıyor canavar gibi.
son olarak, elinde basit bir ADC ornegi olan varsa buraya koyabilir mi?

herkese iyi çalışmalar.

Maxim

ADC nin akım çekmesiyle bir ilgisi yok ama ?
başka bir hata olmalı ,
yani adc çalışmıyordur tamam ama fazla akım çekmesi başka bir şeydir

serdarecep

sağol cevabn için.
ama başka bişiler yaznca oluyor ve sadece sensoru bağlıyorum farklı olarak. yani kodda bişiler olması gerek diye düşünüyorum
şöyle bişi yazdım forumda biraz gezindikten sonra

"DEVAM:  IF ADCON0.2=1 THEN DEVAM" bu kısmı ekledm oncekine

           DEFINE ADC_BITS 8
           DEFINE ADC_SAMPLEUS 50
UZAK    VAR BYTE
           TRISA = 255
           ADCON1 = 2
           LOW PORTB.0
LOOP:   ADCIN 0,UZAK
DEVAM:  IF ADCON0.2=1 THEN DEVAM
            IF UZAK>20 THEN
                   HIGH PORTB.0
                   PAUSE 2000
            ENDIF
            GOTO LOOP

bunda da led yanıyor en başta sonra elimi çekince tekrar 500mA çekmeye başlıyor. sonra da tekrar yanmıyor led. ADC çalışmıyor yani. zaten pic ısınınca bir süre sonra kapaıtorum yanmasın diye.çok ilginç yaa:)

başına böyle bişi gelen yok mu acaba hiç?

Maxim

hocam senin devrede kesin kısa devre falan var ,
veya çok net bozuk birşey olmalı .

500mA büyük rakam ,

bak şimdi ölçtüm ,
4x20 lcd aydınlatması -dahil ,
16F876A 5 adet ACD girişi çalışır bir şekilde -dahil
16F628A -dahil

hepsinin çalışırken çektiği akım 96mA

serdarecep

sağol abi. haklısın heralde.
ben yarın tekrar bir uğraşıyım devreyle.
sonucu yazarım buraya tekrar.

ipek

adc portlarında koruma diodları olmalı bunlar entegrenin içinde mevcut
zedelemiş olabilirsin.
kaba olarak şöyle deneyebilirsin ic'yi yerinden çıkart gnd ile adc portların omik değerini karşılaştır diğer ad portları ile aynı sonucu almalısın....

Maxim

birde şimdi aklıma geldi ,
IO portlarında çıkışlarda dirençsiz yük yoktur umarım ? mesela led ?

serdarecep

sorunu çözdüm.şu anda çalışıyor. yalnz nedenini hala anlamadm.

çözüm şöyle oldu. sensorun + - uçlarını board üzerinden alıyordum. bu durumda 3 4 saniye düzgün çalştktan sonra bozuluyor ve 500mA çekmeye başlıyordu.

şimdi direk güç kaynağına bağladm sensoru ve çalışıyor. nasıl oldu anlamadm. bir fikri olan varsa yazabilr buraya.
ilginiz için teşekkur ederim iyigünler:)

hatmeto

Boardın güç kaynagı girişi ile sensör çıkışı arasında bir taım elemanlar olabilir (7805 gibi) bu elemanlar belli bir sınır akımını geçince üzerinde ters yöne iletkenlik  başlar. kontrol etmeni öneririm.
Bir admin ataasözü derki: "biliyorsan paylaş mod yapsınlar. bilmiyorsan sus banlamasınlar"