Paralel Porttan +5v Puls bilgisi almak?

Başlatan zogasi, 23 Aralık 2005, 10:42:41

zogasi

Herkese selam,
Bugun yeni projeye başlamak üzereyim.Sizlerinde fikirlerini ve yardımlarını almak istedim.
Proje bir demir haddehanenin fırınından çıkan kütük demirleri saymak.
Şuanda bu işi yapan elektrikli analog bir counter zaten var.Yani fırının kapagı her açıldıgında,countera 220 volt geliyor ve +1 yapıyor.
Şimdi biz bunu pcde saydırmak istiyoruz.
Ben bunun için yine 220v kullanarak bir röle tetikleterek , rölenin anahtar ucundan 5v geçirmek şartı ile lpt porttan saydırmak istiyorum.
Bunun için vb'de paralel port uygulamalarına baktım ama D0 dan D7 ye kadar hep output:(
Ben paralel porttan bu +5v puls bilgisini nasıl ve hangi ucdan alırım??

Eğer önerilerde bulunursanız çok memnun olurum....
herkese iyi çalışmalar...
Pentium 233MMX + P4 2,4GHZ + Ar-Ge Lab. + KısaMarlboro ve bir Fincan Nescafe  Araştırma dedigin böyle olur :) :) Araştırma olmadan geliştirme Olamaz!!!

fsan

"KısaMarlboro ve bir Fincan Nescafe"

Oh oh !!   8)
Sizin Ar-GE bölüm de sigara icmek serbest mi?  :D

illaki Parelel port ile mi olacak? Serial port ile olsa olmaz mi?

asagidaki resimde kirmizi STATUS port  5 input(giris) pins oldugunu yaziyor ;)

Alıntı YapInterfacing to the IBM-PC Parallel Printer Port  

The original IBM-PC's Parallel Printer Port had a total of 12 digital outputs and 5 digital inputs accessed via 3 consecutive 8-bit ports in the processor's I/O space.



8 output pins accessed via the DATA Port
5 input pins (one inverted) accessed via the STATUS Port
4 output pins (three inverted) accessed via the CONTROL Port
The remaining 8 pins are grounded

(Resim gizlendi görmek için tıklayın.)
25-way Female D-Type Connector

ftsahin

Paralele port PIC gibi aynı anda hem giriş hem de çıkış olarak kullanılamaz.Paralel portun okuma ve yazma bölümleri ayrıdır. Yazma adresi, bilgisayarda bulunan LPT1 portunun adresidir. yani burası "out" tur. Okuma adresi ise LPT1+1'dir. Yalnız bu kısım 5 bitliktir. Aşağıda nasıl yapılacağı anlatılmıştır.



Alıntı YapStatus portu'ndan veri okuma:

Status portunun okunması ise biraz daha ilginç.  Bu portta daha önce bahsedildiği gibi 5 kanalımız bulunmaktadır.Bu port bir byte'lık bir adresin  3,4,5,6 ve 7. kanallarını kullanmaktadır, Biz sadece bunların ilk 4'üyle ilgileniyoruz.Yani 3,4,5 ve 6. kanallar. Halbuki değer okurken, tüm bir byte(8 bit) okunmaktadır.Okuduğumuz bir byte'lık değerden 0,1,2 ve 7. kanallara ait değerleri atmalıyız. Sonra da elimizdeki , 0dddd000 haline gelen  değeri 3 defa sağa kaydırarak, 0000dddd yaparak,  kontrol ettiğimiz değerlerin en sağa gelmesini sağlamalıyız. Böylece, bu porttan  0-15 arası değer elde ediyor  hale geliriz ve de bu değere bakarak ta hangi kanalın mantıksal 1, hangi kanalın ise mantıksal 0 olduğu kolaylıkla çözümlenebilir.

Bunu şu şekilde yaparız:

public int ReadStatusPort(int base_address)
{
   int data= InpOut.Inp32(base_address+1);
   data=data & 120;
   return (data >> 3);
}

Metodumuza  parametre olarak  LP1 portunun temel adresini veriyoruz. Metot içerisinde buna bir ekleyerek, status portunun adresini elde ediyoruz. Bu adresten okuduğumuz değeri 0,1,2 ve 7. kanallarını  devre dışı bırakmak için 120 ile "AND" liyoruz. Elde edilen 0dddd000 formatındaki bilgiyi 3 defa sağa kaydırarak , xxxxdddd formatımıza ulaşıyoruz.X'ler ilgilenmediğimiz bitleri göstermektedir. En sağdaki bit sıfırıncı bittir..

Paralel portun okuma ve yazma pinleri :
http://img467.imageshack.us/my.php?image=paralel5rf.jpg

Petek

Hocam sen 233 lük pentiumunu kullan bu iş için. Anladığım kadarıyla öyle bir kaç PC tüttüreceksin :)

EPP modunda data bitlerini de input yapabilirsin. İstersen toplam 13 input girişin olabilir. Örnekleme aralığını uzun tut. 5 saniyede bir gibi. infrared alıcı ile de bu işi yapabilirdin. Kütükler sıcak çıkmıyor mu?

Bahsettiğin gibi yapacaksan control portundan bir çıkışa 1 ver bunu röleyr bağla. Rölenin diğer kontağını status portunun bir girişine bağla. Okuturken dikkat et, status pinlerinden birisi ters işler, yani giriş 0 ise 1 gösterir, 1 ise 0.

Kolay gelsin... Opto izolatörler ucuz haberin olsun..
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

z

Eski sistem elektromekanik olduğuna göre bayağı bir güvenliymiş.

Bu işi PC ile yaparsanız bence bazı sorunlar var.

PC resetlenirse, fişi çıkarsa, kısa bir süre içinde olsa döngüye girer portu takip edemezse vs vs üretimimin izlenememesi sözkonusu. Bu nedenle demir blokların çıktığı noktada pille de desdeklenmiş işlemcili minik bir kart yapmanız ve kartı da PC ile haberleştirmeniz daha doğru olur diye düşünüyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

zogasi

İşlem tamadır hepinize teşekkürler..:)
İşi paralel porttan çözdüm.
Çizim imkanım olmadıgı için kısaca anlatıyım.
Kapak açıldıgında 220v veren düzeniğin uçuna bi adet röle bağladım.
Rölenin anahtar uçlarından birine pc üzerinden gelen +5v verdim.Anahtarın diğer ucunuda paralel portta 1 uca yani C0 control bite verdim.
Vb içinde timer ile dinlediğim paralel portta her 1 gelişinde  konturu arttırdım.gayet basit oldu  hatta elektronik denemiyecek kadar basit :)
Herkese çok teşekkürler...
Bu arada vb içine birde web browser nesnesi koyarak asp ile counter bigisini 15 dk bir , bir web sitesine kaydettim ki şefler evlerinden girsinler görsünler kütük sayısını :)))))))
Pentium 233MMX + P4 2,4GHZ + Ar-Ge Lab. + KısaMarlboro ve bir Fincan Nescafe  Araştırma dedigin böyle olur :) :) Araştırma olmadan geliştirme Olamaz!!!