adc ve seri haberleşme problemi

Başlatan caglar0842, 26 Haziran 2007, 14:50:20

caglar0842

selam arkadaşlar.
picproje.org sitesini geç farketmiş olmanın burukluğu içinde herkese merhabalar diyorum.
projemdeki bir sorun hakkında yardımınıza ihtiyacım var.

projemde 50 hzlik bir sinüs dalgasını 10 bitlik bir çözünürlükte pic16f877 ile dijitale dönüştürüp bilgisayara gönderiyorum. fakat bunu yaparken pek de başarılı olamadım henüz.

picin alabileceği kadar değeri hafızasına kaydedip daha sonra bu değerleri gönderme konusunda yardımcı olabilirmisiniz. yazmış olduğum kodlar aşağıda. bu kodlar ile proteus ekranında virtual terminal ile sonuçlara baktığımda değerler arasında birer adet de sıfır geliyor.  bir de bu problemi aşamadım.

          for a=0 to 256
          ADCIN 0,HAM2      
               akim:  
               IF ADCON0.2=1 THEN akim  
               write a, ham2
          next a
           
          for a=0 to 256
               read a, ham2
               Serout2   S0a,32,["B",#ham2,"S"]    ' Display value
           next a

şimdiden sağolun beyler...

tnen

Öncelikle aramıza hoş keldin demek istiyorum. Pic ile ADC uygulaması yapacaksan eğer ilk olarak picin adc sine min 0V max ise referans ile belirleyeceğin ki buda max 5 V tur bir gerilim verebilirsin. Yani eğer senin sinusun bir DC üzerine bindirilmiş değil ve negatif degerlerde alıyorsa (Negatif alternasta) pic bunu 0 olarak algılar. Bnece oncelikle sen bu sorunu hallet.Daha sonra data bir şekilde toparlanıp pc ye yollanır.

calicadnus

pic'in adc si 0 volt-5 volt dc aralğında ancak ölçüm yapabilir.ya da örn ilgili registerleri kurmak şartıyla vref-1 volt, vref+2 volt yapılırsa ölçülecek analog kanal 1 volt ve aşağısını sıfır görecek,2 volta kadar linear olarak 1023'e kadar sayacaktır.iki volttan sonra ise hep 1023 değeri görülür.
ac 50 Hz lik bir sinyal her t zamanında ayrı bir voltaj olacağı için pic tuhaf ölçümler yapacaktır. diyelim kipic sn'de 100 ölçüm yapsın. aldığı bu 100 değer de birbirinden farklı ve alakasız olacaktır.
bence öncelikle adc yi iyi kavramak için 0-5 volt aralığını ölçebilirsin.0 volt 0 değerini gösterecektir. 5 volt 1023, ara değerler de linear olarak örneğin 2.5 volt 512, 1.25 volt 256 değerine oturacaktır.
saygılar