ADC Kullarak Bilgisayarın Osiloskop Gibi Kullanımı
1. Giriş
Analog sinyaller bilgisayar gibi dijital bilgiler ile çalışan cihazlara nasıl aktarılır. İşte bu çalışmada bunları görecğiz. Bu çalışmada yardımcı bir devre ile bilgisayara Analog bilgiden dijital bilgiye çevrilmiş bilgileri aktaracağız. Aktarılan dijital bilgiler Pascal'da yazılmış bir program tarafından değerlendirilecek ve grafik ortamında ölçülen Analog sinyalin simulasyonu yapılacaktır
2 - Karşılaştırma Devreleri Ve Çalışmaları
Karşılaştırma devresi, giriş olarak doğrusal gerilimleri alır ve bir girişin diğerinden küçük veya büyük olduğunu gösteren sayısal bir çıkış verir. Temel karşılaştırıcı Şekil 2.1a'da verilmiştir. Çıkış; terslemeyen (+) giriş, tersleyen (-) girişten daha büyük olduğu zaman yüksek düzeyde kalan ve terslemeyen giriş gerilimi, tersleyen giriş referans gerilim düzeyinin altına indiği zaman da alçak gerilim düzeyine anahtarlanan sayısal bir sinyaldir. Şekil 2.1b, bir girişi referans gerilimine (örneğimizde tersleyen giriş), diğer giriş sinyal gerilimine bağlanmış tipik bağlantıyı göstermektedir. Vin, referans gerilim düzeyi olan +2V'tan daha düşük olduğu sürece çıkış, alçak gerilim düzeyinde (0V civarında) kalır. Giriş gerilimi +2V'tan büyük olduğu zaman, çıkış hızlı bir biçimde yüksek gerilim düzeyine (+5V civarı) anahtarlanır. Böylece çıkıştan alınan bir yüksek düze giriş sinyalinin +2V'tan daha büyük olduğunu gösterir.

Şekil 2.1. a) Temel yapı b) Tipik bir uygulaması
Karşılaştırıcı kurmak için kullanılan iç devre esas itibariyle çok yüksek kazançlı bir işlemsel yükselteç devresi olduğu için, ilk önce Şekil 2.2a'daki işlemsel yükselteşli karşılaştırıcının çalışmasını inceleyebiliriz. Referans girişi 0V'a ayarlı iken, giriş ucuna uygulanan sinüoidal bir sinyal, çıkışın, Şekil 2.2b'de gösterildiği gibi iki çıkış durumu arasında anahtarlanmasına neden olacaktır. Vin girişi, 0V'luk referans gerilimi düzeyinin milivolt düzeyinin üstünde olsa bile, çok yüksek kazançla (tipik olarak 100000'den fazla) yükseltecektir, dolayısıyla çıkış, pozitif çıkış doyma düzeyine yükselecek ve Vref=0V'un üzerinde kaldığı sürece, burada kalacaktır. Giriş, 0V referans biraz altına düştüğü anda çıkış, alt doyma düzeyine ulaşır ve giriş Vref=0V'un altında kaldığı sürece orada kalır. Şekil 2.2b giriş sinyali doğrusal iken çıkışın sayısal olduğunu açıkça göstermektedir.

Şeikl 2.2. İşlemsel Yükseltecin karşılaştırıcı olarak kullanılması - Şekli daha yakından görmek için üzeine tıklayınız.
Genel olarak, referans düzeyinin yalnızca 0V olması gerekme pozitif veya negatif bir değerde olabilir. işlemsel yükseltecin (veya karşılaştırıcının) girişlerinden herhangi biri referans düzeyi olarak kullanılabilir, diğeri ise giriş sinyaline bağlanır.
2.1 - Örnek
Şekil 2.3'de çok katlı bir karşılaştırıcı devresi incelenmektedir. Burada birinci ve ikinci yükseltecin (-) girişleri referans girişine dirençler vasıtası ile bağlanmışlardır. Dirençlerin kullnılmasının nedeni gerilim bölücü özelliklerinden faydalanmak içindir. Referans girişi için bir çok gerilim kaynağı kullanmak yerine dirençler kullanrak gerilim bölücü elde etmek daha kolay ve daha mantıklıdır.

Şekil 2.3 a)iki katlı karşılaştırıcı b) giriş ve çıkış grafği
Şekil 2.3a'daki devrede birinci yükseltecin referans girişinde 1V, ikinci yükseltecin referans girişinde 0.5V gerilim vardır. Girişimiz her iki yükseltecin (+) girişlerine uygulanmaktadır. Giriş sinyalimiz 0.5V'tan büyük ve 1V'tan küçük olduğu sürece birinci yükseltecimizin çıkışı 0V düzeyinde; ikinci yükseltecimizin çıkışı +5V düzeyinde kalacaktır. Giriş sinyalimiz 1V'tan büyük olduğu sürece her iki yükseltecimizin çıkışı +5V düzeyinde kalacaktır. Giriş sinyalimizin gerilim değeri düşerken önce birinci yükseltecimizin çıkışı 0V düzeyine inecektir sonra ikinci yükseltecimizin çıkışı 0V düzeyine gelecektir. Anlattığımız bu durumlar girişimize sinyal uyguladığımız sürece Şekil 2.3b'deki gibi sürekli tekrarlanacaktır.
3 - Kodlayıcılar Ve Çalışması
Kodlayıcı, kod çözücünün tam tersi işlemi yapan bir sayısal fonksiyondur. Kodlayıcının 2n (veya daha az) sayıda giriş hattı ve n sayıda çıkış hattı vardır. Çıkış hatları, 2n giriş değişkenleri için ikili kod üretir. Bir kodlayıcı örneği Şekil 3.1'de verilmiştir. Sekizili-İkili kodlayıcı, her biri sekiz haneden birisi için olmak üzere sekiz giriş ve ilgili ikili sayıyı üreten üç çıkıştan oluşur. Bu devre, girişleri Tablo 3.1'deki doğruluk tablosundan belirlenecek VEYA kapılarıyla kurulur. Giriş sekizli hanenin tek olması halinde alt sıralı Z biti "1" olur. 2, 3, 6 veya 7 sekizli haneleri için Y çıkışı "1" olur. 4, 5, 6 veya 7 sekizli haneleri için X çıkışı "1" olur. D0'ın, herhangi bir VEYA kapısına bağlanmadığına dikkat edin; bu durumda ikili çıkışın tamamı "0" olmalıdır. Bütün girişlerin "0" olmadığını gösterecek ek bir çıkış kullanarak, bu tutarsızlık giderilebilir.
Şekil 3.1'deki kodlayıcıda, belli bir anda sadece bir giriş hattının "1" olabileceği varsayılmıştır; aksi taktirde devre anlamsız olur. Devrenin sekiz girişi olguğuna ve 2^8=256 olası giriş kombinasyonuna sahip olabileceğine dikkat edin. Bu kombinasyonlardan sadece sekizi anlamlıdır.Diğer giriş birimleri dikkate alınmaz durumdadırlar.

Şekil 3.1 : sekizli ikiliye kodlayıcı

Tablo 3.1 : sekizilden ikiliye kodlayıcı doğruluk tablosu
Bu tip kodlayıcılar (Şekil 3.1) IC paketi olarak bulunmazlar, çünkü VEYA kapılarıyla kolayca kurulabilirler. IC olarak temin edilebilen kodlayıcı tipine Öncelikli Kodlayıcı (Örneğin 74LS148 tip IC) denir. Bu kodlayıcılar, sadece en yüksek öncelikli hattın kodlanmasını sağlamak amacı ile bir giriş önceliği yaratır. Dolayısıyla Tablo 3.1'de yüksek alt indisli bir geçişe, düşük alt indisli girişe göre öncelik verilirse, örneğin hem D2 hem de D5'in aynı anda mantık "1" durumunda olması halinde çıkış "101" olacaktır, çünkü D5'in önceliği D2'den daha yüksektir. Kuşkusuz, öncelikli kodlayıcının doğruluk tablosu Tablo 3.1'dekinden farklıdır.
4 - Analog / Dijital Dönüştürücüler
Analog işaretleri dijital işaretlere çeviren düzeneklere Analog - Dijital Dönüştürücü veya kısaca A/D Dönüştürücü veya ADC adı verilir.
Bir Analog işaret dijital işarete çevrilirken belirli aralıklarla örneklenmek zorundadır. Örnekleme sonunda dijital işaret elde edilir. bu çeviricilerdetek bir dijital işarete belli bir gerilim aralığı tanımlanır. Her değer için ayrı bir gerilim tanımlanamadığı için bir hata ortaya çıkar ve bu hatanın önüne geçilemez.
Bir analog bilgiyi dijitale çevirmenin dört yöntemi vardır. Bunlar:
1) Kodlayıcı ile A/D Dönüştürücü.
2) Direnç Merdiven Dalgalı A/D Dönüştürücü.
3) Tek Eğimli A/D Dönüştürücü.
4) Çift Eğimli A/D Dönüştürücü.
Biz bunlardan Kodlayıcı ile A/D dönüştürücüyü inceleyeceğiz.
4.1 - Kodlayıcı ile A/D Dönüştürücü
Bilindiği gibi bir kodlayıcı, desimal veya bilinen klasik şekillerdeki bilgileri dijitale bilgilere çevirir. Şekil 4.1'de sekiz adet OP-AMP'lı karşılaştırıcı ve bir adet 8 hattı 3 hatta çeviren kodlayıcı ile A/D dönüştürücü devre yapımı görülmektedir. Karşılaştırıcılar evirmeyen yükselteç yapısındadırlar. Dijital işarete çevrilecek analog bilgi karşılaştırıcıların (+) girişlerine uygulanmıştır. Karşılaştırıcıların (-) girişleri bir gerilim bölücü direnç şebekesi ile sabit bir gerilim kaynağıyla beslenmektedir.
Şekil 4.1'deki kodlayıcı ile A/D dönüştürücü yapımında sabit gerilim kaynağı çıkışı direnç şebekesi ile eşit değerlikli olarak karşılaştırıcı girişlerine taksim edilmiştir. Her girişte 1V olduğunu kabul edelim. Bu durumda analog işaret "0" ise karşılaştırıcıların tamamının çıkışı "0" dır. Kodlayıcı çıkışı ise "000" ikili sayısına sahiptir.

Şekil 4.1 : Kodlayıcı ile A/D dönüştürücü
Eğer analog işaret 4V ise K0, K1, K2 ve K3 karşılaştırıcıları çıkışları "1" dir. Diğer karşılaştırıcılar "0" çıkış verir. Bu durumda kodlayıcı çıkışı "100" ikili sayısına sahiptir.
Bu tür A/D dönüştürücüler, "Flash" A/D dönüştürücüler olarakta adlandırılırlar.
4.2 - ADC0804 ile Analog - Dijital Dönüştürücü Yapımı
Devrenin yapılış amacı Osilaskop gibi ac ve dc sinyalleri ölçmek ve bunları bilgisayar ortamında değerlendirmek. Devre Şekil 4.3'de verilmiştir.
Devre Vin (+) ve Vin (-) girş uçları arasına uygulanan analog sinyalin sayısal bir bilgiye dönüştürülmesi esasına göre çalışmaktadır. Burada sadece analog sinyallerin pozitif alternansları ölçülebilmektedir. Uygulanan sinyalin negatif alternansları ölçülemektedir. Bu devrenin bağlantı şemesından kaynaklanmaktadır.

Şekil 4.2 : ADC0804 Entegrei
Devrede VREF/2 girişi ölçülecek sinyalin max. değerini belirlemek için kullanılmaktadır. 20KW'luk direnç ve potansiyometre kullanılmasının amacı gerilim bölücü özelliğinden faydalanmaktır. 2.5V'luk zener diyot ise potansiyometrenin uçları arasındaki gerilimin 2.5V'tu geçmesini engellemektir. Entegrenin yapısı gereği VREF/2'nin iki katı büyüklükte max. bir gerilim ölçülebilmektedir.
Giriş uçlarına bağlanan zener diyot yine uygulanan sinyalin gerilim değerinin 5V'tun üstüne çıkmasını ve entegrenin zarar görmesini engellemek için kullanılmıştır. Yine giriş ucundaki direnç gerilim bölücü özelliği göstermektedir. Kondansatör ise girişte oluşabilecek parazit sinyalleri yok etmek içindir.
Entegreyi kontrol etmek için kullanılan girişler CS, RD, WR ve intr uçlarıdır. Burada CS: Chip Select, RD: Read, WR: Write ve intr: interrupt bilgileri alıp ve göndermek içindir. Devremizi kontrol etmek için CS, RD, WR girişlerini kullandık. CS girişi entegreyi seçmek için kullanılıyor, yani entegreyi aktif yapmak için kullanılıyor. Bu giriş aktif "0" yapıldığında entegre çalışmak hazır oluyor. RD girişi entegreye bilgi okutmak için kullanılıyor. Bu giriş aktif "0" yapıldığında girş uçlarından uygulanan sinyalin değerini alır ve register'ında saklar. WR girişi entegrenin girşten okuduğu bilgileri yazmasını sağlar. Bu giriş "0" yapıldığı zaman entegre çıkışlarına register'ında bulunan bilgiyi aktarır. Çıkışlara yazılan bilgiler Paralel Port iletilir ve bilgisayar bu bilgileri alır ve hafızasına kaydeder.

Şekil 4.3 Analog / Dijital Dönüştürücü Devresi
Devre girişinden uygulanan sinyalin değerini okuduktan sonra 8 bitlik bir bilgiye çevirerek çıkışına aktarır. Devre girişine uygulana sinyalin genliği 0V ise devre çıkışında "0000 0000" ikili sayısını gösterir; eğer girşi 5V ise çıkışında "1111 1111" ikili sayısını gösterir. Diğer girişler için uygun olan ikili sayısal değeri çıkışında gösterir.
4.3 - Programın Çalışması
Devre yardımı ile bilgisayarın paralel portuna uygulanan bilgileri program ile değerlendirerek grafik ortamında simulasyonu yapılmıştır.
Program paralel porttan aldığı bilgiyi grafik ortamında rahat bir şekilde görülebilmesi için düzenlemektedir. Program ile paralel porttan bilgiyi okumak için PORT[$378] komutu kullanılmıştır. Ancak bu komutu kullanarak bilgi okuyabilmek için öncelikle paralel port kontrol register'ına okumayı etkin kılmak PORT[$37A] adresine "32" desimal bilgisi gönderildi. Okuma işlemi gerçekleştikten sonra okunan bilginin kaybolmaması için portun okuma özellliğini iptal etmek için PORT[$37A] adresine "37" desimal bilgisi gönderildi. Bu işlemler sırasın porttan okunan bilgiler program içinde bir diziye aktarıldı ve port devre dışı bırakılsa bile bilgilerin bilgisayarda kalması sağlandı.
4.4 - Program
program paralel_porttan_bilgi_okuma;
uses graph,dos,crt;
const
c0=1;c1=2;c3=4;c4=8;
s0=1;s1=2;s3=4;s4=8;
var
deger:array[1..720] of integer;
ornek1,ornek,stat,ctrl,eppdata,data,base:integer;
ErrorCode : Integer;
GraphDriver, GraphMode: Integer;
procedure hazirla;
begin
setcolor(7);
line(50, 80, 50,GetMaxY-80);
line(50, getmaxy div 2+128, 440,GetMaxY div 2+128);
line(50,getmaxy div 2-135,410,getmaxy div 2-135);
line(410,getmaxy div 2-135,410,getmaxy div 2+128);
outtextxy(445,getmaxy div 2+128,'t');
outtextxy(25,65,'Vout(V)');
setlinestyle(1,0,0);
line(50,getmaxy div 2+77,410,getmaxy div 2+77);
line(50,getmaxy div 2+22,410,getmaxy div 2+22);
line(50,getmaxy div 2-29,410,getmaxy div 2-29);
line(50,getmaxy div 2-80,410,getmaxy div 2-80);
line(50,getmaxy div 2-127,410,getmaxy div 2-127);
line(140,getmaxy div 2-135,140,getmaxy div 2+128);
line(230,getmaxy div 2-135,230,getmaxy div 2+128);
line(320,getmaxy div 2-135,320,getmaxy div 2+128);
setlinestyle(0,0,0);
outtextxy(35,getmaxy div 2+128,'0');
outtextxy(35,getmaxy div 2+77,'1');
outtextxy(35,getmaxy div 2+22,'2');
outtextxy(35,getmaxy div 2-29,'3');
outtextxy(35,getmaxy div 2-80,'4');
outtextxy(35,getmaxy div 2-127,'5');
end;
begin
base:=$378;
data:=base;
stat:=base+1;
ctrl:=base+2;
eppdata:=base+4;
port[ctrl]:=32;
port[ctrl]:=36;
{grafik ortami}
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode, ' ');
ErrorCode := GraphResult;
if ErrorCode <> grOK then
begin
Write('Graphics error: ');
WriteLn(GraphErrorMsg(ErrorCode));
WriteLn('Program aborted...');
readln;
Halt(1);
end;
hazirla;
{okuma ve grafigi cizme bolumu}
repeat
for ornek:=0 to 720 do
begin
port[ctrl]:=37;
deger[ornek]:=port[data];
port[ctrl]:=36;
delay(1);
end;
ClearDevice;
hazirla;
moveto(50,getmaxy div 2+127);
setcolor(10);
for ornek:=0 to 720 do
begin
ornek1:=ornek div 2;
lineto(50+ornek1,getmaxy div 2+127-deger[ornek1]);
delay(1);
end;
until keypressed;
CloseGraph;
end.
Sonuç
Bu çalışmada yapılan devrenin ve buna uygun olarak yazılan programın amacı : Osilaskop gibi ac ve dc sinyalleri ölçmekti. Ancak devrenin yapısından dolayı devremiz sadece pozitif alternansları ölçmemize olanak verdi.
Amacımız Osilaskop gibi davranan bir program ve devre yapmaktı ama bu sonuca ulaşamadık. Ancak yinede devre ve program yardımı ile osilaskop simulasyonu yapmayı başardık. Çok detaylı olmasada sinyal ölçme işini başardık. Bu da bu çalışmanın yeterli sayılabilecek kadar başarılı olduğunu göstermiştir.
- Yorum yazmak için giriş yapın veya kayıt olun