rs485 icin hiz sorusu

Başlatan Karamel, 14 Eylül 2014, 20:44:13

Karamel

Hocam pcb yi 5v luk 75176 ya gore yapmistim. ama microcontroller a secenek koymustum. neyse artik. sanirim hocalarim 3.3v luk rs485 entegreleri kullaniyorlar

OG

Her ikisine de mecbur kalınabildiği durumlar olabilir. PCB cizerken araya voltaj uyumu malzemesi (direnc-transistor) eklenirse her iki durum için de kullanım mümkün olur.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ahmet_zxc

Alıntı yapılan: elektronart - 15 Eylül 2014, 00:46:49
RS485 differansiyel sinyallerle haberleşme sağladığı için uzun mesafelere rahatlıkla çıkabilir tabi hız ve mesafe ters orantılıdır. İşin teorik kısmında internette şunlar yazıyor;
35 Mbit hız 10m mesafede ve 100 kbit hız 1200 m mesafede sorunsuz çalışır. Hız(bit/sec) x Mesafe (m) 108 den küçük olmalıymış.
Sizin uzun mesafe dediğiniz miktar ne kadar?


200mV olayını biliyoruz ve uyguluyoruz ama bu bilgiyle ilk defa karşılaştım.

bu bilgiyi nerden buldunuz?

lütfen yanlış anlamayın ama verdiğiniz formülle verdiğiniz bilgi çelişiyor.

"100 kbit hız 1200 m mesafede sorunsuz çalışır"

"35 Mbit hız 10m mesafede ve 100 kbit hız 1200 m mesafede sorunsuz çalışır. Hız(bit/sec) x Mesafe (e) 108 den küçük olmalı"

100 000 x 1200 = 120 milyon eder. yani 10 üzeri 8 den yani 100 milyondan büyüktür.


ahmet_zxc

elektronart hocam cevaplarınızı bekliyorum.

485 bizim neredeyse tüm cihazlarda kullandığımız haberleşme. eksiklerimizi tamamlayalım istiyorum.

Karamel

75176 entegresinin 5 voltage ile beslenerek girislerine 3.3v microcontroller ile kontrol etme deneyini yaptim.

sonuc icin bir iyi birde kotu haberim var.

-iyi haber. calisabiliyor. calisabiliyor un ne demek oldugunu kotu haberde anlatacagim.

-kotu haber. data lari 9600 baud rate hizinda gonderirken her iki data gonderimi arasina 5msn  delay koymayinca calismiyor. ayrica transceiver yada receiver secimini yaparkende 5msn bekleyeme ihtiyac var.


kisacasi entegre tum operationlarini 5msn gecikmeli olarak algiliyor. devremi bread board tan bozmadan max485 entegresi ile deney yapma sansim olursa. birde onunla deney yapacagim.

RaMu

75176 ile ilgili benim aklıma takılan bir husus var,
konu açtım orada soruyorum, buradada sorayım,
isteyen linkdeki konudan cevaplayabilir.

MCU ve SN75176 5V ile çalışırken,
MCU ile SN75176 pinlerini bağlarken araya direnç koyulmalı mı?
https://www.picproje.org/index.php?topic=60633.msg468899#msg468899


Ayrıca SN75176 pinlerinin direnci ile ilgili bulabildiğim bir bilgi:
(Datasheet e göre 75176 nın R pini, (picin uart Rx pinine bağladığımız 75176 pini)nin direnci 85 ohm mu oluyor, tam çözemedim?))
75176 Tx pini 3k, Enable pinleri 8k imiş, yanış anlamıyorsam.


-------------------------------------------------------------------------------------
Bende şu anda SN75176 ile denemeler yapıyorum.
(Simulasyonda da, gerçekte, breadboard üzerinde de, devreleri deniyorum.)

Transmitter - Receiver secimini yaparken hiç bekleme yapmazsam problem yaşadım.
(Pic 32MHz de çalışıyor, 1 komutu işlemesi 0.125us sürüyor.)
Transmitter - Receiver secimi ardından 1 ms bekleme yaparsam sıkıntı çıkmıyor.

Programda RB0 external interrupt pinine bağlı butona basılırsa,
pic SN75176 yı transmitter moduna geçirip,
'R' gönderiyor.
Geri kalan zamanda SN75176 alıcı modda bekliyor,
eğer uartdan (RS232)
'R' karakteri gelirse, RA1 pinine bağlı ledi toggle ediyor,
(veri alma ve led toggle RDA kesmesi ile yapılıyor.)
2 picdede aynı program var.
Uart 9600 baud da kullanılıyor.




/*
RB0 EXTI pinine bağlı butona basılınca
uart dan rs232 ile 'R' karakterini gönderen
ve
eğer uarttan rs232 ile 'R' karakteri gelirse
LED1 pinindeki ledi toggle eden program. 
*/
/**/

#include <main_lazer_02.h>
#define LED1 pin_A1
#define RTXE_pin  pin_B3

#define TxE output_high(RTXE_pin)
#define RxE output_low(RTXE_pin)


#INT_EXT
void  EXT_isr(void) 
{
TxE;
delay_ms(1);
putc('R');
delay_ms(1);
RxE;
delay_ms(1);

}

/*#INT_TIMER1
void  TIMER1_isr(void) 
{

}
*/
/**/
/*#INT_TBE
void  TBE_isr(void) 
{

}
*/
/**/

#INT_RDA
void  RDA_isr(void) 
{
   if(getc() == 'R')
   {
   output_toggle(LED1);
   }
}

void main()
{
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);      //65,5 ms overflow

ext_int_edge(INT_EXT, L_TO_H);
//veya EXT_INT_EDGE(INT_EXT_L2H);
   enable_interrupts(INT_EXT);
   //enable_interrupts(INT_TIMER1);
   //enable_interrupts(INT_TBE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

output_high(LED1);
RxE;

   while(TRUE)
   {
      //TODO: User Code
   }

}
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Karamel

#21
Hocam select kismina bir msn bekleme koymazsaniz. Transceiver in son byte i mi karsi tarafa ulasmiyor?

mesaj birleştirme:: 11 Ağustos 2015, 21:38:07

Hocam sunu deneyin. Rs485 ten RaMu kelimesini gonderin. 1 msn yi kaldirin. Bakalim karsi tarafa RaM seklindemi gidecek?

RaMu

Haberleşmede sıkıntı oluyor diye 1 ms ekledim zaten,
ama tek karakterden fazlasını göndermeyi denemedim henüz.
(Yalnız ben bir karakteri gönderdikten sonrada 1 ms bekliyormuşum
bunu belirtmemişim.)
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Karamel

Hocam gecenlerdede ayni konu hakkinda Mucit hocam calisiyordu. Simdi telefondan girdigimden link bulamadim.

Oradada ayni konu konusuldu. Karakterlerin gonderildigi saniliyordu. Ama gonderilmeden transceiver receiver a donusuyordu.

Simdi sizin birde fazla karakter ile deney yapmaniz lazim. Eger ramu gonderip. Karsi taraftan ram okuyorsaniz. Microcontroller data yi karsi tarafa gondermeden receiver oluyorsunuz demektir.

9600 baud rate icin 1 msn anlamli. Mesela 500 us bekleseniz system yine bozulur. Yada beklemeyi kaldirin ve karai tarafa iki karakter gondermeye calisin.

Yani birinci character iniz sizin gondermek istediginiz olan olsun. Ikinciye rastgele birseyler gonderin. Bu deneyleri yapinca isin aslini anlayacagiz hocam.

RaMu

Alıntı yapılan: Karamel - 11 Ağustos 2015, 22:20:50
...
Microcontroller data yi karsi tarafa gondermeden receiver oluyorsunuz demektir.
...
Bu kısım önemi,
@Mucit23 ün konusunu hatırlıyorum,
aslında sorun
A)mcu göndermeyi tamamlamadan 75176 yı receiver moda mı alıyoruz?
B)mcu gönderdikten hemen sonra 75176 yı receiver moda alıyoruz ama
75176 haylazlık yapıyor?
A mı B mi bunu çözmek lazım.
Bunun için kullanılan mcu da,
TxBuffer empty veya transmit completed vs. gibi
gönderme tamamlandı bilgisini alabileceğimiz registerları bulup
gönderme kesinlikle tamamlandıktan hemen sonra (hiç beklemeden)
75176 yı receiver moda geçirip
deneme yapmak lazım.
Zaten bekleme vs. ile bu işler sağlıklı olmaz.
Gönderme tamamlandı bilgisi ile Rx konumuna geçersek problem olacağını sanmıyorum.
Benim denemem kolay olur, pic ile deniyorum nerede ne var biliyorum,
stm ile nasıl olur bilemiyorum.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Karamel

Hocam benim yaptigim deneylerde receiver olunca hazirlik yapma zamanini farkedemedim. Yani demekki o kadar hizli selecting oluyor ki. Bu iletisimi etkilemiyor. Daha iyisi datasheet i bastan sona okursak. A dan z ye herseyi anlayabiliriz.

Hocam siz su deneyi yapin. R gonderdikten sonra birde baska character gonderin.

Mesela "Rx" diye gonderin beklemeyi kaldirin. R characterini receiverlar okuyabiliyorlarsa sorun konustugumuz gibi.

Bu deneyleri yapmadan meseleyi ne yazik ki tam olarak anlayamayiz.


RaMu

#26
@Mucit23 ün konusu
https://www.picproje.org/index.php/topic,26840.msg466401.html#msg466401
zaten stm için cevabı sen bulmuşsun orada.

mesaj birleştirme:: 11 Ağustos 2015, 23:09:00

Ben denemek zorunda kalacam zaten,
henüz programda ard arda bilgi göndermem gereken kısma gelmedim,
uğraştığım başka kısımları var programımın,
o kısma gelince durumu yine yazarım buradan.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Klein

Alıntı yapılan: ahmet_zxc - 21 Mayıs 2015, 11:49:21

200mV olayını biliyoruz ve uyguluyoruz ama bu bilgiyle ilk defa karşılaştım.

bu bilgiyi nerden buldunuz?

lütfen yanlış anlamayın ama verdiğiniz formülle verdiğiniz bilgi çelişiyor.

"100 kbit hız 1200 m mesafede sorunsuz çalışır"

"35 Mbit hız 10m mesafede ve 100 kbit hız 1200 m mesafede sorunsuz çalışır. Hız(bit/sec) x Mesafe (e) 108 den küçük olmalı"

100 000 x 1200 = 120 milyon eder. yani 10 üzeri 8 den yani 100 milyondan büyüktür.
https://en.wikipedia.org/wiki/RS-485

Hesap tam  tutmasa da yaklaşık olarak  doğru. Hesabı basitleştirmek adına tam sayı verilmiştir muhtemelen. 

http://cds.linear.com/docs/en/product-selector-card/2PB_RS485fd.pdf
http://www.bb-elec.com/Learning-Center/All-White-Papers/Serial/RS-422-and-RS-485-Applications-eBook/RS-422-RS-485-eBook-graphics-embedded.pdf