TeknoTR  

Geri Dön   TeknoTR > Eğitim > Üniversiteler
Üye Ol SSS Sxe indir Sosyal Gruplar Takvim Resim Galerisi Etiketler Bütün Forumları okunmuş kabul et


Analoga Giriş ve Basit Robot Gözü

Üniversiteler bölümünde Analoga Giriş ve Basit Robot Gözü konusu , Tüm elektronik hobi okurlarına merhaba. Geçen ay paralel port üzerinden DC motor kontrolünü anlatacağımı söylemiştim. Fakat ondan önce Sayısal/Analog veri dönüşütürücülerine değinmek gerektiğini farkettim. En azından bir DC motor hız kontrol devresi yapabilmemiz için, böyle bir dönüşüme ihtiyacımız olacaktır. Bu ...

Cevapla
 
LinkBack Konu Seçenekleri
Eski 10-14-2007, 12:10   #1 (permalink)
PeAcE
 
PeAcE09 - ait Avatar
 
Giriş: 31-03-2007
Yaş: 19
Mesajlar: 3.575
Rep Puanı: 1759
PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6PeAcE09 Rütbe Artı +6
Rep Gücü: 61
E-Güven: (4/100)

Analoga Giriş ve Basit Robot Gözü


Tüm elektronik hobi okurlarına merhaba. Geçen ay paralel port üzerinden DC motor kontrolünü anlatacağımı söylemiştim. Fakat ondan önce Sayısal/Analog veri dönüşütürücülerine değinmek gerektiğini farkettim. En azından bir DC motor hız kontrol devresi yapabilmemiz için, böyle bir dönüşüme ihtiyacımız olacaktır. Bu ay analog sinyalleri sayısal veriye dönüştürmekten bahsedeceğiz ve robotların etrafındaki cisimleri algılamasını sağlayacak basit bir robot gözü uygulamamız olacak.

Bizim bu güne kadar uğraştığımız sinyallerin hepsi sayısaldı. Yani sinyalin “1” yada “0” olması durumunu inceliyorduk. Dolayısı ile lojik voltajımızın değeri, “1” olduğunda +5 Volt, “0” olduğunda ise 0 Volt oluyordu. Analog sinyallerde ise bu voltajın değeri 0 ile 5 volt arasında değişebilir. Bir ADC ile (Analog – Digital Converter) fiziksel değerleri ( ısı, basınç, kütle, ışık yoğunluğu ) sayısal değerlere çevirebilirsiniz. Böylece PC ‘nizi dış dünyayı izleme aracına çevirebilirsiniz. Daha sonra bu ölçümler sonucunda üzt düzey kararlar vermeye programlayabilirsiniz. Örneğin oda sıcaklığı belli bir dereceye ulaştığında PC ‘nizle ısıtma sistemini kapatabilirsiniz.

Bir sıcaklık sensörü, elde ettiği sıcaklığın sonucunda bize 0-5 volt arasında bir değer verebilir. Biz de bu değer üzerinden gerekli dönüşümü yaparak hangi voltajın hangi sıcaklığa denk geldiğini hesaplayabilir ve işlemler yapabiliriz. Herhangi bir ölçüm sonucunda elde edeceğimiz voltaj eğer 5 volt ise bu voltajı ADC ile sayısal veriye dönüştürdüğümüzde elde edebileceğimiz değer 255 olacaktır. Kısacası 0 ile 5 volt arasındaki analog değerler, 8-bitlik sayısal veriye dönüştüğünde 0-255 arasında değerlere denk gelecektir.Analog-Dijital dönüşüm yapılabildiği gibi bunun tam tersini de yapmak mümkündür. Örneğin DATA pinlerine göndereceğimiz 0-255 arası sinyaller ile 0-5 Volt arasında bir voltaj gerilimi elde etmeniz mümkün olabilir. Kullandığınız ADC ve DAC (Digital-Analog Converter) tipine göre analog giriş değerleri değişebilir. Örneğin 255 sayısal sinyali ile +12 volt elde edebilmenizde mümkün olabilir.

Daha önceki uygulamalarımızda paralel portun STATUS pinlerini kullanarak bir tür veri girişi gerçekleştirmiştik. Bu ay ki uygulamamızda paralel portu kullanarak ilk gerçek veri girişini gerçekleştireceğiz. Paralel portun DATA pinlerini bugüne kadar sadece veri çıkışı için kullandık. Yeni teknolojiye sahip paralel portlarda bu DATA pinlerini 8-Bitlik veri girişi için kullanmata mümkündür. Bu işlemi gerçekleştirebilmek için ana kartınızın BI-DIRECTIONAL port tipini desteklemesi gerekmektedir. Bilgisayarınızın BIOS ayarlarına girdiğinizde, paralel port tipini değiştirmeniz mümkün olacaktır. DATA pinleri ile veri girişi yapabilmemiz için port tipinizi BI-DIRECTIONAL yapmalısınız.

Bu güne kadar uygulamalarımızı hep paralel port üzerinde gerçekleştirdik. Fakat uygulamalar geliştikçe bu port bize yetersiz kalmaya başlayacak. Öyle uygulamalar olacak ki, hem 8-bit veri girişi hemde 8-bit veri çıkışını aynı anda yapmamız gerekecek. Bu sebeple, önümüzdeki ay, paralel port üzerinden çalışan 8255 programlama kitini tanıtacağım. Bu kit sayesinde, aynı anda 3 sayısal çıkış yada giriş yapmamız mümkün olacak. Bu kitin diğer bir faydası ise, gerçekleştirdiğimiz uygulamalarda oluşabilecek bir hata sonucu paralel portunuzu yakma riskinin önüne geçebilmemiz. Bu sayede uğrayabileceğimiz en büyük zarar en fazla bir kit parası kadar olacaktır.

Bi-Directional paralel port ile veri girişi STATUS portundan farklıdır. STATUS portu ile girişi, pinin üzerindeki “1” lojik voltajı topraklayarak gerçekleştiriyorduk. DATA portları ile veri girişini ise, bu pinlere lojik voltaj göndererek gerçekleştirebiliyoruz. Bu yazımda ilk kez Visual Basic komutlarının dışında, C++ ve DELPHI komutlarından da bahsedeceğim. DATA portundan veri okumak için INP komudunu DATA portunuzun adresinde kullanmanız gerekmektedir.Çok basit olarak paralel porta veri göndermekten ve almaktan tekrar bahsetmek istiyorum. Paralel portunuza verilen adres üç alt porta şu şekilde dağılır. Örneğin paralel portunuzun taban (base) adresi h0378 olsun. Bu durumda;

DATA portu h0378

STATUS portu h0378 + 1 yani h0379

CONTROL portu ise h0378 +2 yani h037A olur.

Paralel port kontrolü için Visual Basic yada C++ kullanacağız. Visual Basic altında OUT komudunu yada C++ altındaki OUTPORTB kullanarak DATA portuna 0-255 arasında gönderdiğimiz sayısal değer ile istediğimiz data pinlerinin lojik değerlerini “1” yapabiliyoruz. Data pinlerinden bir tanesinin “1” olması o pinin +5 Volt olması anlamına geliyor. DATA portundan 8 bitlik veri çıkışı alabiliyoruz. DATA portuna hiçbir veri göndermediğimiz zaman ki değeri “00000000” dır. Dikkat ederseniz 8 tane “0” var. Örneğin data portuna 25 değerini gönderelim. 25 değerinin ikilik sayı sisteminde karşılığı “00011001” dir. Bu durumda D4, D3 ve D0 pinlerine karşılık gelen lojik değerler “1” olduğundan o pinler +5 Volt olacaktır. Bu ayki uygulamamızda ise Bi-Directional port desteği sayesinde DATA portlarındaki veriyi okuyacağız. Yani D4, D3 ve D0 pinlerine karşılık gelen pinlere +5 voltluk lojik voltaj uyguladığımızda, bu porttan okuyacağımız değer 25 olacaktır.

Paralel port üzerinde CONTROL portununa ait 4 tane pin vardır. Bu pinlerden C0,C1,C3 pinleri tersinmiştir. Yani tersinmiş olan bu pinlere veri göndermediğimiz zaman durumu “1” dir. Bu pinlerden bir tanesine veri gönderdiğimizde o pinin durumu “0” olacaktır. Diğer bir deyişle CONTROL pinlerinin düşük olan 4 bitine “1111” yazmanız halinde konnektördeki bitler “0100” olacaktır. Tersindirme olayına önceki sayılarımızda daha detaylı değinmiştik.

C++ ile PORT GİRİŞ/ÇIKIŞ Komutları

C++ altında veri giriş çıkış komutlarının kullanımı aşağıdaki gibidir. Bu komutları kullanabilmek için kütüphane dosyasını programınıza #include etmelisiniz.

Veri göndermek için : OUTPORTB (port_adresi,byte)

Veri almak için : Byte = INPORTB (port_adresi)

DELPHI ve Assembly kullanımı ile PORT GİRİŞ/ÇIKIŞ Komutları


{$R *.DFM}
procedure portout(IOport:word;value:byte);assembler;
asm
xchg ax,dx //port'a değer göndermek
out dx,al
end;
function portin(IOport:word):byte;assembler;
asm
mov dx,ax //port'taki değeri okumak için
in al,dx
end;

Veri göndermek için : PORTOUT (port_adresi,byte)

Veri almak için : Byte = PORTIN (port_adresi)
Sayısal – Analog dönüştürücü (ADC) devresi :

Devre için ihtiyacımız olan malzemeler;

1 x ADC0804 Analog sayısal dönüştürücü,

1 x 150 pF Kondansatör,

1 x 10mF Kondansatör (isteğe bağlı)

1 x 10K direnç,

1 x BP109 yada uyumlu foto transistör

1 x 1.5 Volt kalem pil

Bir ADC entegresini programlamak oldukça kolaydır. Aynı Haziran sayısında anlattığım LCD panel kontrolüne benzer. ADC yi programlayabilmek için veriyi okuyacağımız DATA pinlerinin dışında, ADC nin RD ve RW pinlerini kontrol etmek için 2 tane CONTROL pinine, ERROR kontrolü içinde 1 tanede STATUS pinine ihtiyacımız olacak. Kullandığımız ADC0804, National Semiconductor firmasının yaygın olarak kullanılan analog-sayısal dönüştürücülerinden biridir.
__________________
İletişim:[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]
Beni görmek demek, mutlaka yüzümü görmek demek değildir. Benim fikirlerimi benim duygularımı anlıyorsanız ve hissediyorsanız bu yeterlidir. Benim kuvvetim; benim size olan sevgim ve sizin bana olan sevginizdir... M.K. ATATÜRK
PeAcE09 isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla

Konu Seçenekleri

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz


Şu an saat 15:05 .
Tarih 09-05-2008


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Türkçe Çeviri : ach

eXTReMe Tracker


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192