avatar_ete

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

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

ete

Bu dersimizde Pic ile Analog – Digital Çevirici Kullanımından bahsedilecek. Günlük hayatta kullandığımız cihazlar genelde Analog ve Dijital olarak ikiye ayrılmaktadırlar.


Sayısal sistemle çalışan tüm cihazlar Dijital olarak nitelendirilmekte bunun dışındakiler ise Analog
cihazlar olarak nitelendirilmektedirler. Mikroişlemcilerin tamamı dijital cihazlardır. Zaman zaman
mikroişlemci bazlı bazı cihazların Analog cihazları kontrol etmesi istenir.


Zaman zamanda Analog sinyallerin işlenip değerlendirilmesi için bu sinyallerin dijital sinyaller haline getirilmesi gerekir. İşte bu gibi durumlarda Analog – Digital çeviriciler kullanılır. Yalnızca A/D çevirici olarak üretilmiş entegreler olduğu gibi bazı Pic'ler de bu çeviriciler seçimli olarak hazır bulunurlar. Burada A/D
çeviricisi bulunan Pic'ler incelenecek ve kullanımları konusunda örnekler verilecektir.


Bu konuda en çok kullanılan Pic'lerden birisi 16F877 entegresidir. 40 bacaklı olan bu entegrede 8
kanal ve 10 bit hassasiyette A/D çeviricisi bulunmaktadır.


A/D çevirim prensibi genelde bir kondansatörün belirli bir referans voltajı ile şarj edilip deşarj için
geçen sürenin sayılması esasına dayanır. Elde edilen süre bilgisi ise Analog değere karşılık elde
edilmiş olan dijital değer olarak verilir.


Üzerinde A/D çevirici bulunan bir Pic kullanılırken yapılacak işlerin başında hangi bacakların ANALOG hangilerinin DIGITAL olarak kullanılacağına karar vermektir. Sonra A/D çevirici için referans voltajı kaynağının seçimi yapılmalıdır. İki türlü referans voltajı vardır. Birincisi Pic'in kendi VDD beslemesi (+5V) diğeri ise harici bir voltaj kaynağıdır. Tabiiki harici kaynaklar referans voltajının 5 Volt'tan farklı olması durumunda seçilmelidir.


dogus

ADCON1' deki bu kısımı pek anlayamadım;

Bit-7: A/D Sonuç Format Seçme biti dir.
1 olur ise sonuç sağa hizalanmış , ADRESH nin 6. uç bitleri 0 olarak okunur.
0 olur ise sonuç sola hizalanmış, ADRESL nin alt bitleri 0 olarak okunur.

örneklerde 1 yapınca sonucun 10 bit olacağını söylemişsiniz, nasıl o şekile geliyor anlayamadım, bir de neden ADCON0'ı ayarlamıyoruz en başta?

ete

ASM de koda yazarsan ADCON0 'ı senin ayarlaman gerekiyor.
Ama Basic de ADCIN 0,HAM şeklinde bir komut verince otomatik olarak komut tarafından ADCON0 registeri ayarlanmaktadır.
Bu nedenle senin ayarlamana gerek kalmıyor.

ADCON.7 işine gelince,
Elinde ADRESH ve ADRESL şeklinde iki tane 8 bitlik regisiter var.
%11111111 11000000 şeklinde sola yaslı kullanabileceğin gibi (ADCON1.7=0)
%00000011 11111111 şeklinde sağa yaslı olarak da kullanabiliyorsun. (ADCON1.7=1)
İkinci şekilde okunacak maksimum sayı daima gerçek 10 bit olarak 1023 'e kadar olur. Hepsi bu .

>Ete


zeynal

Merhaba Erol bey.Bir voltmetre yapıyorum.9VDC ölçüyor.Normalde gerilim okumakta ve ekrana yazmakta sorun yok.Fakat 4,5v ve üstünü 0- -200, 4,5v ve altını +200-0 göstermen lazım.Yani 4,6v=0  9v=-200, 4,5v=0  0v=200.Nasıl bir yol izlemem gerekiyor?Yardım ederseniz sevinirim.Teşekkürler

ete

Yaptığınız voltmetrenin 0-9v ile bir alakası varmıdır?
Ekranda 4,5V altını +0- +200V olarak göstereceğim diyorsunuz. Hesaplarda 9V olarak hesap yapmışsınız.
Bunu açıklarmısınız. Ekranda her hangi bir yerde 0-9V  gösterilecekmidir?

Ete

zeynal

Merhaba Erol bey.Hesapları 9v için yaptım,çünki 4,5v altı ve 4,5v üstü diye ayıramadım.Ekranda 9v göstermiyecek,sadece +200 den 0, ve 0 dan -200.
VOLT1=(SAYI-522)*4/10  bununla 4,5v ve üstü için 0 dan 200 lineer yükselme yapılıyor.Sadece 4,5v dan aşağıya inerken göstergedeki degerin artaması gerekiyor.Yani 4,5v=0, 4v=40 gibi.Teşekkürler

ete

İşlemcilerin ADC girişleri 5V un üzerini kabul etmez. Hemen bozulurlar.
BU nedenle önce 9V için iyi bir gerilim bölücü yapmanız gerekir.
Gerilim bölücülerde 10 Ohm 19 Ohm gibi düşük değer dirençler kullanmamanız gerekir.
İdeal aralık 1K-10K aralığıdır.
Ben devreyi biraz değiştirdim ve programıda istediğin gibi düzelttim.
Burada temel mantık şöyle;
- Okunan ADC 0-511 aralığında(512 kademe)  + değer  ve 512-1024 aralığında ise - değer göstermelidir.
- Bu nedenle okunan değere 1 ekliyoruz. Okunan değer 512 den büyük ise okunan-512 yaparak okuma değerini yine 0-512 aralığında tutuyoruz yalnızca işareti göstermek için kullanıyoruz.
Burad aaçıklığa kavuşması gereken şey tam sıfır noktasının neresi olduğudur. Çünki. tam 512 yi sıfır kabul ettim ben.
Aslında 511 ve 512 sıfır olmalı bence yada öyle bölmeliyiz ki üstteki parça ile alttaki parça aynı kademe sayısına eşit olsun.
Aynı mantığı kullanarak sizde bir şeyler yapabilirsiniz.
Okunan değer her iki yarıda 512 olacağı için 200/512 *256 = 100 değerini sabit çarpan olarak kullandım. Ondalık hesaplamak isterseniz 100 yerine 1000 ile çarpmanız gerekecek.
Dosyalar ilişiktedir.
Ete

zeynal

Merhaba Erol bey.Bu devrede + değerinin voltajı yükseltince +200 den 0 doğru gitmesi lazim.Yani voltajımız 0 olduğunda değer +200,voltaj 4,5v olduğunda değer 0 olacak.Bu değeri ters çevirmek için çok uğraştım fakat cözemedim.Teşekkürler

ete

Tarifi biraz daha kolay ve anlaşılır verebilirsen daha iyi olurdu.
Değişen kısmı veriyorum.
BASLA:
      ADCIN 0,SAYI
      HAM=SAYI
      PAUSEUS 100
      SAYI=SAYI+1
      
      IF SAYI>512 then 
        ISARET="-"
        SAYI=SAYI-512
      else
        SAYI=513-SAYI
        ISARET="+" 
      ENDIF      
      IF ham=512 then ISARET=" "
      volt=SAYI*/100
      
      GOSUB EKRAN

      IF ISARET="-" THEN
        HIGH PORTA.3
        LOW PORTA.4
      ELSE
        LOW PORTA.3
        HIGH PORTA.4
      ENDIF

      goto basla
Ete



zeynal

Merhaba Erol bey.Her zamanki gibi kısa ve mükemmel.Çok teşekkür ederim

sinancnc

ete hocam bu yazılan kodun bas dosyası halen elinizde mevcutmu ?
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

Hangi kod anlamadım. Derslere ait kodları söylüyorsan evet zaten dosyalarında da mevcut.
Sorulan sorularla ortaya çıkan kodları söylüyorsan hiç birisi elimde yok. Bu tür kodları saklamıyorum.
Ete

sinancnc

Canınızın sağlığı hocam o halde projenin dosyaları bende derlerken hata verdi bende onlara bakayım diye düşündüm hata dosyasını ek olarak ekledim...
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

sinancnc

Hocam sizi yormak istemiyorum yarında şirketteki pc derleme yapacağım.. Sıkıntı benim proğramda olabilir...
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

Hata 66 nolu satırda. Satır numaralarını altif edersen (view menüsünde genel özelliklerden ediliyor) yanlış hatırlamıyorsam show line numbers gibi bir şey olması gerek.
Böylece 66 nolu satırı bulup orada ne yazdığınıda bize gösterebilirsin. Ondan sonrasını çözeriz herhalde
Ete

Powered by EzPortal