avatar_mustafa

Devre üzerinde birden fazla max232 kullanmak

Başlatan mustafa, 13 Kasım 2012, 15:27:43

mustafa

Merhaba arkadaslar , bir devre tasarladım , bu devre TTL seviyesinde çıkış veren 2 cihazdan veri alacak ve bu verileri bilgisayara gönderecek , bu devreyi tasarlarken 3 tane max232 kullandım , bunlardan 2 si cihazlardan gelen verinin TTL seviyesini ayarlamak için , bir tanesi de bilgisayar bağlantısı için kullandım , ve bunların 3 tanesininde rx ve tx uçlarını birleştirip pic e girdim. Bu şekilde bağlantı yaptığımda bilgisayara veri gönderirken bir sıkıntı olmuyor , ancak bilgisayardan bir komut gönderdip işlem yaptırmak istediğimde sanırım veri bozulduğu için işlem yapmıyor. Cihazlardan için olan max 232 leri çıkartıp sadece bilgisayar için olanı devre üzerinde bıraktığımda ise istediğim şekilde işlem yaptırabiliyorum , yani devre gayet güzel çalışıyor. Bu durumda ne yapmam gerekir sizce , bu konuda bir önerisi olan veya böyle bir tecrübesi olan arkadaş var ise paylaşırsa sevinirim. İyi günler dilerim..

Erata

#1
hangi dilde yazdığını bilmiyorum ama

usart interrupt kullanmıyorsan 
3 veya kactane lazımsa sanal seri port  uygulaması yapabilirsin


CCS c de

#use rs232 (baud=2400, xmit=PIN_C6, rcv=PIN_C7, stop=1, parity=N,bits=8,STREAM=seri1 ) 
#use rs232 (baud=2400, xmit=PIN_C4, rcv=PIN_C5, stop=1, parity=N,bits=8,STREAM=seri2 ) 
#use rs232 (baud=2400, xmit=PIN_C3, rcv=PIN_C2, stop=1, parity=N,bits=8,STREAM=seri3 )    gibi oluyor


data göndermek icin kullanırkende

fprintf(seri1,"Deneme1\n");
fprintf(seri2,"Deneme2\n");
fprintf(seri3,"Deneme3\n"); gibi kullanılıyor


mustafa

Cevap için teşekkür ederim . Ben proton kullanıyorum . Yani sanal seri port derken hardware seri portu kullanmayarak pinlerden gelen veriyi serin komutu ile almaktan mı bahsediyoruz o kısmı tam olarak anlayamadım.

Erata

#3
evet pbp veya proton da  tam hatırlamıyorum  ama hardware seri port kullanmadan  software seri port kullanarak çözebilirsin sanırım

mustafa

Mantık olarak doğru bir yol olabilir. Ancak bilgisayardan ne zaman veri geleceği belli olmadığı için programı sürekli serin komutunda bekletmek , programdaki diğer işlerin aksamasına neden olur , bu yüzden bilgisayar kısmında hardware portu kullanıp değer cihazları da mikrodenetleyicinin pinlerine bağlayarak software olarak kullanabiliriz sanırım. Sonuç itibari ile o cihazlar ben soru sormadan cevap vermiyorlar . Ben cihaza sorgumu gönderip hemen ardından serin komutu kullanırsam , sanırım bu işi çözebilirim . Tabi siz değerleri arkadaşlarımında görüşleri önemli....

Erata

evet dediğin gibide kullanabilirsin   data beklediğin  cihazı yani sende PC oluyor hardware usart kullanıp digerlerini softvare kullanırsan olur  diye düşünüyorum

mustafa

Bu şekilde bir deneme yapacağım sonuç olumlu olursa buraya yazarım. Çok teşekkürler..

mustafa

malesef bu sekilde bir sonuç alamadım. Veri göndermesinde bir sıkıntı yok yalnız veri almasında problem oluyor.

ete

Şema olmayınca insan kafasında canlandıramıyor.
Anladığım kadarı ile 2 ayrı karttan gelen TX ve RX uçlarını birleştirdin ve senin kartına bağladın. Bağlarken gelen TX ucunu senin RX pinine gelen RX ucunuda senin TX ucuna bağladın.

Tabiiki aynı zamanda PC ye veri yollayabilmek için PC hattında gelen TX ucunu senin RX ucuna ve gelen RX ucunuda senin TX ucuna birleştirdin.
Bu sistemin çalışması gerçekten zor oluyor. Aslında yalnızca 2 adet TX birleşmesi bile sorun çıkarıyorki sen 3 adet bağlamışsın.
Sorunun asıl kaynağı sanırım empedans bozulması. Yada voltaj seviyelerindeki bozulma. Bu sorunu aşmanın tek yolu var.
Sistemi RS485 sistemine çevireceksin. Yani her bir üniteye birer tane MAX485 entegresi yada muadili olan 75176 (yanlış hatırlamıyorsam)  ekleyeceksin.
Bu durumda sistemde Bütün A lar kendi aralarında ve bütün B ler kendi aralarında birleşecekler.
Haberleşme şeklinde her hangi bir değişiklik olmayacak. Yalnızca MAx485 entegresinde kontrol edilmesi gereken birde RE-DE pinleri var. Bu iki pin birleştirilip normal durumda LOW da tutulması yalnızca bilgi yollayan tarafın bu pinlere HIGH vermesi gerekiyor.
Kısaca sistem bilgi almak için beklerken DE_RE pinleri LOW olması gerekiyor. Bilgi yollarkende bu pinler HIGH olması gerek.
Başkada bir şey gerekmez.

Aşağıdaki linkte bir master - slave çalışması yapmış idik. Bu anlattığım sistemi orada kullanmış idim. isis şemasını yüklersen görebilirsin.
http://etepic.com/index.php/topic,57.15.html

Ete

mustafa

     Erol bey yanıt için teşekkür ederim . Elimde 2 adet cihaz var bunlardan birincisi yük hücresi ve devamlı olarak TTL seviyesinde veri yolluyor. Diğeri ise yine TTL seviyesinde haberleşen bir uzunluk ölçüm cihazı bu cihazda sadece ona sorgu yapıldığında veri yolluyor. Ve bir de pc var tabi . TTL seviyelerini lojik seviyeye düşürebilmek için her biri için bir tane max232 kullandım . Ve bu şekilde rx ve tx leri birleştirdim .Tabi sizinde öngördüğünüz üzere sistem çalışmadı muhtemelen empedans uyuşmazlığı yüzünden. Daha sonra bilgisayardan gelen RX ve Tx i hardware haberleşme uçlarına , diğer cihazlardan gelen rx ve tx leri de 4 adet pine bağladım . Bunun sebebi bilgisayardan ne zaman veri geleceğinin belli olmamasından dolayı bilgisayara kesme attırmak , diğerler cihazlardan  ne zaman veri geleceğini bildiğim için ise onlarda serin ve serout komutları kullandım. Ancak bu sekilde pc haberleşmesinde bir sorun olmadığı halde diğer cihazlardan veri alamadım. Eğer cihazların hepsini 3 ünü de ben yapmış olsam kesinlikle rs485 kullanırdım ama loadcell ve uzunluk ölçüm cihazları rs232  ile bağlantı kuruyor bu yüzden sn75176 entegresini kullnamıyorum. Şimdi de farklı bir yoldan nasıl veri alırım onu düşünüyroum açıkçası . Sizce ne yapmam gerekir , sizin bir fikriniz varmı bu konuda ? Teşekkür ederim..

ete

Lojik seviyeler konusunda şunu söyleyebilirim. TTL seviye yani Pic de kullanılan seviye ,
HIGH=+5V
LOW=0 V dur.

RS232 Lojik seviyeleri ise,
HIGH= -10V (-7V ta kadar düşebilir)
LOW= +10V (+7 ta düşebilir)
Bu iki sistemi bir birine lojik olarak uydurabilmek için Max 232 entegresini kullanıyoruz.
TTL den bir High (+5V) yollandığı zaman entegre bunu PC ye verirken -10V seviyesine çeviriyor.
TTL den LOW (0V) yollandığı zamanda bunu +10V ta çevirmektedir.
PC den yollananlarıda TTL seviyelerine indirgemektedir.

Sisteminde yer alan cihazlar TTL iseler yalnızca  PC ye bağlanan sisteme MAX232 eklemen gerekirdi. Diğerlerinde bu olmamalı.

Aslında anlattıklarına bakınca sistem RS485 ile çalışır gözüküyor. Şöyle değerlendiriyorum.
- Yük hücresi yalnızca bilgi yolluyor. O halde onun DI_RE hattını sürekli HIGH da tutarım.
- Uzunluk ölçüm cihazından gelen çıkışı da Max485 e bağlarım ve yine DI_RE hattını High da tutarım.
Bu iki cihaz veri yolladıkları için Output enable uçları HIGH da tutulması gerekiyor.
Bu aşamadan sonra  Pic kartın USART ile iki cihazdan gelen verileri alacak ve PC ye veri yolalrken USART kullanmayacaktır.
Böylece iki cihazdan gelen verileri USART alacak ve bir başka pinden PC ye çıkış yapacaksın.
Ancak bu şekilde olabilir diye düşünüyorum.
İki cihaz ve USART arasında RS485 sistemini kurman gerekiyor. PC ye giden hatta ise yalnızca Max232 çeviricisi kullanarak işi çözmen gerekir.

Ete

umitco

 "Elimde 2 adet cihaz var bunlardan birincisi yük hücresi ve devamlı olarak TTL seviyesinde veri yolluyor"

Mustafa bey , bu loadcell'in marka ve modelini verebilirmisiniz rica etsem , TTL seviyesinde bilgi göndermesi ilgim çekti.

mustafa

Sanırım eksik anlattım. Aslında TTL seviyesinde çıkış veren loadcell değil loadcell in bağlı olduğu indikatör TTL seviyesinde çıkış yolluyor. Yani bilgisayara bağlandığı taktirde direk haberleşme sağlayabiliyor. Yanlış anlattıysam özür dilerim.

ete

Bilgisayarın RS232 si TTL değildir. Yukarıda anlattım. TTL yapmak için Max232 kullanıyoruz. Terimlere dikkat etmek gerekiyor. Yoksa karşıda bulunan bizlerin kafası karışıyor. Indikatör TTL seviyede sinyal veriyorsa Bilgisayar ile direk haberleşemez. Arada yine Max232 olması gerekir. Direk haberleşiyorsa TTL değildir. O zaman format RS232 formatıdır. Yada seviyesidir demek lazım.

Ete


Erata

#14
eger cihazları kendiniz tasarlamadı iseniz Benim bildigim ve simdiye kadar gördüğüm anlattıgınız türdeki cihazlar  RS232 veya 485  haberlesir
hatta bazı cihazların  uzerinde hem rs232 hem 485 çıkışları mevcuttur

tabi bu dediklerim hazır bir cihaz satın aldıysanız gecerli

cihazların özellikleri marka model hakkında bilgi verirseniz  konu daha kolay anlaşılacaktır

not eger cihaz pc ile haberlesebiliyorsa ETE hocamın dedigi gibi TTL çıkışlı degildir  çıkışında ya 232 yada 485 mutlaka vardır

saygılar

Erata

Powered by EzPortal