Pc Desteklİ Elektronİk

PARALEL PORT​

Bir bilgisayarın paralel portu, kontrol etmek istediğimiz devreleri veya cihazları bu porta bağlamak için oldukça kullanışlıdır. Bu portu kullanmak ise bazı püf noktaları anladığımız taktirde çok kolaydır. Bu bölümde sizlere elimden geldiğince bu port hakkında bilgi verip nasıl kullanılacağımızdan bahsetmeye çalışacağım.
UYARI: PC paralel portu kolaylıkla zarar görebilecek yapıdadır, bu yüzden yapacağımız deneylerde dikkatli olarak yanlış yapmamaya özen göstermemiz gerekir.
Devrelerimizi Paralel Port'a Nasıl Bağlarız?
Paralel port dediğimiz şey bilgisayarımızın kasasının arkasında bulunan 25 pinlik D şeklindeki konnektördür. Genellikle printer bağlanmak için kullanılır.
En çok kullanacağımız bu 25 pin içinden 8 adet çıkış (output) pini, 5 adet giriş (input) pini ve şasedir (ground, toprak). Aşağıdaki tabloda pinlerin açıklamaları görülmektedir. Bu output pinlerini birçok maksatla kullanabiliriz..

Çıkış (Output) Pinleri
Pin 9 8 7 6 5 4 3 2
Bit 8 7 6 5 4 3 2 1
Fonksiyon D7 D6 D5 D4 D3 D2 D1 D0

18,19,20,21,22,23,24 ve 25 numaralı pinlerin hepsi şasedir.
Bu data pinlerinin hepsi TTL seviyesinde çıkış pinleridir. Bunun anlamı, data pini 0 konumundayken çıkışta 0 Volt vardır. 1 konumundayken ise çıkışta +5 Volt vardır. Paralel porttan çekilecek veya porta akıtılacak akım seviyeleri birkaç miliamperle sınırlıdır. Pinlerden her birisi dışarı doğru (sourcing) 2,6 mA içeri doğru (sinking) ise 24 mA akım akıtabilme kapasitesine sahiptirler. Dikkat edilmesi gereken nokta, harici cihazların veya devrelerin bu hatları toprağa çekmemeleridir.
Aşağıdaki tabloda bu 25 pinlik paralel portun pin numaraları ve karşılıklar görülmketedir. Paralel portun diğer bir adı da printer portudur. Bu port 1 veya 2 adet olabilir ve LPT-l ve LPT-2 kısaltmasıyla gösterilir.

Data 0-7 output, 10,11,12,13,15 input pinleridir.
Bu Deneylerde Neler Gerekecek?
Paralel portla rahatça çalışabilmeniz için bir konnektör ve biraz data kablosuna ihtiyacınız olacaktır. Piyasadaki adı DB-25 olarak geçen bu konnektörün erkek (male) olanından bir tane almanız gerekmektedir.

DB-25 Male

DB-25 Female
Bu konnektörlerin vidalarını sökerek için açın ve 2-9 nolu pinler ile 10,11,12,13,15 nolu pinleri 16'lı data kablosunun içindeki kablolara lehimleyin. Şase içinde bir pin lehimlemeyi unutmayın. Lehimlediğiniz bu parçayı kapatıp biligsayarınızın arkasındaki paralel porta takabilirsiniz. Hangi rengi hangi pine lehimlediğinizi mutlaka not edin. Şimdi kablonun diğer ucunu soyarak deneylerde kullanacağımız pinleri elde edin. Hepsi bu. Yaklaşık 1-1.5 metre 16'lı data kablosu yeterli olacaktır.

Paralel Port'a Nasıl Bilgi Göndeririz?
Paralel port'u kullanabilmemiz istediğimiz çıkışları alıp girişleri okuyabilmemiz için bu portu bir program yardımıyla programlamamız gerekmektedir. Programızda ise dikkat edilecek en can alıcı nokta yapacağımız işleme göre kullanacağımız portun adresini doğru vermektir. Aşağıdaki tabloda porttan dış dünyaya sinyal göndermek için kullandığımız port pinleri ve karşılıkları görülmektedir.

Output to address 278 / 378 / 3BC
Pin 9 8 7 6 5 4 3 2
Bit 7 6 5 4 3 2 1 0
Karşılık 128 64 32 16 8 4 2 1

Şimdi haklı olarak bu tablo da nedir diyebilirsiniz. Açıklamaya çalışayım;
Porta bilgi göndermek için kullanacağımız adresler tablonun üstünde görünmektedir. Eğer biz programımızda bu adreslerden herhangi birisini kullanarak bilgi göndermek istersek, gönderdiğimiz bilgi tabloda görünen pinlerden ve belirtilen bit numarasına göre gönderilecektir. Örneğin porta 5 göndermek istiyoruz. Adresimizi yazdık ve komutu verdik, eğer adres yukardaki adreslerden biri ise çıkış portunda şu sonuçla karşılaşırız;

Output to address 278 / 378 / 3BC
Pin 9 8 7 6 5 4 3 2
Bit 7 6 5 4 3 2 1 0
Karşılık 128 64 32 16 8 4 2 1

Başka bir örnek verecek olursak eğer porta 128 bilgisini göndermiş olsaydık o zaman sadece 9. pinin 1 olduğunu görürdük. Başka bir açıdan bakacak olursak, eğer portumuzun 7. 5. ve 3. pinlerinde 1 görmek istiyorsak o zaman programımızdan göndereceğimiz değer, 32 + 8 + 2 = 42 olmalıydı. Bu püf noktayı ve adreslemeyi de öğrendikten sonra herşey çok basit. Yazının ilerleyen bölümlerinde çeşitli programlama dillerinde küçük örnekler bulacaksınız.
Basit Bir LED Sürücü Devre
Paralel portunuzla yapabileceğiniz en basit devre bir led yakmaktır. Tüm gerekenler ise bir led ve bir tane 470 ohm luk dirençtir. Yapmanız gereken ledi ve direnci birbirine seri bağlamak ve ledin + ucunu paralel portun çıkış pinlerinin birine (data pin) bağlamaktır. Ve devrenin diğer ucunu yani - ucun bağlı bulunduğu direnç ucunu da şase olan pinlerden herhangi birine bağlamalısınız. Portun verebileceği akım sınırlı olduğundan burada direnci her ihtimale karşı çekilebilecek akımı sınırlamak için kullanıyoruz.

Led'in uzun bacağı pozitiftir (+). Şimdi; pozitif ucu data pinlerinden birisine ve diğer ucu da ground pinlerinden birisine bağladığımızdan eminsek program yazmaya geçebiliriz. Ben programda 2 nolu pine bağladığımızı varsayıyorum yani 1. bit. Merak etmeyin kısacık bir program. Şimdilik örneğimi Pascal ile yazıyorum.
uses crt; begin

port[$378]:=1;
delay(5000);
port[$378]:=0;
delay(5000);
end.

Açıklama: İlk önce 378 nolu adrese 1 bilgisini gönderiyoruz, bu sayede TTL yapıdaki olan portumuzun 2 numaralı pininden +5 V'luk bir gerilim elde ediyoruz. Bu sayede led yanıyor. Ardından 0 bilgisini gönderiyoruz ve portumuzun tüm pinleri 0'lanıyor yani 0 V geriliminde oluyor. Eğer 255 bilgisini gönderseydik tüm port pinlerinde +5 V elde etmiş olurduk.
Bu programı pascal ile yazıp çalıştırdığınızda eğer devreniz doğru bağlı ise ledinizin yandığını ve bir süre sonra da söndüğünü göreceksiniz. Eğer programı döngüye sokarsanız ledin bir flaşör gibi devamlık yanıp söndüğünü göreceksiniz.
Eğer birden çok led kullanarak bir devre yapmak istiyorsanız aşağıdaki şekilde kurmanız gereken devre görünmektedir.

Tek yapmanız gereken hangi ledi yakmak istiyorsanız sadece o ledin bağlı olduğu pinin karşılığını hesaplamanız ve bu değeri port[$378]:= değer ; şeklinde yazmanızdır. Örneğin 1,3,5 ve 7.ledler yansın istiyorsanız göndereceğiniz değer 1+8+32+64 =105 olmalıdır.

Output to address 278 / 378 / 3BC
Pin 9 8 7 6 5 4 3 2
Bit 7 6 5 4 3 2 1 0
Karşılık 128 64 32 16 8 4 2 1

Umarım anlaşılmıltır. İlerleyen günlerde uygulaması basit ve eğlenceli olan bazı program örnekleri vereceğim. Mesela röle kontrolü, 7-segmet displaylerin saydırılması, karaşimşek devreleri, LCD ekranlara mesajların yazdırılması gibi...
Paralel Port'dan Nasıl Bilgi Okuruz?
Paralel port'dan bilgi okumak biraz daha dikkat ve sabır gerektirir. Aslında donanımı doğru kurduktan sonra tüm işlem programa kalmıştır. Paralel portta 5 adet input pini bulunmaktadır.
D0: belirsiz
D1: belirsiz
D2: belirsiz
D3: 15 numaralı pin (ERROR) terslenmiş ( inverted )
D4: 13 numaralı pin (SELECTED)
D5: 12 numaralı pin (PAPER OUT)
D6: 10 numaralı pin (ACK)
D7: 11 numaralı pin (BUSY) terslenmiş ( inverted )

Input Adresi 279 / 379 / 3BD
Bit 7 6 5 4 3 2 1 0
Pin ~11 10 12 13 ~15 - - -
Karşılık 128 64 32 16 8 - - -

~(tilt) sembolü, tersi anlamında kullanılmıştır.
Paralel porttan bilgi okunması şu şekilde yapılır. Yukarda belirtilen 5 adet input pininden hangisine ya da hangilerine şase sinyali uygulanırsa bilgisayar bunlardan giriş yapıldı kabul eder ve bu pinlerin değerleri toplamı kaç ise programda bu değeri alır. Örneğin 11, 12 ve 15. pinler şase yapılırsa programda portun değeri 128+32+8= 168 olacaktır. Bu sayede programlarımızda portun aldığı değeri okutup hangi pinlerden ya da pinden bilgi geldiğini anlayabiliriz. Örneğin 5 tane butonumuz olsun ve giriş pinlerine bağlanmış olsunlar. Hangi pin şaselenirse hangi değerin okunacağını bildiğimizden dolayı kolayca hangi butona basıldığını anlayabiliriz.

Örnek program;
Açıklama; Porttan gelecek bilgiyi bir değişkene atmamız gerekmektedir bu yüzden okunan_deger adında bir değişken olusturdum. Daha sonra port[$379]:= komutuyla porttaki değeri bu değişkene aktardım. Bu noktadan sonra yapmanız gereken bu değeri kullanarak istediğiniz programı yazmaktır.
Örneğin, üç adet butonumuz bulunsun. 1. butona basıldığında 2 nolu output pinindeki led yakılsın, 2. butona basıldığında 3 nolu ve 3. butona basıldığında ise 4 nolu pindeki led yakılsın. Bunun için programımız aşağıdaki gibi olmalıdır.

uses crt;
var
okunan_deger :integer;
begin
port[$379]:=okunan_deger;
in case of
okunan_deger=8 then port[$378]:=1;
okunan_deger=16 then port[$378]:=2;
okunan_deger=32 then port[$378]:=3;
end.

Sanırım yeteri kadar açıklayıcı olmuştur.
 
Diğer Dillerin Kullanımı
Aşağıdaki program örnekleri sadece port komutlarının anlaşılması için yazılmış küçük programlardır. 378 adresi kullanılmıştır.
Porta Bilgi Göndermek İçin;
Assembler
MOV DX,0378H MOV AL,n OUT DX,AL
Burada n çıkışa göndermek istediğiniz bilgidir.
BASIC
OUT &H378, N
Burada n çıkışa göndermek istediğiniz bilgidir.

C
outp(0x378,n);
veya
outportb(0x378,n);
Burada n çıkışa göndermek istediğiniz bilgidir.

Borland C++ 3.1
#include <stdio.h> #include <dos.h> #include <conio.h> /********************************************/ /*This program set the parallel port outputs*/ /********************************************/ void main (void) { clrscr(); /* clear screen */ outportb(0x378,0xff); /* output the data to parallel port */ getch(); /* wait for keypress before exiting */ }

Porttan bilgi okumak için;
Assembler
MOV DX,0379H IN AL,DX
Okunan değer AL register ındadır.
BASIC
N = INP(&H379);
Burada N okuduğumuz değerdir.
C
in = inportb(0x379); veya in = inp(0x379);
Burada in okuduğumuz değerdir.
 
SERİ PORT
Yine isminden de anlaşılabileceği gibi seri olarak bilgilerin aktarıldığı bir porttur. Veriler bir hat üzerinden zamansal olarak sıra ile yollanarak istenilen veriler sıra ile karşıya bit bit ulaştırılır. Burada zamanlama yani frekans uyumu çok önemli bir yer almaktadır bunun için protokol kavramı oluşmuştur. Aynı zamanda çift yönlü iletişim ile seri iletişim paralel iletişimin önüne geçerek daha az kablo ile maksimum mesafeye veri ulaştırır hale gelmiştir. Veriler TTL boyutundan çıkarak lojik seviyelerini +10V ile -10V arasında düzenlenmiştir. Aşağıda bir byte'lık bir verinin seri olarak aktarılması görülmektedir;

Görüldüğü gibi bir bytelık verinin sekiz ayrı biti lojik 0 -10V ve lojik 1'ide +10V olarak belirli periyotlarla karşıya aktarılırken aktif low olarak başlangıç manasına gelen START biti ve sonunda da aktif high olarak STOP biti bulunmaktadır buda protokolün bittiğini belirtir. Seri port paremetrelerine dikkat edilecek olunursa gönderilen verinin bit uzunluğu 5 ile 8 bit arasında değişebildiği gibi verinin hızı ve de veri kontrolü için çift yada tek parity biti kullanılabilmektedir. Fakat kullanım kolaylığı ve gereksinimler sonucunda paritysiz, 9600 baud (baud= sn gönderilen bit sayısı 9600/8=1200 byte sn yollanabiliyor.) hızında ve 8 bitlik veri protokolü kabul görmüştür.

1.Kontrol Biti(CD) 2.Gelen Bilgi(RD) 3.Gönderilen Bilgi(TX) 4.Hazır Sinyali (DTR) 5. Şase (GND)

6. Bilgi Kaydı(DSR) 7. Gönderim İsteği(RTS) 8.Gönderim Hazır (CTS) 9. Dış Seslenme (RI)

Yukarıdaki sekilde görülen uçlardan bizler sadece aktif olarak tx, rx ve gnd uçlarını kullanmaktayız. Diğer uçlar özel ve geliştirme amaçları için tasarlanmıştır.
Seri olarak giden ve gelen verilerin zamanlaması protokol nezdinde olduğundan kısıtlama sadece bilgisayarın maksimum desteğine ve kablonun kapasitesi ile sınırlıdır. Genel olarak kullanılan hızlar aşağıdaki tabloda yer almaktadır;

Genel olarak kullanılan hızlar aşşağıdaki tabloda yer almaktadır;

Port çıkışı olarak D25 veya D9 luk çıkış şeklinde kullanılmaktadırlar. Temel pin çıkışları aşağıdaki gibidir;

Name (V24) 25pin 9pin Dir Genel Tanımı Açıklama

TxD 2 3 o Transmit Data Data
RxD 3 2 i Receive Data Data
RTS 4 7 o Request To Send Elsıkışma
CTS 5 8 i Clear To Send Elsıkışma
DTR 20 4 o Data Terminal Ready Durum
DSR 6 6 i Data Set Ready Durum
RI 22 9 i Ring Indicator Durum
DCD 8 1 i Data Carrier Detect Durum
GND 7 5 - Signal ground Katılım seviyesi
- 1 - - Protective ground GND
Pc de maximum dört adet seri port bulunabilmektedir. Yine LPT olduğu gibi bu portların adresleri hafızada yer almaktadır yeri 0x40:0x0 dan başlayarak dört word dur.
(Bu adresleri ekranda yazan program) .
 
USB (UNIVERSAL SERIAL BUS)

Universal Serial Bus yani Genel Seri Veri yolu olarak tanımlanan yeni bir standart olan usb aslında seri porta çok benzemekle beraber ondan farklı olarak genel bir protokol yapısı içerisinde paket teoreminin kullanılmasıdır. Ilk olarak 1995 yılında içerisinde bazı temel öğeleri barındırarak ortaya çıkmış ve zamanla günümüze kadar gelişme göstermiştir. Çalışma sistemindeki paketler aslında belirli bir uzunlukta olan veri bloklarıdır. Bu Portta farklı olan asıl etmen ise direkt olarak işlemci ile muhatap olunduğundan veri yolu işlemci ile aynı hızda yani veri yolu hızından bağımsız olarak çalışabildiğinden dolayı bilgisayara yani işlemciye göre değişmesidir. Pentium 3 işlemciye sahip bir makineye takılan bir USB kamera ile Pentium 2 işlemciye takılan aynı kameranın çektiği görüntünün karesel hızı bize bu olayı açıkça göstermektedir. Fakat geliştirilen bu yeni standart ta asıl yapılan istenen tak kullan mantığıyla alakalıdır, yeni alınan veya var olan bir device(araç) makine açıkken dahi kolayca takılıp sökülebilmektedir USB portları üzerinden ayrıca veri yolunun ulaştığı bu korkunç hız bilgisayar ortamlı ağ yapısını da bu çerçeveye taşınmasını sağlamıştır. Kısmen veri bloklarını incelediğimizde veri bloklarının başında kimden geldiği ve kime gittiği gibi birtakım bilgiler yer almaktadır bu bilgilerden gelen, giden device bir byte ile tanımlandığından bir usb portu üzerinden aynı anda 255 yani maksimum bir byte'lık aygıt işletilebilir.

Var olan bu yeni teknolojiyi seçmememin nedeni ise asıl olan güvenlik ve uyumluluk problemleridir
 
Konunun Anlatimi BayaĞi Uzun Bu Anlatimi Resİmlerlede Takvİye Edİlebİlseydİ Daha AnlaŞilir Olurdu Dİye DÜŞÜnÜyorum Yİnede Çok TeŞekkÜr Ederİm...
 
ARKADAŞLAR, BEN VİSUAL BASIC KONTROLLÜ PARALEL PORT KONTROLÜ YAPMAK İSTİYORUM .ANCAK BU İŞLEM, İNTERNET ÜZERİNDEN GERÇEKLEŞTİRİLECEK. YANİ, EVİNE UZAK BİR YERDEKİ BİR İNSAN KENDİ EVİNDEKİ BİLGİSAYARIN PARALEL PORTU YARDIMIYLA BAZI KONTROLLER GERÇEKLEŞTİRECEK. BUNUN İÇİN GEREKLİ OLACAK İŞLEMLER NELERDİR. İŞİN ELEKTRONİKSEL KISMINI BEN KENDİM HALLEDERİM. ANCAK, IP LERİ KULLANARAK UZAKTAN KONTROLÜN NASIL YAPILDIĞINI BİLMİYORUM. BİLGİSİ OLAN VARSA PAYLAŞMASINI İSTERİM. TEŞEKKÜRLER...
 
Üst