avatar_Hattuşa

16F1826 FREV den sabit voltj çıkarmak

Başlatan Hattuşa, 06 Temmuz 2018, 16:47:04

Hattuşa

slm arkadaşlar;
16F1826 nın  +Vref bacağından 2048 mV vref voltajı çıkartmak istiyorum ama bir türlü başaramadım. FREV registerinden ayarlamayı yaptığım halde çıkışı alamadım. Acaba neyi atladım. bir bakabilirmisiniz?

simülasyon için kod ve isis 8 şeması ektedir.


Device = 16F1826
Config1 FOSC_INTOSC, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_ON, CPD_OFF, BOREN_OFF, CLKOUTEN_OFF, IESO_OFF, FCMEN_OFF
Config2 WRT_OFF, PLLEN_ON, STVREN_OFF, BORV_19, LVP_OFF
Xtal=16
OSCCON  =%11111000
OSCSTAT =%11111101
OSCTUNE =0

Declare All_Digital TRUE
TRISA =%00100001   
TRISB =0           
PORTA =0
PORTB =0

CM1CON0.7 =0
CM1CON1.7 =0
OPTION_REG =%10000000


'DACCON1 =0
WPUA =%00100000
'WPUB =0
SRCON0 =0
SRCON1 =0
MDCON =0
'MDSRC.7 =0
FVRCON=%11000001
'APFCON0=%00000001
'SRCON0.7=0
'CLKRCON.7 =0
ANSELA =%00000001
ANSELB =0
ADCON0 =%01111101
ADCON1 =%10000000
DACCON0=0'%10101000


APFCON0 =0
APFCON1 =0
CCP1CON =0
MDCARH =0
MDCARL =0
CPSCON0.7 =0
TXSTA =0
TXREG =0
MDCON.7 =0
MDSRC.7 =0
T1GCON =0
MDCARL =0


Declare LCD_DTPin PORTB.4  ' LCD Data Pin   
Declare LCD_RSPin PORTB.2  ' LCD RS Pin
Declare LCD_ENPin PORTB.3  ' LCD EN Pin
Declare LCD_Lines 2        ' LCD Satır
Declare LCD_Interface 4    ' LCD Data Pin Sayısı 4
Cls
DelayMS 100


Dim AdC As Word


Print At 1,1,"ADC:"   
DelayMS 100

MaIn:
AdC =ADIn 0
DelayUS 50
Print At 1,5,Dec AdC,"  "
DelayMS 200


GoTo MaIn



ete

Eksik fazla olan yada yanlış olan ayarların var.
Aşağıdaki registerleri verdiğim şekilde kullan.
FVRCON=%11000010
ADCON1=%10100011

DECLARE ADC_BITS 10     ' ADCIN resolution  (Bits)
DECLARE ADC_CLOCK 2     ' ADC clock source  (Fosc/32)
DECLARE ADC_SAMPLEUS 11 ' ADC sampling time (uSec)

ADCON0 registerine değer verme onu Basic kendisi yönlendiriyor.

Bu işte iki temel kriter var. Birisi FVRCON registeri ile fixed voltajın 2048mv seçilmesi ki bunu FVRCON registerinin 0 ve 1 nolu bitlerine verilecek değer ayarlıyor bu %10 olmalı (data sheet öyle söylüyor)
Diğeri ise ADCON1 registerinde 1-0 bitleri ise VREF+ nereden alınacağını belirliyor. Buraya %11 verilince dahili Fixed Voltaj Reference bağlanacağı belirtilmiş. Bu nedenle o bitlerin ikisinide 11 yaptık.

Ete

Hattuşa

ETE hocam;
verdiğiniz şekil ile adc okuması 0-2,048v arası 0-1023 okuma yaapıyor. benim yapmak istediğim porta.2 den 2,048v luk sabit v çıkışı almak, DAC ile de aalınabilirdi bu ancak beslemenin stabil olmaması yüzünden DAC taan yapılan çıkış besleme dalgalanmasınaa göre değişiyor. bende porta.2 den +Vref çıkışı olarak 2,048v alınıyor sanıyordum

ete

Vref bacağından Fixed Voltaj çıkmaz. O bacak vref girişi için kullanılıyor.
Ref voltajı içerden ayarlanınca ona ulaşmak imkansız bence. VFR kısmında data sheet de her hangi bir bacaktan çıkış tarif edilmemiş. Öyle bir şey de duymadım.
Komparatör ile VFR nin kullanılması ile yapılabilirmi biraz düşündüm ama oradan da bir sonuç alınacağını sanmam.
Ete

MB_77

#4
bu mesaj tarafımdan silinmiştir.

Hattuşa

Alıntı yapılan: MB_77 - 07 Temmuz 2018, 13:36:35
amaç picten 2.048v sabit gerilim elde etmekse, fvryi daca bağlamalı ve en üst voltaja ayarlamalısınız. ardından dac çıkışını opampa girerek akımı artırmalısınız ki akım kullanımı nedeniyle dalgalanmanın önüne geçebilesiniz.

DAC cıkışından alınan voltaj pici besleyen voltaj dalgalanmasından etkileniyor.

Dtmf

ıyı gunler ete hocam fvrcon konusunda anlamadıgım yerler var yardımcı olursanız sevınırım.oncelıkle 7.4v pılım var bu pılı pıc18f45k22 ıle olcmek ıstıyorum tabı 18f45k22 beslemesı 7805 uzerınden.vref modulu aktıf ettıgımızde vref+ ve vref- uclarına nasıl bır baglantı yapmam lazım yanı gerılım bolucumu yapmam lazım yoksa boşmu bırakıp pıl gerılımını adc0 analog pınden aktıf edıp buradanmı olcmem lazım.yazdıgım kodlar

Device = 18F45K22
Xtal =16          
Declare All_Digital = True   ' 16f877A nın tüm uçları Dijital
TRISA = %00000001:PORTA=0
TRISB = %00000000:PORTB=0
TRISC = %00000000:PORTC=0
TRISD = %00000000:PORTD=0
TRISE = %00000000:PORTE=0

Declare Adin_Res 10       
Declare Adin_Tad FRC
Declare Adin_Stime 50

FVRCON=%11000010
ADCON1=%10100011 
;ADCON0=%11000000 ;ADCON0 I BASIC KENDISI AYALIYOR


Declare LCD_Type alpha  
Declare LCD_Lines 2
Declare LCD_Interface 4
Declare LCD_DTPin PORTD.0
Declare LCD_RSPin PORTD.5
Declare LCD_ENPin PORTD.6

Dim OKU As Word
Dim AL As Word
DelayMS 500
;==========================================
BASLA:
OKU=ADIn 0 ;analog gırıs oknuyor
Print At 1,1,"  ADC OKUMA "
Print At 2,1,"ADC: ",Dec OKU
DelayMS 40
Print At 2,1,"ADC:         "
GoTo BASLA

ete

Bu işin prensibi şöyledir. Ölçümleri daima ADC girişlerinden yaparsın. Ancak ölçüm için kullanılacak olan ADC_Referans Voltajını FVR den alırsın. Ölçüm girişlerine verilecek ölçülecek voltaj yaklaşık olarak tercih etitğin FVR voltaj seviyesine gerilim bölücü kullanılarak verilmelidir.
18F45K22 de FVR modülde 3 ayrı referans voltajından birisi registerinden set edilerek kullanılabilir. Bu voltajlar, 1,024V , 2,048V ve 4,096V olarak belirlenmiştir. İşlemci besleme voltajın 5V ise tercihin 4,096V kullanmak olabilir. Şimdi FVRCON registerindenbu işi nasıl ayarlayacaksın önce ona bakalım.

Bu registerin 7 nolu bit'i modülü aktif pasif yapar. Aktif edeceğimiz için vereceğimiz değer 1 olacaktır.
Aynı registerin 6 nolu biti FVR nin Ready biti dir şimdilik buna dokunmayalım ve bu bite sıfır değerini verelim.
Registerin 5-4 nolu bitleri referans voltaj seçme bitleridir. 4,096V seçmek için her iki bite %11 değeri verilmelidir.
Registerin 3-2 ve 1-0 bitleri kullanılmıyor hepsine sıfır verebiliriz. Böylece FVRCON registerimiz %10110000 değerini almış olacaktır. İşlemci bu komutu gördüğünde FVR modül'ü 4,096V üretecek şekilde ayarlar. Geriye bunu ADC ölçümlerinde kullanmak kalıyor. Bunun içinde ADC modülüne bakalım şimdi.
ADCON1 registerinin 3-2 bitleri Pozitif ref.voltajı seçimini yapıyor. Bu bitlere %10 değeri verildiğinde işlemci ref voltajını VFR den alacaktır.
Benzer şekilde 1-0 nolu bitler negatif ref. voltaj seçimini yaptırmakta olup burada %00 kullanarak dahili VSS ye bağlanmasını sağlarız.
Bu şekilde çalışacak bir ADC ölçüm sistemimiz FVR den ref voltajı kullanacaktır. Bunun anlamı şudur. Aktif olan ADC girişlerine 4,096 V geldiğinde işlemci bunu digital olarak 1023 okuyacaktır. Bu voltajın üzerinde değer gelirse ki besleme voltajını geçmemesi gerekir yine okunacak değer 1023 olacaktır. Bu nedenle ADC girişlerine verilecek ölçülecek voltaj için gerilim bölücü kullanılarak yaklaşık olarak REF voltajı seviyesine getirilerek girişe verilmelidir.

Ete
 

Dtmf

#8
ete hocam ılgınız ıcın tesekkur ederım.form'u arastırmıstım sızın 12 derlık pıc derslerınızıde arastırdım pek bır uygulama yoktu fvr konusunda.formdakı arkadaslara yararı olacgını dusundugum bır konu.konuya dönersek hocam fvrcon yarları ben her pıc ıcın standart sandım yanıldım 18f serısı datashet baktım dedıgınız gıbı ayarları yaptım ornegın AN0 gırısınden pıl olcum yapacagım vref ucuna herhangı bır baglantı yapmayacagım nedenı vref voltajını pıc ıcerısınde kendısı ayarladı.AN0 gırısınden pılın pozıtıf ucuna pılın - ucu saseye.dogrumu anlamısım hocam

TRISA  =%00001001:PORTA=0
TRISB = %00000000:PORTB=0
TRISC = %00000000:PORTC=0
TRISD = %00000000:PORTD=0
TRISE = %00000000:PORTE=0

Declare Adin_Res 10        ;ANOLOG OKUMA
Declare Adin_Tad FRC
Declare Adin_Stime 50
ADCON1=%10001000;AN3 VE AN2 VREF GIRISI OLARAK + VE - VERILDI 5 VOLT +POT ILE VERILDI DEGERLER DEGISTI
FVRCON=%10110000

ete

Kısmen doğru anlamışsın. Bir konuya tekrar dikkatini çekeceğim. Elindeki pil 7,4V bunu AN0 girişine direk bağlayamazsın. Bağladığın anda o işlemci bozulur. Bu konuda genel kaide şudur. İşlemcinin besleme voltajını aşan her bağlantı işlemciyi bozar. Bununda ötesinde doğru ölçüm yapabilmen için senin pil voltajını (pil max. dolu iken) AN0 pinine pilden yaklaşık 4,096V gelecek şekilde gerilim bölücü yaparak bağlaman gerekir. Tekrar edersek pic ADC girişlerine 5V dan fazlasını veremezsin. Doğru ölçüm yapabilmek için Pozitif referans voltajdan daha büyük voltaj da veremezsin. Gerilim bölücü ne demek biliyorsundur umarım.

Pic ADc girişlerine daima pozitif voltaj verilir. Ölçülecek voltajı eksi ucu sistem GND sine bağlanır.

Ete

Dtmf

 ;) gerılım bolucu ıle ılgılı sorunum yok hocam degerlı uyarılarınız ıcın tesekkur ederım suan ısıs uzerınde deneme yaptım yarın bord uzrınde deneme yapıp sonucu burada paylasacagım.fvrcon regısterı ayarları voltaj ayarları ıle oynadıgımda farkı gordum hocam sagolun

Powered by EzPortal