avatar_ete

PIC Basic Ders-05 (Analog Digital Çevirici Kullanımı)

Başlatan ete, 28 Ağustos 2011, 16:11:16

sinancnc

#30
Anladım Ete Hocam mekanik olarak kaybetmiyor yani... pekala ete hocam bunların 24 volt ile 5 volt arası değişen farklı değerleri var ben karta uysun diye 5 volt aldım...

Yarımınıza teşekkür ederim...
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

zeynal

Merhaba Erol bey.16F886 kullanmak istiyorum,fakat analog signali okuyamıyrum.Ayarlarda yalnışım var acaba.Teşekkürler

ete

Yanlışın değilde eksiğin var.
16F886 nın B portu pinleri aynı zamanda Analog pin olarak kullanılırlar.
Ama sen o pinleri digital kullanacaksın. O halde PortB nin Analog özelliğini kapatmak gerekir.
ANSELH=0

bu işi yapar.
Programa ilave et ayrıca okuduğunuı ekrana verdirecek şu satırları Başla satırından sonrasına ilave okduğunuda görürsün.

LCDout $fe,$80,"SAYI=",dec SAYI
lcdout $fe,$c0,"PIL=",dec PIL
PAUSE 100

Ete

zeynal

Merhaba Erol bey.Cevabınız için teşekkür ederim.Kullandığım programdan olmalı.Proteusta değişkenlerin değeri değişmiyor,hep 0-da kalıyor.Teşekkürler

sinancnc

#34
Ete Hocam Linear cetvellerden pals üreten var.. Kare dalga üreten var. Bunlarında uygulaması adc mi ? yoksa onları ne diye öğrenmem gerekli.. Teşekkür ederim
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

İşlemciye 8Mhz hız tanımlamasını yapmamışsın.  Ayrıca Hex dosyasının yerinide göstermemişsin.
Nasıl çalıştırıyorsun bilemiyorum.
Programda OSCCON=%01111100 şeklinde yaz.
Başkada bir şey yok. Yolladıkların bende çalışıyor.

Ete

ete

Sinanc,
Cetvellerin yalnızca linear potansiyometre tipinde olanı gördüm ve bir kerede kullandım. Aynen pot gibi değerlendirdim. Özel bir şey yapmadım.

Puls üreteni encoder olur. Cetvel hareket ettikçe puls üretir. Pulslar sayılarak mesafe konusunda bilgi sahibi olursun.
Ete

sinancnc

#37
Bunun üzerinede eğilmek istiyorum hocam fakat bu pals ları sayan uygulamaların adı varmıdır. mesela anolok dijital çevirici dediğinizde (adc) bayağı örneklerle inceleme şansım oldu bu sistemin teknik bir ismi varmıdır. Teşekkür ederim hocam..
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

Puls sayan değilde puls üreten demek daha doğru olur. Encoder ismi altında üretilen bu cihazlar A B ve C çıkışlarına sahiptirler.
A ile B arasında 90 derecelik faz farkı vardır.  Yada sen onu yarım faz lık bri fark vardır.
Faz farkını kullanarak encoderin dönüş önü tespit edilir ve ayrıca gidiş yöüne görede gelen pulslar saydırılır. C çıkışında ise tur başına bir puls üretilir. Genelde yalnızca A ve B çıkışları kullanılarak puls saydırılır. A ve B çıkışları bir Port'a bağlanır. Genelde PortB kullanılarak hem dahili pulluplar hemde kesme oluşturma imkanlarından yararlanılır.

Faz farkına göre yön bulma şöyle yapılır.
Önce A ve B birlikte okunur. Diyelimki ESKI=%00 şeklinde okunmuş olsun
Sonra yeniden okunur Şayet eski ile aynı değer okunmuş ise encoder dönmüyor demektir. Biraz tolerans verilerek yeniden okunur. Bu sefer diyelimki %10 okunmuş olsun YENI=%10
Eskinin bit-0 ile yeni nin Bit-1 'i XOR yapılır. Şekile dikkat ederseniz %00 konumundan sonra sağa doğru dönüyor ise bir sonraki konum %01 olmalıdır. Tersine dönüyor ise bir sonraki konum %10 olmalıdır. O hale encoder örneğimizde saat istikameti tersi yönünde dönmektedir. (YON=0 ^ 1 = 0)
YENI=%01 okunmuş olursa;
YON=0 ^ 0 = 1 çıkacaktır.Buda saat istikameti yönü olacaktır.
Sayarken saat istikameti için Sayı=sayı+1, tersi istikamet için ise Sayı=Sayı-1 şeklinde işlem uygulanmalıdır.

Umarım anlaşılmıştır.
Ete

sinancnc

Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

sinancnc

#40
TRISA=%11111111
TRISB=0
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
DEFINE LCD_DREG      PORTB   'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT      4      'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG      PORTB   'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT      3      'LCD Enable Bacağı Hangi bite bağlı ?
define LCD RWREG    PORTB   'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    2       'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG   PORTB   'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT   1      'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS      4      'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES   2      'LCD Kaç sıra yazabiliyor

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.
'-------------------------------------------------------------------------------
ADCON0=%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
'-------------------------------------------------------------------------------
Low PORTB.2      ' LCD R/W line low (W), şemada direkt GND ye bağlanabilir.
LCDOut $FE,1   ' LCD de CLS yapar
pause 200       ' LCD nin açılması için gerekli süredir.
'-------------------------------------------------------------------------------

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

      LCDOUT $FE,$C0," VOLT=",#VOLT,",",# Mvolt
      PAUSE 500
      GOTO BASLA


Ete Hocam Devreyi bitirdim 16f877a pic ler nedense arıza yapmış proğram atamadım Kartım hazır yeni bir pic alıp takacağım ve inşallah çalışacak... Bu gün pazar olduğu için elimdeki 16f628a ile deneme bordunda bir test yapayım dedim fakat kodlar 16f628a derleme yapılamıyor hata veriyor.. bu pic için adc yokmudur acaba kodlar aynen yukarıda teşekkür ederim..
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

sinancnc

Adc yok komparatör var diye yazmış ete hoca başka bir yerde aynısı sorulmuş..Komparatör pinleri ile bu iş yapılabliyormu hocam..
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

Hayır. Comparatör bir nevi opamp gibi çalışır. Adc çevirici farklı bir şey.
Ete

sinancnc

Arkadaşlar bu örnekte görünen projeyi kendi işim için uyarlayıp çalıştırdım örnek olarak incelemek isteyen olursa ek olarak ekliyorum..
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

sinancnc

Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

Powered by EzPortal