adc referans sorunu

Başlatan cann, 05 Temmuz 2012, 13:31:19

cann

İyi günler
ADCON1 = %00000101
komutu ile
ADCIN 3 referans seçiyorum.

proteusda
AN3 e 2.5 volt uyguluyorum. program çalışmıyor.
5 Volt verince çalışıyor.
oysaki ben AN0, AN1 ve AN3 e 2.5 volt üzerinden çevrim yapmak istiyorum. AN3 üde bu yüzden referans yaptım. 5  voltta problem yok. 8 bit çevrime göre formülleri 2.5 volt 255 olacak şekilde düzenliyorum, olmuyor.

nerede hata var, proteus 5 volt dışında aktif yapmıyor adc yi

teşekkürler

ferit06

hata.... kullandığınız işlemci nedir?  Tüm işlemcilerde ADCON yazmacı birebir uyumlu değil.

cann


ferit06

proteusun hangi versiyonu?

TIRISA.3=1 mi?

cann

proteus7.7
trisa3=1

input 2.5V de inaktif adc, 5 volt verip potla 2.5 e düşürüsem aktif, ama tabi formüller gerçek olmuyor.

pcb

adc nin okuduğu değer 2,5V dan fazla ise ve referans da 2,5V ise problem olabilir.
Siz çözünürlüğü arttırmak istiyorsunuz sanırım yani 9bit

cann

hayır
3 adc girişine 5 v verirsem isiste buna göre çalışıyor ve formülleri buna göre kurabiliyorum.
gerçekte 3 girişede 2.5 v vereceğim. isisde 2.5 v verdiğimde simüle etmiyor, formülleri 2.5 v a göre revize ettiğim halde

teşekkürler

cann

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 0
TRISA.3 = 1
TRISA.5 = 0
TRISC = 0
TRISD = 0
ADCON1 = %00000101
CMCON=7

buradamı bir eksiklik var acaba?
AN3 referans seçildi. 2.5 volt verince neden çeviri yapmıyor?

ferit06

verdiğin değerlere göre 2.5v refereansın geçerli olması gerekir. Ancak yazdığın programın(nedense kaç mesaj yazılmış hala ortada yok, çok gizli bir program olsa gerek) içersinde bir yerlerde AN3  ü çıkış olarak kullanacak bir komut var ise başta yazdığınız TIRIS değeri geçerli olmaz ve otomatik olarak o pin giriş/çıkış olarak yönlendirilebilir. Belki böyle bir şey vardır. (dikkat:  Devre ve program olmadan cevap vermeme konusunda bazı üyeler gerçekten sağlam duruyorlar. Bizim gibi bazıları ise konu cevapsız kalmasın diye cevap veriyorlar.)

cann

programın tamamında bir şey yok hocam, olup olancası role çalıştırıyor, ilgi ve yardımların için teşekkürler.

basittir mutlaka ama bilmediğimden böyle.
interneti iyice bir daha tarayayım, benzer bişey bulurum inşallah
adcon0

FUNKY

çalışıyor .bir sorun yok.. referans voltajını  da ölcümünü de yaptım bu arada...
Device 16F877A
	Xtal=20

Config CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_OFF, PWRTE_on, WDT_OFF, HS_OSC, BOREN_OFF, CP_OFF, WDT_OFF, WRT_OFF

Declare Adin_Res 10      
Declare Adin_Tad 32_FOSC  
Declare Adin_Stime 20     

Declare LCD_Type = 0        
Declare	LCD_DTPin		PORTD.4
Declare	LCD_RSPin		PORTD.2
Declare	LCD_ENPin		PORTD.3
Declare LCD_Lines		2
Declare LCD_Interface	4



Dim volt As Word
Dim volt2 As Word
Dim ref As Word

Init:    
    PortB_Pullups=1
    TRISA=%11101111
    TRISB=%11111111
   
    TRISC=%00000000
    TRISD=%00000000
    TRISE=%000
    
    
    
   basla:
   ADCON1=%10000101
   volt= ADIn 0
   DelayUS 50
   volt2= ADIn 1
   DelayUS 50
   ADCON1=%10000000
   ref=ADIn 3
   DelayUS 50
   Print At 2,1,"ref:",Dec ref
   Print At 1,1,"v1:",Dec4 volt,"  ","v2:",Dec4 volt2
   GoTo basla


cann

çok güzel bir destek teşekkürler

     
Declare Adin_Tad 32_FOSC 
bende eksik olan bu satır; basic proda nasıl ifade edilir.
bir diğer fark burada 10bit
ben 8 bit yaptım, Vdd dışında referans kullanıldığında 10 bit zorunlu gibi bir şeyler okuduğumu hatırlıyorum, ama emin değilim.

ferit06

#12
Eğer siz de referans için dc sinyali kullanıyor iseniz proteus ta bu doğru simüle edilemiyor. Bunun yerine power bağlantısını kullanıp bundan pot aracılığı ile 2.5V elde ederseniz buna göre simülasyon yapıyor. Ve 2.5v referansa göre işlem yapıyor.

@funky nin gösterdiği şekilde 2.5v referansın çalıştığı anlaşılamaz. çünkü adc1 ve adc2 için potlar maksimum düzeyde(5V a göre ölçüm sonucu da 1023 olur). Eğer potlar %50 de olsa ve 1023 ölçümü yapılmış olsa idi 2.5v a göre ölçümün yapıldığından bahsedebilirdik.

Siz şimdi @funky nin yaptığı çizimde vref için de bir pot bağlayın , potları Power ile gnd arasına bağlayıp denemenizi yapın .

cann

sanırım bu power kullanmak la ilgili.
2.5 V u input olarak veriyordum. power olarak verince bir şeyler düzelmeye başladı.

ADCON0 la ilgili herhangi bir işlem olmaması, farketmediğim bir soruna yol açar mı acaba?

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 0
TRISA.3 = 1
TRISA.5 = 0
TRISC = 0
TRISD = 0
ADCON1 = %00000101
CMCON=7
define ADC_BITS 8
define ADC_CLOCK 2
define ADC_SAMPLEUS 100
DEFINE CCP1_REG PORTC 'HPWM PORTC.1
DEFINE CCP2_REG PORTC 'HPWM PORTC.2
DEFINE CCP1_BIT 1 'CCP1 PİNİ PORTC.2
DEFINE CCP2_BIT 2 'CCP1 PİNİ PORTC.1

role1   VAR  PORTA.2
role2   VAR  PORTA.5


fb var word
rl var word
ref var word
a var word
b var word
c var word
d var word
BASLA:
ADCIN 0, fb
ADCIN 1, rl
ADCIN 3, ref

ferit06


ADCON0 ile vereceğiniz bilgileri
define ADC_CLOCK 2
define ADC_SAMPLEUS 100
olarak vermişsiniz.

Bu tür şeyler için mutlaka datasheets e bakmalısınız.