Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Pic16f 877 adc

Başlatan yasargunaydin, 16 Nisan 2013, 17:16:58

yasargunaydin

      Arkadaşlar merhaba;
      Pic16f877'ye 2. ayağına porta.0   0-5 volt arası potansiyometre ile 2. ayağına voltaj verdim. Pice algılatmaya çalıştım.Ayrı besleme den verdim ,picin beslemesinden verdim bi türlü başaramadım.Proteusta çalışıyor ama yaptığım devrede çalışmıyor.Yardımcı olabilirmisiniz.ete hocanın proğramından kopye çektim ilk aşamada öğrenmek için.Ekran yerine max232 kullanarak visual basicte veri aldım.
kullandığım pot 200k  olmasında sakınca varmı?sağ ayağına eksi;sol ayağına +5v ve orta ayakta porta.2 ye girdim.
Yardımlarınız için şimdiden teşekkürler.

TRISA=%11111111     'portA giriş yapıldı
TRISB=%11111111     'portB giriş yapıldı
TRISC=%11000000
TRISD=%00000000
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_on
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_on
@ DEVICE pic16F877, XT_OSC
'-------------------------------------------------------------------------------

DEFINE  ADC_BITS        10          'A/D çevirim sonucu kaç bit olacak
DEFINE  ADC_CLOCK       3         'Clock kaynağı (3=rc)
DEFINE  ADC_SAMPLEUS    100     'Örnekleme zamanı mikro saniye cinsinden.
'-------------------------------------------------------------------------------


OPTION_REG.7=0 'pull-up dirençleri aktif
ADCON1=%10001110 '7. bit 1 yapıldı 10 bit sonuç almak için.
'-------------------------------------------------------------------------------
HAM    var  word  'ADC den okunan ham digital değer.                                                                       
VOLT   var  word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
Mvolt  var  byte
'-------------------------------------------------------------------------------

SO VAR PORTC.6
SI VAR PORTC.7


BASLA:
      ADCIN 0,HAM  '0 nolu kanaldan Analog değeri oku ve RAW değişkenine aktar.
     
BAK:  IF ADCON0.2=1 THEN BAK 'Çevirme işlemi tamamlanınca Adcon0.2=0 olacak.
     
      'lcdout $FE,1," HAM =",# HAM
      Ham=ham+1 'Hesap kolaylığı açısından Ham değerini bir artırdık
     

      Volt=(ham */ 1250)/100 'Ham ile 1250 yi 32 bit olarak çarp ve 100'böl
      Mvolt=volt//10

      Volt=Volt/10
      SEROUT SO,2400,[#HAM]
      'LCDOUT $FE,$C0," VOLT=",#VOLT,",",# Mvolt
      PAUSE 500
      GOTO BASLA
                                                                             

                                                                             


94220039

Dijital bilgiyi bilgisayara gönderen rs232 entegresi kısmında veya bilgisayar ile olan bağlantısında bir problem oluşmuş olabilir.

Tagli

ADC'yi test etmenin en temel yolu, okuduğun değeri bir sabitle karşılaştırıp, büyükse bir LED'i yakmaktır bence. Sabit değer orta değer (512) olursa daha iyi olur. Bu durumda potansiyometrenin bir yarısında LED yanmazken diğer yarısında yanmalı. Böyle bir test yöntemi ile, olası LCD veya seri port hatalarından sıyrılmış olursun ve tek başına ADC'yi test etmen mümkün olur. Senin durumda LCD veya seri portta da hata olabilir, yani belki de ADC çalışıyordur. Önce hatanın hangi işlemde olduğunu bulmalısın.
Gökçe Tağlıoğlu

yasargunaydin

Rs232 kısmını denedim problem yok.bir B0=125   değerini 500ms aralıklarla gönderdim.Problem yok.Basicte text kutusunda değeri görüyorum.Test işi mantıklı yarın hemen deneyeceğim .Olmazsa artık üsenmeden oturum bir devre LCD li pic16f877 devresi yapacağım.
Ama benim takıldığım pot olayında bir hatam yok dimi?Önemli olan potun kaç k olduğu değil pice kaç volt gönderdiğindir. doğrumudur?

haydarpasamikro

1. WDT__on demişsiniz. WDT aktifse belli periyod süresi sonunda mikro resetlenmektedir. Siz programın hiçbir yerinde WDT yi sıfırlamıyorsunuz. Şimdilik off yapın. Programı ve haberleşme kesilmesin.
2. 877 nin donanımsal olarak uartı var. HSEROUT komutunu kullanmak daha iyi olur. Tabi DEFINE ile baud hızını başta ayarlıyorsunuz. RX-TX pinlerini (RC6-RC7) kullanıyorsunuz.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

yasargunaydin

Arkadaşlar teşekkürler;problemi sabahın köründe çözdüm.... ;D
Karttaki bağlantı problemi imiş meğer beni 2 gündür uğraştıran...