Rs-232 Den Role Kontrol
-
Arkadaşlar PC'nin rs-232 portundan roleleri kontrol eden devre ve program yapmayı düşünüyorum. Konu hakkında fikirlerinizi bekliyorum.
-
seri porttaki bilgi, seri şekilde iletiliyor o yüzden pic gibi bir mikrokontrollör kullanman gerekecek. Seri portun çıkışı +- 7.5 volt olduğu için bu voltaj değerini pic e göre ayarlamak lazım, gerilimi 0-5v a ayarlamak ve seri bilgiyi bozmamak için max232 entegresini kullanacaksın..
http://elektrobilim.org/forum/malzeme-bilgisi/5543-max232-en-dogru-baglanti-bicimi-nasildir.html
burada örnekler var, bundan sonra seri bilgiyi pic e bağlayacaksın (max232 hem alıcı hem verici görevi yapabiliyor) pic ile seri bilgiyi okuyup ona göre isteidğin çıkışı aktif edebilirsin aynı şekilde seri porta , seri bilgi yollayabilirsin.
eğer elektronik bilgin ve pic programlama bilgin yoksa bu iş biraz sıkıntılı. İşin daha basitine kaçmak istiyorsan paralel portu öneririm sana. Çünkü veriler paralel bir şekilde iletiliyor. Çıkış pinlerinden istediğin değeri yollayabiliyorsun pin olarak. Yani atıyorum 10. pin i 1 yapabiliyorsun. ya da 0 (logic 0 = sinyal yok, logic 1- sinyal var) bu sayede röleyi 10. pine bağlarsın ve 10. pin logic 1 ise röle kontraklarını çeker, logic 0 ise kontakları bırakır.
bunun için inpout32.dll vardı kolay bir şekilde kontrol yapabilirsin. bu dll aynı zamanda seri iltişim için de geçerli. hatırladığım kadarıyla paralel port için dll e referans olarak &h379 yazmalısın, seri port için de &h279. seri port için ayrıca com nesneleri de vardır.
ama dedğim gibi seri iletişim daha zordur veriler artı ardına gider 100101 şeklinde paralel iletişimde ise her çıkış pini için tek bir bit gider ve
1
0
1
1
0
gibi alabilirsin tüm pinlerden. çıkış sayısı kadar da röle kontrol edebilirsin, bir çevirici ya da pic e ihtiyacın yok.
kolay gelsin
-
unbalanced güzel demiş ama rs232 hakkında önemli 2 bilgiyi atlamış
1)8bit olmasına ragmen 7 bitlik kodlama kullanman lazım 1. bit her zaman start bitidir.
2)Elektronik olarak bakarsan rs232(yada daha doğru bir terimle uart) veri iletişiminde logic 0 sinyal vardır 0V ile 15v arası degişir 0 ila -5v arasında da logic 1 oluyor.
Seri port yanlış hatırlamıyorsam daha düşük voltajda çalışıyor ve 8bit'i senkronize şekilde tek seferde yolluyor.Sadece data portlarını kullanabilirsin logic 1 3.3V ila 5V arası logic 0 1V'dan küçük olan değerlerdi.Eğer projende veri kaybını düşürmek ve mesafeyi yüksek tutmak istiyorsan seri port kolay kullanım ve hızla geliştirmek içinse paralel port kullanmanı öneririm
-
yanlışın var hocam sanırm ya da ben demek istediğini yanlış anladım. teknik detaya fazla girmek istemiyorum ama
1. bit start bitidir,
7 ya da 8 bit data bitidir.
bir bit eşilik (parity) bitidir, bu verinin doğru gidip gitmediğini kontrol etme amacındadır (asenkron iletişimde zorunlu değildir, eşlik biti dahil tüm bitlerin toplamı tek ya da çift olmalıdır)
son bitte stop bitidir, stop bitiminden sonra gönderilen bit start bitidir. stop biti bir ya da iki bit olabilir.
ikinci olarak;
rs232 de logic-0, 3-25 volt arasında tanımlıdır, logic-1 ise -3-25volt arasında tanımlıdır. ancak MCU lar TTL oldukları için logic-0 yaklaşık 0-2.5volt, logic-1 ise yaklaşık 3-5 volt arasındadır. rs232 ve MCU arasında iletişimi sağlamak, gerilim dönüştürmek ve seri bilgiyi bozmamak için dönüştürücü entegreler kullanılır. bunların en popüleri max232 dir. bunun paralel port eş değeri ise uln2003 dür, bu da paralel bilgiyi bozmadan, dışarıdan verilen gerilime dönüştürür..
-
unbalanced bunu yazdı:
-----------------------------yanlışın var hocam sanırm ya da ben demek istediğini yanlış anladım. teknik detaya fazla girmek istemiyorum ama
1. bit start bitidir, 7 ya da 8 bit data bitidir. eşilik biti vardır, bu verinin doğru gidip gitmediğini kontrol etme amacındadır (asenkron iletişimde zorunlu değildir, eşlik biti dahil tüm bitlerin toplamı tek ya da çift olmalıdır buna göre de eşlik biti belirlenir)
son bitte stop bitidir, stop bitiminden sonra gönderilen bit start bitidir. stop biti bir ya da iki bit olabilir.
ikinci olarak;
rs232 de logic-0, 3-25 volt arasında tanımlıdır, logic-1 ise -3-25volt arasında tanımlıdır. ancak MCU lar TTL oldukları için logic-0 yaklaşık 0-2.5volt, logic-1 ise yaklaşık 3-5 volt arasındadır. rs232 ve MCU arasında iletişimi sağlamak, gerilim dönüştürmek ve seri bilgiyi bozmamak için dönüştürücü entegreler kullanılır. bunların en popüleri max232 dir. bunun paralel port eş değeri ise uln2003 dür, bu da paralel bilgiyi bozmadan, dışarıdan verilen gerilime dönüştürür..
-----------------------------Parity bit tamamen isteğe bağlıdır o yüzden yazmadım ve genelde seri haberleşmede mesafe kısaysa zaten pek kullanılmaz.
İkinci önemli nokta ben orada voltaj bilgisinden önce birşey dedim.uart'da polarityler farklıdır bunun sebebide uzun mesafede beslemede kullanılması içindir eğer hayatında hiç fpga programladıysan tavsiye ederim datasheetlerini bul oku onların datasheetlerinde genelde nette bulunamıcak kadar detaylı şekilde açıklanır.
-
ek olarak tekrar voltage seviyelerini kontrol ettim ieee'nin standartlarını bulamadım ama elimdeki tüm kataloglarda ve tüm çalışmalarda 15+- üst nokta olarak belirtilmiş. Çalışma voltajlarıda 3V+- yada 3.3V+- olarak
-
öncelikle konunun fpga ile bir alakası yok burada rs232 teknolojisinden bahsediyoruz. Ben genellikle usb destekli pic programlarım ya da PLC, fpga ile ilgilenme şansım yok.
bu voltaj değer aralıklarını yaklaşık verdim, voltaj aralığını belirleyen etmen güç kaynağıdır. Eğer bakabilirsin 25 voltun üst sınır olduğunu görebilirsin. 25 voltta çalışır diye bir kural yok. Ancak üst sınır 25 volttur.
http://www.lookrs232.com/rs232/waveforms.htm
-
fpga örnegi vermemin sebebi onların genelde interface dökümanlarının en detaylısı olması plc ile ilgilenen tanıdıklarımın çogu fpga teknolojisiyle ilgili yada uğraştıkları içindir.
25v olabilir güç kaynagından ziyade kartın üzerinde ki chiple alakalıdır.Tartışmıcam senle sadece ilk mesajında ters logicden bahsetmemişsin onu belirttim.
-
tamam hocam tartışmaya gerek yok :)
burada seri port ile klavye kontrolü var
http://320volt.com/wp-content/uploads/2008/10/rs232-seri-iletisim-uygulamasi.c
inceleyebilirsin. devresi de burada
http://320volt.com/wp-content/uploads/2008/10/rs232-seri-iletisim-uygulamasi-ccs-c.png
-
ben paralel porttan yapmıştım hatta konusunu da acmistim çok basit biseydi şimdi yapacak olsam usb üzerinden biseyler yaparım neden seri port kullanmak istiyosun
-
Tnrsk bunu yazdı:
-----------------------------
ben paralel porttan yapmıştım hatta konusunu da acmistim çok basit biseydi şimdi yapacak olsam usb üzerinden biseyler yaparım neden seri port kullanmak istiyosun
-----------------------------seri ya da paralel port ile yapamayan birisine usb ile yap demek biraz zor hocam :) usb olayını çözmesi lazım, product id-vendor id gibi handshake için kullanılan bazı sistemler mevcut. usb aslında çok çok karışık bir şey ama yüzeysel olarak araştırdığında bir şeyler yapılabilir. tabii sistem tamamen değişecek (pic ve yazılım için)
pic için 18f serisine yönlenebilirsiniz. 18f2550 en ucuzu sanırm usb destekleyen pic olarak. ancak çıkış sayısı az. ben 18f4550 kullanıyorum. ccs c dili ile proje geliştiriyorum, bilgisarayar tarafında ise c# ile usb kontrolü yaptım. umng.dll isimli dll i kullandım, farklı teknolojiler de mevcut tabii libusb gibi.
