20-Pic- Adc ve Dac işlemleri


Analog

Analog bilgiler dış dünyadan ölçebildiğimiz büyüklüklerin birçoğu analog bilgidir. Örneğin ses, ısı, nem, uzunluk, basınç ve rüzgâr vb. bir bilginin analog mu yoksa dijital mi olduğunu anlamak için en kolay yol şudur; Eğer ölçülen iki değer arasında üçüncü bir değer söyleyebiliyorsak bu değer analog bilgidir. Örneğin 1gr ile 2gr arasında 1,5gr, 1,1gr vb. Kısacası birçok değer söyleyebiliriz. Bu tür değerlere analog bilgi denilir.

Dijital

Bilgisayar sistemleri dijital bilgilerle çalışırlar. Bu bilgiler 0 ve 1 ile temsil edilir. 0 ile 1 arasında 0,5 gibi değerler temsil edilemez. Bundan dolayı iki değer arasında üçüncü bir değer temsil edilemediğinden dijital bilgidir. Dijital bilgiler genel olarak 2v ve üzeri gerilimler lojik 1 ve 2v altındaki değerler 0 kabul edilir. Bu bilgiler tam ve kesin değildir. Cihaza göre değişebilir. Bu bilgiler genel bilgilerdir. 


Çevremizde ölçtüğümüz bilgiler analog bilgilerdir. Biz bunları bilgisayara aktarmak istediğimizde dijitale dönüştürmeliyiz. Fakat birçok değer kaybolacaktır. Örneğin 1gr büyüklüklerde değer dönüşümü yapan dijital dönüştürücü 1.1gr, 1.2gr, 1.3 ……1.9gr değerleri hiç yansıtamayacaktır. Sadece 1gr ve 2gr ölçülebilecektir. İşte bu durumda adc işleminde birçok kayıplar oluşacaktır. Kısacası adc işlemi yapılan bilgi dış dünyadaki bilgiye göre çok kötü bir bilgidir. Fakat artık çok yüksek hassasiyette ölçüm yapan adc’ler bulunmaktadır. Yine de gerçek bilgi olmayacaktır.  

Çevrim prensibi

Dış dünyadaki bilgiler analogdur. Biz bunları bilgisayar sistemlerinde kullanmak istersek analogdan dijitale çevirmemiz gerekmektedir. Bu işleme ADC(analog todigitalConvert) denilir. Bunun tam terside mümkündür bu işlem ise DAC(digitalto analog Convert) denilir. Birçok sistemde adc ve dac birimleri bulunur. Örneğin ses bilgisini duyduğumuz hoparlör dac işlemi sonucu ses bilgisini duyuyoruz. Ses bilgisini ise basit bir mikrofonla kayıt etme işlemi ise adc işlemine girer. Bu işlem bizim adımıza ses kartı yapar. Yani ses kartı üzerinde adc ve dac birimleri bulunmaktadır. Sadece adc ve dac sinyallerini işleyen işlemciler üretilmiştir. Bunlara DSP(digitalSignalprocess) dijital sinyal işleyen işlemci denilir. 


Dijital Analog Çevirici(DAC)

Bilgisayarda bilgiler 1 ve 0 olarak tutulur. Bu bilgileri analog bilgiye çevirmek gerekebilir. Örneğin mp3 dosyasını ses olarak duymamız gerekir. Bir resmi kâğıda basmamız gerekecektir. Bu işlemler DAC işlemidir.

Pic’te basit bir dijital bilginin analog bilgiye çevrilmesi aşağıdaki gibidir.



Bt3

Bt2

Bt1

Bt0

çıkış

0

0

0

0

0mV

0

0

0

1

80mV

0

0

1

0

60mV

0

1

0

0

40mV

1

0

0

0

20mV

0

0

1

1

140mV

0

1

1

1

180mV

1

1

1

1

200mV















































Görüldüğü gibi dijital bilgi analog bilgiye çevrilirken özel bir işlemden geçiriliyor.

ADC(Analog toDigitalConvert)

Analog bilgiler dijitale çevrilirken belirli sınırlar içerisinde çevrilir. Örneğin 16f877 10bit çevirme yapabilir.

Bu şu anlama gelir;

Minimum bilgi 00 0000 0000🡪 0=20=0V

Maksimum bilgi 11 1111 1111🡪1023=210=5Vref

Buradaki 5V aslında sabit değildir. Pic’e verilen referans gerilimi kadardır. Bu gerilim Vref şeklinde ifade edilir. Fakat hem +Vref hemde –Vref vardır.  Buradan şu sonuca varabiliriz.

Ölçülen en küçük birim(ölçek)=+Vref- (-Vref)/çevrilen bit sayısı

Ölçek=maksimum değer/bit sayısı

Ölçek=5000mV/210 = 4,88 ~=5mV

10bit

9bit







1bit

0bit

Desimal sayı

giriş

0

0

0

0

0

0

0

0

0

0

0

0mV

0

0

0

0

0

0

0

0

0

1

1

5mV

0

0

0

0

0

0

0

0

1

0

2

10mv

-

-

-

-

-

-

-

-

-

-

-

-

1

1

1

1

1

1

1

1

1

0

1022

4995mV

1

1

1

1

1

1

1

1

1

1

1023

5000mV

Bit sayısı ne kadar fazla olursa o kadar hassasiyet artar. Ölçülen birim küçülür. Buda iyi bir ölçüm yapmayı sağlar.

CCS’deadc işlemi;

bilgi=read_adc(); komutu ile yapılır. Ayrıntılarını incelememiz gerekmektedir.

ADC işlemi için iki adet kaydedici kullanılmaktadır. Bunlar ADCON0 ve ADCON1 kaydedicileridir. ADC işlemi yapmadan bu kaydedicilerin içeriği ayarlanmalıdır. Aşağıda içerikleri gösterilmiştir.

ADCON0 Kaydedicisi

7.bit


5



2

1

0.bit

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

-


ADCS1-0:  ADC işleminin ne kadar zaman aralıkla yapılacağını belirleme 


00🡪Fosc/2

01🡪Fosc/8

10🡪Fosc/32

11🡪RC osilatör


8 Adet analog kanaldan hangisinin seçileceğini belirleme yapmada kullanılır.

Değiştirilmezse varsayılan Analog 0 kanalı seçilir.

000🡪Analog 0 kanalı

….

111🡪Analog 7 kanalı 

ADC işleminin yapılıp yapılmadığını ifade eder.

1🡪 ADC başladı

0🡪 ADC işlemi bitti

boş

1🡪 ad açık(aktif)

0🡪ad kapalı

Analog 0 kanalı için ADCON0=h’41’ olmalıdır.

Daha sonrada ADCON0,2 biti kontrol edilmelidir.

ADCON1 Kaydedicisi

7.bit







0.bit

ADFM

-

-

-

PCFG3

PCFG2

PCFG1

PCFG0

Bit-7: A/D Sonuç Format Seçme biti dir.
1 olur ise sonuç sağa hizalanmış , ADRESH  içeriğine yüksek 2 bit 1. Ve 0. Bite alınır diğerleri ise ADRESL içerisine alınır. Son 6 biti sıfır olur.

 

0 olur ise sonuç sola hizalanmış olur. En yüksek 8 bit ADRESH içerisine, geri kalan iki bit ise   ADRESL nin7. Ve 6. Bitine yazılır. İlk 6 biti 0 olur.

Bit 6-4 arası kullanılmaz ve 0 olarak okunur.

Bit -3-0 arası PCFG3 – PCFG0 A/D portu ayarlama kontrol bitleridir. İşte bu bitleri ayarlayarak portların seçimleri yapılır. Aşağıdaki tabloya bakınız.

adcon1_register_2

Şimdi tablo üzerinde biraz kafa yoralım.

Şayet PCFG3:PCFG0 bitlerini 0000 olarak verir isek bu durumda RA0-RA3 , RA5, RE0-RE2 bacaklarının tamamı ANALOG olarak ayarlanmış olacak ve artı referans Voltajı VDD den eksi referans voltajı ise VSS yaniGND den alınacaktır.

Aşağıdaki programda ADCON1=”8E” alındı.


Kaynaklar

[1] Bil386 Mikrobilgisayarlı Sistem Tasarımı

[2] http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/5/5.pdf   (Haziran 2007)

[3] www.datasheetcatalog.com/datasheets_pdf/L/M/3/LM35DZ.shtml (Mayıs 2007)

[4] www.microchip.com


Yorumlar