avatar_mustafa

SERİ HABERLEŞMEDE RS485 - RS 232 KULLANIMI

Başlatan mustafa, 02 Şubat 2012, 16:13:54

erdogan2734

Ben bir delikli pertinaks üzerine devreyi kurdum sıkıntı çıkmadı cevap için teşekkür ederim
Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

rglcr

merhabalar
ben pic ile sayacı haberleştirmek yani elektrik sayacını okumaya çalışıyorum.
sorun max 232 modülü ile yaptığım donanaımı pc ye bağladığımda göndermek istediğim bilgileri seri port dan pc de okuyabiliyorum.
sayaca gitmesi gereken bilgileri seri port üzerinden sayaca yolladığımda da sayaçtan cevap alabiliyorum hatta sayaçtan aldığım cevabın aynısını pic e gönderdiğimde (pc den .) pic de bu verileri doğru bir şekilde okuyor. haberleşme hızı ve formatı ayarlarını da doğru yapmama rağmen pic ile sayacı max 232 ile bağladığımda kontrolsüz veriler almaktayım.
hatta daha da ötesi sayacı da söküp sadece max232 modülünü pic e bağladığımda da aynı şekilde anlamsız ve kontrolsüz veriler almaktayım.
nedni ne olabilir sizce?

ete

Sayacın TTL mi yoksa RS232 formatındamı çalıştığını öğrenmek gerekiyor. Yeni nesil sayaçların TTL olduğunu duymuş idim. Pic çıkışı TTL dir yani high=+5V low=0V dur. RS232 formatında ise High=-10V , low=+10V dur. İki cihazın anlaşabilmesi için seviyelerin eşitlenmesi gerekirki bunuda max232 yapar.
Bu durumda PC ile Sayaç arada max232 koyarak anlaşabiliyor ise Sayaç TTL dir. Böyle ise sayac ile pic direk bağlanmalıdır arada max232 olmadan. Bu konuları araştır ve yaptıklarını yeniden değerlendir.
Ete

rglcr

#33
usb to comport adaptörü çıkışı sayaca bağlandığında çalışıyor. anladığım kadarıyla bu da com port seviyesi.
sorun max232 modülü pic çıkışına bağlandığı an sayaç bağlanmadan da anlamsız karakterler alması
com port ile ilgili diğer hand shake uçları bağlantısı ile alakalı olacağı kanısındayım ama bu bağlantı diyagramı ile ilgili netten bazı bağlantılar buldum denedim ama sorunu çözemedim.

ete

Bazı USB==>RS232 çeviricilerde MAX232 de bulunmaktadır. Öncelikle bundan emin olman gerek seninkisinde varmıdır yokmudur diye.
Diyelimki yok!
USB den SAYACA bağlandığında sistem çalışıyor diyorsun. Bu durumda sayacın RS232 formatında çalışıyor demektir.
O zaman Sayac ile PİC arasında mutlaka MAX232 olacak demektir. Hal böyle olunca muhtemelen bağlantın yanlış yada MAX232 devresinde pek çok kişinin yaptığı gibi kondansatör ler ters bağlıdır. MAX232 entegresi 0-5V gerilim kullanarak hem -10V hem 0V hemde +10V üretmektedir. Bu voltajları üretebilmesi için devre üzerinde bazı kondansatörler vardır. Yanlış hatırlamıyorsam 6 ve 2 nolu pinlere bağlı olan kondansatörler ters bağlı imiş gibi görüneceklerdir. Data sheet'e iyi bakın. Şema koymadığınız için daha fazla yorum yapamıyorum.

Ete

myalvac

ETE Hocam merhaba. Öncelikle böylesine faydalı bir portal kurduğunuz için teşekkürler. Ben bir haberleşme hattından PIC ile veri okumak istiyorum. (Araçtan) MAX232 taktım test ettim. (Sinyalleri logic analyzer ile dinledim ve analayzer ın tespit ettiği baund rate e ayarladım pic i.) Ancak istediğim sonuca erişemedim. Dinlediğim hatta BUS- BUS+ ve GND isimli üç kablo var. Sonradan 485 olabileceği aklıma geldi. Kablo şu şekilde hocam: http://i.hizliresim.com/XBmn7j.jpg

Forumdaki diğer yazılarınızı da okudum. Ancak bazılarını tam anlayamadım. Size aşağıdaki konuları danışmak istiyorum.

-Şu üründen sipariş verdim. http://www.robotistan.com/TTL-RS485-Seri-Donusturucu-Karti-MAX485,PR-2099.html
Bu ürünü PIC ile kullanmak istiyorum. (Sadece MAX 485 bulamadığım için bu ürünü aldım.) Sorun olur mu?
-Hocam bir topic te sizin max485 i pic e direkt bağlamadan önce max232 den geçirmemiz gerektiğini belirttiğinizi gördüm, bir başka topic de de max232 bağlanmasa da olur şeklinde algıladım. Acaba bu modülü yani max485'i pic e direkt mi yoksa araya max232 gelecek şekilde mi bağlamam gerek? (Sadece dinleme modunda çalıştırmak istiyorum.)
-Araya max232 gerekmiyorsa (veya gerekiyor olsa bile) max485 için de aynı şekilde baund rate girmek gerekir mi acaba? (İki farklı analyzer ile hattı dinledim ve birbirlerini terslediklerini gördüm. 100000 ve 141176 değerleri çıktı. Sinyallerin ekran görüntüsü: http://i.hizliresim.com/MELyYQ.jpg )

Teşekkür ederim..

ete

Son dönem araçlarda genelde CAN-BUS denilen protokol kullanılıyor. Ben CAN-BAS 'ı çok iyi bilmiyorum maalesef sadece araçlarda bunun kullanıldığını pek çok yerden duydum. Araştır istersen.
RS485 kullanacak isen aldığın alet işini görür. Zaten sende aynısını kartın üzerinde yapacak idin.

RS485 ile MAX232 nin bir biri ile direk alakası yok. Aşağıdaki açıklamayo okuyunca neyi neden kullanacağını anlarsın.
Pic TTL denilen lojik seviye ile çalışır . HIGH=+5V ve LOW=0V dur.  PC ve benzeri cihazlar da Seri port RS232 formatında yada lojik seviyesinde çalışır. HIGH= - 10V ve LOW= + 10V dur. BU iki aletin bir biri ile haberleşebilmesi için lojik seviyelerinin bir birlerinin istedikleri seviyelere çevrilmeleri gerekir. MAX232 bu işi görür. TTL seviyeyi RS232 seviyesine veya tersi olarak RS232 seviyesini TTL seviyeye çevirir. Yalnızca bu işe yarar. İki TTL alet bir biri ile arada çevirici olamdan anlaşır. 2 PC de arada bir şey olmadan anlaşır. Ancak bir Pic ve bir PC nin anlaşabilmesi için arada MAX232 olması şarttır. Haberleşecek iki elemanın Lojik seviyelerini kontrol etmek gerekir. İkiside aynı ise MAX232 kullanmaya gerek yoktur.
RS485 konusu ise Seri haberleşme mesafesini uzatabilmek amacı ile yaratılmıştır. Normlade 3-5 m olan seri haberleşme mesafesini 1000 m lere çıkartabilecek bir teknolojidir ve yalnızca RS232 çıkışına bir RS485 entegresi ilave edilerek kullanılır.
Half Dublex denilen yöntemde aynı anda yalnızca bir yönde haberleme yapılacağı için yön kontrolü entegrenin DE/DI pinleri ile yapılır. Gerisi RS232 de kullanılan komutlar ile aynıdır. Şimdi bubilgilere bakıp neyi ne amaçla kullanacağına sen karar ver artık.

Ete

myalvac

#37
Çok Teşekkür ederim Hocam. Hizli ve bir O kadar net cevap icin.

Aracta can bus kullanılmadığından emin.
O zaman aradan max232 yi kaldiriyorum.. Cunku haberlesme hattinda sürekli 5V var. (Logic1) Data gelmeye basladigin ise 0V oluyor. (Logic 0) Zaten pic te 0-5V calisiyor. Tek fark bu dediginiz logic seviye algilama ve mesafe farkı olduğu icinde max232 kullaniyormuşcasına baund rate ayarina devam edecegim..

Teşekkürler..

Mali-88

485 entegresinin A ve B uçlarını pull-up ve pull-down yapmaya gerek varmı

ete

Gerek yok çünki lojik seviyeyi sen belirliyorsun. Ama şayet o pinleri bir open collector pin ile sürüyor isen tabiiiki Pullup bağlaman gerekir. Örnek vereyim 16F628 de PORTA.4 pini Open Collectordur. PORTA.4=1 komutunu verirsen o pin HIGH olamaz. Çünki yapısında o pine HIGH uygulayacak bir düzenek yoktur. Bu durumda o pine bir Pullup direnci bağlarsan komutu verince pin HIGH olur pullup dan dolayı.

Ete


kahraman34

Alıntı yapılan: ete - 03 Şubat 2012, 07:34:12
Free yükleme butonu üzerinde 4:59 beliriyor ve yavaş yavaş geriye doğru sayıp süre bittikten sonra yükle diyor bende çıkan budur.

Kudret Bey,
Maalesef DE-DI uçlarını yanlış bağlamışsınız.  Dikkat etmek gerekiyor. Bu şemaları alıp birileri uygular ve hüsrana uğrarlar sonra.

Şemayı olması gerektiği gibi çizdim. İlişiktedir.



Ete


Hocam bu ekteki şemayı inceledim. Pc tarafındaki bağlantı için re de uçlarına bir anahtar demişsiniz bu nasıl olacak ? Rts ucundan voltaj almaya çalışıyorum o bazen geliyor bazen gelmiyor çözemedim olayı.Yardımcı olursanız sevinirim Teşekkürler.

ete

Ekte şema falan göremiyorum ben. Bu konuyu hatırlıyorum ama detay yok aklımda.
RS485 ile haberleşirken RE/DE pinleri haberleşmenin yönünü belirler. Bu ister PC ye bağlı olsun ister Pc'e bağlı olsun bir şekilde anahtarlanmalıdır. Anahtarlanmalıdır derken illaki oraya anahtar bağlanacak anlamında söylemiyorum.
Bu birleşik pin gurubuna LOW verirseniz RS485 RX moduna girer yani bilgi alır. Aynı guruba HIGH verirsen Bilgi yollama yani TX moduna girer. İşin doğrusu gönderme işi kişinin elinde olduğu için bu pinleri LOW da tutup sürekli dinlemede kalır. Bir şey yollayacağı zaman önce pinlere HIGH verir bilgsini yollar ve sonra pinleri LOW a çeker tekrar.

RS232 pinlerinden voltaj almak pek akıllıca olmaz. çok düşük ma değerinde voltaj vardır orada ama bir ledi bile süremezsin.

Ete

kahraman34

Hocam ben bu devreyi yaptım. (Ekteki şema dediğim sizin çizdiğiniz şemaydı)

Bu devrede con1  7 nolu uçtan ya sabit 1 geliyor yada sabit 0. Yani Hyper terminal yada benzeri programdan veri gönderme anında high olsun istiyorum olmuyor.  Kendim bu ucu high veya low yapınca data aktarımı oluyor.
Şemada not da yazmışlar, led1 transmit (bright) or receive mode. Ama olmuyor.
Yani rts sinyalini kontrol altında tutamıyorum.  Windowsa bişiler yazmak lazım rts high olsun yada low olsun diye ama öyle bir ihtimalde yok neticede hyper terminal gönderiyor bilgiyi. Hyper terminalde böyle bir seçenek de göremiyorum.
Mevzu bu.

ete

#43
Bu şemada MAx485 entegresinin  RE/DE uçları MAX232 nin R2Out ucuna bağlanmış dikkat edersen. Bunun RS232 karşılığı ise R2in ucudur ve buda 9 pin RS232 portundan RTS ucuna bağlanmış. Bu bağlantı şekli bütün cihazlar için geçerli değil. Zira RTS ucu bazı cihazlar tarafından kullanılmakta ama seri haberleşmede genellikle RX ve TX uçları yalnızca kullanılmaktadır.
Kısaca RS232 tarafında bir veri yollandığı zaman RTS ucu HIGH yapılmalıdır. Yada benim yaptığım gibi Max232 nin R2in ucuna PC tarafında çalışan programdan  high verilerek işlem kontrol edilmelidir.

Max485 entegresinin A ve B çıkışları (6 ve 7 nolu uçlar) tamamen seri haberleşme uçlarıdır. Oralara high yada low verilmesine bir anlam veremiyorum bence yanlış bir iş ve hiç bir geçerliliğide yok. Zira oradan bilgi geliyor. Alış yada veriş yapılmasını RE/DE ucu kontrol etmektedir. Orası ile işi kontrol etmeye çalış.

Bu arada RS232 deki voltaj seviyelerinede dikkat etmen gerekiyor. O gördüğün 9 pin RS232 portunda,
HIGH=-10V
LOW=+10V dur.
Max485 veya pic tarafında ise;
HIGH=+5V
LOW=0V dur.
Max232 entegresi bu seviyeleri tarafların birbirlerini anlayacağı şekilde düzeltir. PC tarafından gelen HIGH (-10V) sinyali diğer tarafa +5V olarak yollar. Yine Pic tarafından yada Max485 tarafından gelen HIGH (+5V) sinyali RS232 tarafına -10V oarak yollar.
Çalışırken bunlara dikkat etmek lazım.

Ete

Powered by EzPortal