T

ADC sorunu

Başlatan tpspt, 22 Nisan 2012, 02:12:25

tpspt

merhaba,
bir eğim sensörünün değerlerini okumak için aşağıdaki programı denedim. fakat "acı" değeri sürekli değişiyor. biraz araştırdım neden olabilir diye. okunan analog değerlerin ortalamasını alma gibi şeyler vardı. ama benim okuduğum değerler hiç de birbirine yakın değil. hatta okuması gereken max. değeri bile aşmayı başarıyor.

sırayla okuduğu değerler;
35,
125,
25,
180,
520,
...

farklı programlar da denedim, hazır yazılmış olanları da denedim aynı sonuç çıkıyor. hatta sensör bağlı değilken bile bu şekilde çalışıyor. ne yapabilirim? yardımcı olursanız çok sevinirim...



TRISD=%00000000
TRISA=%00000001
@ DEVICE pic16F877A
@ DEVICE pic16F877A, WDT_on
@ DEVICE pic16F877A, PWRT_ON
@ DEVICE pic16F877A, PROTECT_OFF
@ DEVICE pic16F877A, XT_OSC

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 100

DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4 
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3 
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_BITS 4 
DEFINE LCD_LINES 2

ADCON1=%10001110

HAM VAR WORD
ACI VAR WORD

LCDOUT $FE,1
PAUSE 200

BASLA:
ADCIN 0,HAM
DONGU:   
IF ADCON0.2=1  THEN DONGU
HAM=HAM+1
ACI=(HAM */ 45)
LCDOUT $FE,$80,"ACI=",#ACI
PAUSE 500
GOTO BASLA

ete

Programın başına ;
CMCON=7 komutunu ilave et düzelir.
16F877A A portunda açılışta direk aktif olan Komparatör pinleri mevcuttur.  Bu pinlerin iptal edilmesi halinde sıra Analog pin olarak çalışmaya gelir. Sen komparatörleri iptal etmediğin için onlar kafasına göre komparatör olarak çalışıyorlar.
Komutu ilave edersen kontrol ADC sistemine geçecektir.

Ete

tpspt

dediğiniz gibi yaptım, ama sadece sayılar 0-180 arasına girdi.yani yine sürekli değişiyor

ete

Nerede deniyorsun bu programı.
Gerçek devremidir simulasyonmu?

Ete

tpspt

gerçek devrede deniyorum. simülasyonda sorun çıkmıyo

ete

Peki gerçek devrede de pot varmı ve pota 10V mu uyguluyorsun?
Şayet pic'e 10 v giderse veya 5,5V un üzreinde bir voltaj giderse anında ADC giriş pini bozulur. Muhtemelen seninkide bozulmuştur.
Pine giren voltaj 5V tu geçmemelidir.
Ete

tpspt

gerçek devrede pot yok, sensör bağlı. sensör de max. 5V çıkış veriyor. pic'i de değiştirdim yine aynısı oldu. analog girişe hiçbir şey bağlı değilken de değerler okunuyor.ve voltmetreyle ölçüyorum, A0 pinine 0-0,75 V arasında gerilim geliyor sürekli. bu normal mi?

ete

Sensörün ne olduğunu ve ölçüm aralığını söylemezsen normal olup olmadığını söyleyemem.
Şayet 0-5 aralığında çılıyorsa ve devamlı o değeri veriyorsa normal değil gibi gözüküyor. Ama nerden bileceksin belkide ölçtüğü değer o kadar çıkış vermesini gerektiriyordur. Ama sonuçta kararlı bir çıkış vermesi gerekir. Çıukış sürekli inip çıkıyorsa bu normal değildir. Seni,n şikayetin inip çıkma olayı. Bunu işlemcinin problemi olarak görüyorsun belki ama bana kalırsa sensör çıkışı sürekli inip çıkıyordur. Bunu kesinleştirmeye çalış. Bu gibi durumlarda en iyi tespit ibreli bir ölçü aleti ile yapılır. İbre büyük farklar ile inip çıkıyorsa sensörde sorun var demektir.  Yada çıkış senin dediğin gibi 0-5V değil dir. Bir başka formatta çıkış verebilir.

Sensörden bir şekilde emin olabilirsen o zaman işlemci ile uğraşmaya bakarsın.

Ete


tpspt

sensörü devreye hiç bağlamadığım halde değer okuyor pic. yani sürekli 0-1v arasında değişiyor A0 pinindeki değerler. A1 için de denedim onda da aynısı oluyor. sensörü bağladığımda da yine çok alakasız iniş çıkışlar yapıyor. potansiyometre ile de denedim. 2.5v verdim sensör takıldığında nasılsa yine aynısı oldu.

ete

Sensör bağlı değil ikine ADC nin değişik değerler vermesi normaldir. Çünki bir şey bağlamaz isen o pin FLOAT denilen boşlukta gezinme moduna girer ve rastgele değerler alır. Havadan nem kapar anlayacağın. Aynı denemeyi ADC pinine 100K lık bir pulldown direnci takarak dene istersen. O zaman hep sıfır okunacağını görebilirsin.

Sensör bağlanıncada aynısı oluyor ise büyük ihtimal sensörün ADC pinine herhangi bir empedans uygulamıyordur (uç kopuk muamelesi) . Bu nedenle o sensör arızalıdır diyebiliriz.

Ete

tpspt

 sorunu çözemesem de bu şekilde açıklamasını yapabilirim projemde. ilgilendiğiniz için teşekkür ederim ETE hocam.

wishes

#11
adc parazit yapıyor olabilir. benzer bir durumda sensör çıkışı ile GND arasına büyük bir kapasitif değer mesela 10 uF bağlamıştım sorun düzelmişti. ısı değerleri 70 fahrenheit göstereceği yerde sürekli 60-80 civarı gezinip duruyordu. dediğim gibi kondansatör bağlaman sorununu çözebilir.

sensör GND'si ile güç kaynağının GND'sini mümkünse yakın al. bir de voltmetreyi düzgün bağladığından emin misin. benim bildiğim voltmetre yüke paralel bağlanır, çiziminde seri bağlamışsın gibi geldi.

Powered by EzPortal