Grafik LCD ve 5 metre için kablo kesiti veya RS485

Başlatan musti463, 17 Kasım 2013, 18:39:18

musti463

[IMG]http://i39.tinypic.com/4jnmh4.png[/img]

Grafikte DB0 ile DB7 den oluşan 8 kanallık data hattı 400'er Ohm görünüyor.PIC 5V çıkış verdiğine göre 5/400 den 0.0125 Amper akım akacak diye düşünüyorum ve 5 metre,5v,0.0125 amper,%3 gerilim düşümü bilgilerini elimdeki programa giriyorum ve bana 1,5mm2 lik kablo seçmemi söylüyor.

Daha sonra besleme hattının kablosu içinse tablodaki 6mA yazan değeri seçiyorum ki 1 tane led'in 20mA çektiğini düşünürsek, kocaman grafik ekranın 6 mA akım çekmeside garibime gitti biraz.Neyse bu sefer programa 5 metre,5V,6mA,%4 gerilim düşümü bilgilerini giriyorum bana 5mm2 lik kablo seçmemi söylüyor.

Bu hesaplamaları yapmadan önce data hattının(db0-db7 arası) mikro amperler seviyesinde akım çektiğini düşünüyor ve 0,22mm2 lik kesitin yeterli olacağını düşünüyordum.Sizin fikriniz nedir bu konuda?
Mustafa Emir SADE

Ramiz

Bence Lcd yi 5 mt geriden paralel olarak kontrol etme. Lcd için minik bir kart yap. Bu kart üzerinde minicik bir işlemci olsun.(en az 10 I/O lu) Rs485 ile ana karttan, Lcd kartına bilgileri gönder. Lcd üzerindeki işlemcinin görevi sadece seri bilgiyi paralel e dönüştürmek olsun.

Ben olsam böyle yapardım. 5 mt kablo ileride senin canını sıkabilir..
Electrical & Electronics Engineering -> Step one

musti463

Alıntı yapılan: Ramiz - 17 Kasım 2013, 20:15:52
Bence Lcd yi 5 mt geriden paralel olarak kontrol etme. Lcd için minik bir kart yap. Bu kart üzerinde minicik bir işlemci olsun.(en az 10 I/O lu) Rs485 ile ana karttan, Lcd kartına bilgileri gönder. Lcd üzerindeki işlemcinin görevi sadece seri bilgiyi paralel e dönüştürmek olsun.

Ben olsam böyle yapardım. 5 mt kablo ileride senin canını sıkabilir..

Evet dediğiniz yolu düşündüm ve araştırdım fakat RS485 hakkında yeterli bilgim yok.Nasıl haberleşilir float bilgi nasıl gönderilir çok az bir fikrim var.Sonraki aşamada öyle yapmayı düşünüyorum bende.Ama şuan o konuya ayıracak vaktim yok malesef.Eğer elinizde rs485 ile alakalı uygulama,proje varsa paylaşırsanız memnun olurum
Mustafa Emir SADE

Ramiz

Rs485 hakkan birşey bilmene gerek yok. İki adet ic si var. Birisi tx, diğeri Rx. iki ic ninde data uçlarını birleştireceksin(A-A, B-B şeklinde) Tx ic sinin yani ana işlemcinin orada bulunan rs485 ic sinden seri bilgiyi yollayıp, Lcd kartındaki Rx ic sinden seri olarak okuyacaksın. Herşey bundan ibaret.
Electrical & Electronics Engineering -> Step one

skara1214

Alıntı yapılan: musti463 - 17 Kasım 2013, 20:24:20
Evet dediğiniz yolu düşündüm ve araştırdım fakat RS485 hakkında yeterli bilgim yok.Nasıl haberleşilir float bilgi nasıl gönderilir çok az bir fikrim var.Sonraki aşamada öyle yapmayı düşünüyorum bende.Ama şuan o konuya ayıracak vaktim yok malesef.Eğer elinizde rs485 ile alakalı uygulama,proje varsa paylaşırsanız memnun olurum
hiçbir zorluğu yok sn75176  25 kuruş (half dublex), sn75179 1tl(full dublex) ;normal uartı kullanır gibi kullanacaksın bencede hiç kasma başın ağrımasın
Herkes ölür ama herkes gerçekten yaşamaz

musti463

Alıntı yapılan: skara1214 - 17 Kasım 2013, 20:39:59
hiçbir zorluğu yok sn75176  25 kuruş (half dublex), sn75179 1tl(full dublex) ;normal uartı kullanır gibi kullanacaksın bencede hiç kasma başın ağrımasın

hocam maddi açıdan sorun değilde.CCS C kullanıyorum yazılımsal sorunlar var CCS C de örnekler var fakat bir türlü ISIS de çalışan bir kod oluşturamadım.En basitinden karşı tarafa "3" sayısını gönderemiyorum
Mustafa Emir SADE

Veli B.

75176 için direction kontrolünü yapıyor musunuz?

Ramiz

Alıntı yapılan: musti463 - 17 Kasım 2013, 21:19:38
hocam maddi açıdan sorun değilde.CCS C kullanıyorum yazılımsal sorunlar var CCS C de örnekler var fakat bir türlü ISIS de çalışan bir kod oluşturamadım.En basitinden karşı tarafa "3" sayısını gönderemiyorum

Mesleğiniz nedir?

mesaj birleştirme:: 17 Kasım 2013, 21:55:52

Yani elektronik dışında uğraştığınız bir mesleğiniz varmı?
Electrical & Electronics Engineering -> Step one

musti463

elektronik mühendisliği son sınıf öğrencisiyim
Mustafa Emir SADE

OG

EDIT 27.03.2021  konu için buraya bakınız
https://www.picproje.org/index.php/topic,59991.0.html

------

RS485'i bilmediği için gözünde büyütüp kullanmaya cekinen çok arkadaş var.
Bu sebeple birşeyler karalamak gerekli.

---------

RS485, datayı taşıma işlemini,
TTL deki 1 tel yerine, 
2 tel ile yapan sistemden başka birşey değil.

Önce biraz bu 2 tel kavramını anlamaya çalışalım.

PIC vb lojik devrelerde, hattâ, çok analog devrede 1 tel  (tek tel) ile bilgi taşıması yaparız.

Filan PORT şu işi yapacak, "falan port led yakacak, fişman port data sürecek, veya role cekecek" gibi tabirleri hep kullanırız.

İşte o işlem, tek tel ile yapılan işlemdir.
Yani bilgi taşıyan tel 1 adettir.
İçerdiği bilgi 1 tel ile karşı tarafa iletilir.

Bilgi,
örneğin digital olsun,
yani H ve L içeriklerine sahip bir tel.
Bu H ve L içeriğini karşı tarafa iletiriz.

Fakat karşı taraf,
bunun HIGH mı,
LOW mu olduğunu nasıl anlayacak,
yani üzerindeki elektrik miktarı
H ise neye göre H,
L ise neye gore L ?

Yani o telde,
o an H var demek, bir şeye kıyas ile H var demektir.

"Bu bina yüksek" dediğimizde, neye göre yüksek? Belkide alçak.
Benim yaşım küçük dediğimizde neye kime göre küçük, belkide büyük.

İşte bu
"Neye Göre" kıyası,
bizim işimizde çok yüksek oranda, nerede ise %100 oranda GND ye göredir.

"Bu pin şu anda H" dedikmi
(lojik olarak H değeri TTL yapıda mesela 4V dan sonra olsun)
o hatta 4V dan fazla voltaj var demektir.
Neye göre 4V dan fazla,
GND ye göre.

Aynı şekilde
o hat şu an L dediğimizde,
o hattaki voltaj Lojik olarak LOW kabul edilen sınırı gecmemiş demektir,
mesela 1V olsun,
o hatta 1V var ama neye göre, GND ye göre.
Oysa H kabul ettiğin değer, kullandığın adaptorun 12V çıkışına göre kıyaslansaydı düşük değerde olacaktı.

İşte bu REFERANS konusu kafalarda tam yerleşmeyince birçok meselenin anlaşılmasıda zorlaşıyor.

Konuya dönersek,
TTL yapıdaki bilgi tek hat ile taşınır (fazlasına gerek yoktur),
bilgi içeren bu hatta "canlı uç" isimi verilir,
REFERANSI ise GND potansiyelimizdir.

Referans, her şeyin zemini kabul edildiğinden elektriksel birim olarak değersiz (cansız) uç, yani elektriksel değeri 0 uç tur.

Bilgiyi gönderdiğimiz yere (alıcı tarafa)
gonderici taraftan (verici) bir kablo uzatıp,
her ikisinin GND elektriksel değerleri irtibatlanmamışsa hattaki bilgi doğru işlenemez.
(konu dışı olarak da, GND si bağlanmamış sistemlerin zarar görme ihtimali yüksektir, unutulmamalı)

TTL'nin yapısındaki sistemlerde referans (gnd),
her iki tarata da irtibatlı olunca bilgi tek hatla gönderilir,
yapı budur,
yani tek hat ile işlem yapılır.
Buna dengesiz (unbalance) hat denir (GND ye göre dengesiz).

RS485'in, TTL veya benzerlerinden temel farkı da,
digital data bilgisi 2 hat ile gönderilir.
Canlı uç 2 adettir.
Dikkat, bunlardan birisi GND değil, ikiside canlı uç.

Canlı iki ucun aralarında 180 derece faz farkı vardır.
Bu sebeple bu uçların ikisi birden aynı anda LOW olamaz,
veya ikisi birden aynı anda HIGH olamaz.

Birisi LOW ise diğeri muhakkak HIGH dır. Hangisinin LOW veya hangisinin HIGH olduğu durumları aşağıda anlatılacak.

Bu 2 canlı uç vardığı noktada (alıcı tarafında) iki hattın elektriksel farkını alma yoluyla TTL ye, yani tek canlı uca donusturen bir elemana girer. 
MCU vb TTL malzemeler hattaki datanın HIGH mı LOW mu olduğunu donusumden sonra anlayabilir.

Bu ikili hattan gitmesi gereken lojik bilgi o an HIGH ise,
hatların birisi H olur, o uca sıcak uç denir, "Data A", "Data +" gibi isimler ile de anılır.

diğeri 180 derece faz farklıdır demiştik,
yani L olması gerekir, bu uca da soğuk uç denir, "Data B", "Data -" gibi isimlerle de anılır.

Bu iki hattın bir de referansı vardır, üçüncü uç dur, o da yine aynı GND dir,
o ucun da karşıya gönderilmesi gerekir.
Ancak pratikte her iki tarafın (gönderen ve alan tarafın) GND değerleri genelde oynak olmadığından, aralarında voltaj değeri farklılığı da olsa problem çıkmaz.

Yani,
gonderen tarafın (TX'in) GND si ile,
alan tarafın (RX'in) GND si arasında
bir voltmetre ile ölçüm yaptığınızda,
diyelim ki
bir tarafın GND si diğer tarafın GND sinden 4V fazla olsun,
data hattı çift olup birbirlerinin 180 derece faz farklı olmasından dolayı
her iki uç da eşit oranda farklı GND ile karşılaşacağından veya karşılaştırılacağından farkeden bir şey olmayacak ve data doğru elde edilecektir.

Yani şöyle,
2 canlı uç için 2 insan kabul edelim,
2 kişiyiz,
birimizin boyu diğerinden 20cm fazla. Veya tersinden bakarsak 20 cm az.

İkimiz aynı zemimde oldukça her zaman 20 cm fark korunmuş olacak.

Birimiz bir asansore binip gidersek aradaki oran bozulacak,
ikimiz beraber binersek oran yine korunmuş olacak.

Dolayısı ile bize bakanlar hep sen uzunsun veya sen kısasın diye her zaman doğru bildirimde bulunacaklar.

Önemli olan, yani değere dönüşecek olan bizim aramızdaki boy oranı.
x uzunsa değer HIGH, y uzunsa değer LOW gibi.

Yani bu iki hat beraberce gittikleri için
vardıkları noktada farklı bir GND değeri ile karşılaştıklarında
yeni GND yuksek geldi ise ikisi birden zıplayacak,
düşük geldi ise ikisi birden düşük değere atlayacak
ve sorun çıkmayacaktır.

Bu sebeple
GND hattı TX tarafından gönderilir ama kablonun ekranlaması için kullanılır,
RX tarafında o tarafın GND si ile direk olarak irtibatlanmaz, genelde.
Farklı bir potansiyel yoksa direk bağlanabilir de.

İşte bilgiyi, bu tip, çift hat, ters fazda gönderme tipine dengeli (balance) hat denir.

RS485 bu yapıyı kullanır.
2 adet canlı uca sahiptir.

Bu 2 canlı uç bir taraftan diğerine data gönderebildiği gibi tersini de yapabilir,
aynı hat ters yonde data gonderimi de yapabilir,

Şöyleki,

Cihaz 1    Cihaz 2
TX ------>  RX    Data Cihaz 1 den  Cihaz 2 ye akıyor
RX <------  TX    Data Cihaz 2 den  Cihaz 1 ye akıyor

Ancak bu durum aynı anda olamaz, sıra ile olabilir, ya o gönderir ya diğeri.

Datanın her iki tarafa da akabilmesi işlemine duplex denir. Yani çift yönlü çalışabilen.
Fakat çift yönün aynı anda olamaması sebebiyle half (yarım) kelimesi eklenir.

Yani RS485, Half duplex data taşıyabilme kapasitesine sahip, balance bir iletişim hattı katmanı.

----

Peki bu hattan nasıl bir formatta yani protokolde data gönderilebilir, İstediğin formatta data gönderilebilir.

Ancak, hat, aynı anda LOW veya HIGH olarak 1 adet bilgiyi taşıyabileceğinden
paralel data hatları direk olarak gonderilemez,
örneğin SPI format direk olarak gönderilemez,
çünkü bu tip yapılarda DATA, CLK gibi 1 den fazla bilginin aynı anda karşı tarafta olması gerekir,
oysa bizim elimizde tek hat olduğundan çoklu data yapısı aynı anda gönderilemez, bazı donuşumler gerektirir.

O zaman şöyle diyebiliriz,
RS485 hattı seri formatta istenilen herhangi bir protokolu taşıyabilir,
yeterki hız şartları uygun olsun.
Örneğin, belkide en bilindik asenkron seri data 8N1 formatını verebiliriz.

----

Bu sisteme neden asenkron deniyor,
DATA ile CLK beraber gitmediği,
senkronizasyonu gibi bir işlem yapılmadığı için, çünkü tek hat var.

Oysa SPI, I2C gibi sistemlerde DATA CLK gibi uçlar biri diğeri ile senkron olmak zorunda ki, ne gönderildiği diğer taraftan doğru çözülsün.

Peki, bizim senkron veya paralel data hattına çok mu ihtiyacımız var,
tek hat ile asenkron çalışamazmıyız, çalışırız,
belkide sistemlerin %75-80 i belki daha fazlası asenkron seri haberleşirler,
Çünkü taşıma ortamı genelde tek hatta sahip oluyor.


Bir diğer ve belkide en önemli sebep, balanced hatlar gürültüye karşı çok dayanıklıdır.
Buna sebep hattın fiziki yapısı.
TTL bir sinyali alıp onlarca metre bile taşımak oldukça zordur, çoğu zaman imkansızlaşır.
Birkaç on metre taşıyayım deseniz kablonuzu çok iyi ekranlamanız gerekir, hatta meydana gelecek voltaj kayıpları vs çok iyi tolere etmeniz gerekir gibi.

Oysa RS485 yani balance yapı, çoğu zaman,
gereken çok hız değerleri için (genelde sistemlerin 9600 hızda çalıştığını hatırlatayım),
çok ortamda çıplak 2 tel ile taşınabilmekte.

Voltaj değerleri RS485 hattına genelde 5V gibi basılır ama ulaştığı noktada isterse 1V'a düşmüş olsun farketmez.
Çünkü ulaştığı noktada bu sinyali işleyen eleman kaç volt olduğuna bakmaz,
iki hat arasında diferansiyel voltaj durumuna bakar.

Yanlış hatırlamıyorsam elemanların en basiti olan SN75176 +-200mV gibi bir fark voltajına kadar işleyebiliyor.
Yani voltaj düştü, lojik değerimiz olan 5V mahvoldu gibi bir dert yok.
Hattın birisinin diğerine göre 180 derece farkını algılanabilecek değerlere kadar düşebilir, serbesttir.
5V olduğu, 1V olduğu sistem için anlam taşımaz.

Gürültüye dayanıklılık dedik,
bunun ana sebebi, hattın vardığı noktada, uçlar arasındaki voltajlarının farkına bakıldığı için.

Diyelim ki
gürültü binmediği zamanlarda hat vardığı noktaya 1V değerinde ulaşabiliyor.
Hatta herhangi bir noktada gürültü binerse, her iki hatta (her iki canlı uca) beraber bineceği için  sorun genelde yaşanmaz (sınırlar çok aşılmadıkça).

Analog Balanced Hat için gürültü bastırma örneği,




resim yüke





resim yülke

Bunun örneklendirirsek,
anlık olarak 3V değerinde bir parazit yüklendi diyelim,
her iki canlı uç'a da 3V bineceğinden 2 ucun da voltaj değeri o anda beraberce kayar.

Üstte verdiğim örnekteki gibi 2 kişi beraberce zıplar,
aralarındaki fark yine sabit degerde kalmış olur.
Ulaştığı noktadadaki alıcıyı ilgilendiren de bu aralarındaki voltaj, diğer deyişle faz durumudur.

Bununla beraber ekstra önlemlerle gürültü daha da etkisiz hale getirilebilir.
Örneğin kablo yapısının bükülmüş iki hat (twisted pair) şeklinde imali ile sistem çok çok daha rahatlar.
Bu sebeple PC network kabloları (CAT5, 6) bükülmüş ikililer olarak imal edilir.
Her bükülü ikiz bir 485 hattıdır.
Birisi RX, diğeri TX gibi, bükülü ikizlerin sayısı arttırılır.
Ortamına göre çok mecbur kalınırsa ekranlı (shield) yani blendajlı hat da kullanılabilir ki bazı durumlarda bu gerekir. Ama çok çok ender işler için.




gif upload

--------

Tekrar geri donersek,
Elimizde bir ikiz hat var ama bu aslında tek hat,
bununla aynı an için, tek yonlu data gidebiliyor,
paylaşımlı olarak her iki yone de data akışı olabiliyor dedik, yani half duplex yapı.

Bu yön değiştirme işini nasıl yapacağız?

Bu işi RS485/TTL cevirici elemanları (SN75176 gibi) üstlenmiş ve bir pinine vereceğimiz polarite ile hattın yonu değişiyor.
Aslında hattın yonu değişmiyor.

Bu component içinde hem TX driver elemanı, hem RX receiver elemanı var.




çoklu resim yükle

Elemanın içindeki,
hem TX bölümünde, hemde RX bölümünde, hem RS485 katman uçları (Data+ ve Data- ile isimlenen ikiz) hem de TTL katmanı ucu var.

TX driver bolumunun TTL giriş ucundan TTL seviyesinde değer girişi yapılır,
RS485 ikiz uçlarından RS485 seviyesinde çıkış alınır.
Bu RS485 seviyeye karşılık gelenin ne olduğu altta açıklanacak.

RX alıcının ise dışarıdan RS485 seviyesinde datayı aldığı ikiz uç ve bu seviyeyi TTL olarak elde edip çıkışına vereceği bir uca sahiptir.


TX driver elemanı demek şu demektir.,
Driver,
Bir TTL girişe sahip,
yani TTL tek hattan taşındığına göre ona ait giriş de tek pin olur,

Bu TTL girişten verilen H veya L seviyesine göre, balance çıkışına ( 2 hatlı olan RS485 çıkışa ) gereken faz farklı değerleri sürer.

*TTL giriş HIGH ise,
RS485 çıkışının Data + denen ucu HIGH, Data - denen diğer ucuda Data+ dan 180 derece faz farklı olarak LOW olur.

*TTL giriş LOW ise,
RS485 çıkışının Data + denen ucu LOW, Data - denen diğer ucuda Data+ dan 180 derece faz farklı olarak HIGH olur.

Bütün işlemin özeti, yani RS485 katmanı temel olarak bu.

RX receiver elemanı demek ise TX in tersi,
yani,
*RS485 ikizinin Data+ ucu Data- ucundan daha yüksek voltaj değerinde ise, bunun anlamı TTL olarak H demektir, TTL çıkış pinine H verir.

*RS485 ikizinin Data+ ucu Data- ucundan daha alçak voltaj değerinde ise, bunun anlamı TTL olarak L demektir, TTL çıkış pinine L verir.

---
TX ve RX elemanının 1'er TTL ucları var,
TX için TTL ucu giriş pini
(TTL bilgiyi MCU'dan alacak, dolayısıyla bu uç giriş oluyor, RS485'e çevirip çıkış yapacak),
RX için TTL ucu çıkış pini
(RS485 hattan bilgiyi alacak, MCU için TTL ye cevirip çıkış yapacak, dolayısıyla bu uç çıkış oluyor).

Her ikisinin de ayrı ayrı ikizler olmak üzere RS485 tarafı olduğuna göre bunları nasıl birleştireceğiz?
Direk bağlansalar olmaz.
RS485 hat,
eleman tarafından ya data bana geliyor (RX),
ya da data benden gidiyor (TX)
şeklinde görülmek zorunda.

Yani aynı anda
hem TX in RS485 uçları
hem RX in RS485 birbirine bağlanırsa
"TX çıkışı" "RX alışını" bozar.

Çünkü o an için TX TTL girişinde ne varsa ona göre bir çıkış üretip RS485 hatta basacaktır.
RX'in ona bağlı olan RS485 uçları da direk TX'in etkisini alacağından hatta dışarıdan gelen bilgiler karışacak, anlamsız olacaktır.

Bu işi de, hem TX e, hem RX e birer kontrol pinleri ekleyerek çözmüşler.

Bu kontrol pinlerine verilen H veya L değerine göre,
TX ve RX unitesi RS485 tarafındaki ikiz pinini,
entegreyi dış dünyaya bağlayan RS485 giriş/çıkış olarak ayrılmış uçlarından izole eder veya bağlar.

Yani kontrol ucları,
dış dunyadan entegre pinleri vasıtası ile gelen RS485 hattını,
TX driver unitesi veya RX receiver unitesine iritbatlandırır veya irtibatı keser.

Bunu da şu şekilde kolaylaştırarak yapmışlar,

Birisinin kontrol pini HIGH olduğunda entegrenin 485 hattına bağlanıyorsa,
diğerinin kontrol pini LOW olduğunda entegrenin 485 hattına bağlanıyor.
Yani ters polariteli.

Bu bize şu kolaylığı sağlıyor.
Bu iki kontrol pinini birbirine bağlıyoruz, tek kontrol ucu olarak MCU dan kontrol ediyoruz.
Yani yön kontrolu yapmak için  MCU'dan 2 ayrı port ayırmaya gerek kalmıyor.
Pini H yaparsak TX driver RS485 hattına irtibatlanıyor
Pini L yaparsak RX receiver RS485 hattına irtibatlanıyor.




çoklu resim yükle

Böylelikle MCU için
1 kontrol portu
1 data alış pini (75176'nın RX ünitesinin TTL çıkış ucuna bağlanır)
1 data veriş pini (75176'nın TX ünitesinin TTL giriş ucuna bağlanır)

olarak 3 pin ile rahatlıkla bütün işlemler yapılabiliyor.




resim yülke

MCU duruma göre data alış veya verişi aynı pinle de yapabilir,
fakat  data alış verişinde genelde MCU'nun USART donanımı kullanıldığından ve
bu donanımın TX ve RX uçları farklı pinler olduğundan RS485 yolu için, 2 data ve 1 kontrol olmak üzere 3 pin kullanılıyor.

75176 nın pin uçları,
8 - Vcc
5 - GND

6 - Data + ( RS485 hattı, yani dış dunyadaki hat )
7 - Data - ( RS485 hattı, yani dış dunyadaki hat )

2 ve 3 - Kontrol pinler, genelde birleştirilir, gerekirse ayrı ayrı da kontrol edilebilir,
yon kontrolu yoksa yani data hep tek yonde akacaksa, yonune gore direk VCC veya GND ye sabit bağlanır.
Yani MCU ile irtibatlandırmaya gerek yoktur.

1 - RX ünitesinin TTL çıkışı
4 - TX ünitesinin TTLgirrişi

-------
RS485 i daha da pekiştirebilmek için RS232 ile küçük bir karşılaştırma yaparsak




gif upload

RS232 çift yonlu iletişim yaptığından,
ana pinler olarak TX, RX uçlarına sahiptir,
ve bu uçlar unbalance yapıdadır,
yani TTL yapı gibi TX ve RX ayrı birer tek uç dur.

Ancak;
RX ve TX data ucları voltaj seviyeleri,
TTL'deki gibi LOW = 0V, HIGH =+5V değerlerinde değildir

LOW = + Voltaj değerine sahip olduğu durumdur (GND sine göre +)  ve 15V seviyelerine doğru uzanır (standartlara göz atınız)
HIGH = - Voltaj değerine sahip olduğu durumdur (GND sine göre -)  ve 15V seviyelerine doğru uzanır (standartlara göz atınız)

TX veya RX data hatlarının;
LOW kabul edilmesi için en az kaç volt + değerde olması gerektiği (GND sine göre)
HIGH kabul edilmesi için en az kaç volt - değerde olması gerektiği (GND sine göre)
standartlarda belirtilmiştir.

Benzer şekilde, RTS, CTS gibi diğer kontrol pinlerinin de voltaj seviyeleri TX RX data pinleri gibi uygun degerlerde + veya - potansiyelde olması lazımdır.
Bu voltaj değerlerinin TTL donusumunu de MAX232 ve türevleri entegreler yaparak MCU ile bağlantısını sağlar.

Yani RS485 de 75176 ne ise , RS232 de MAX232 odur.
Her iki elemanın da bir MCU ya bakan tarafı vardır ve TTL seviyededir,
Her iki elemanın da dış dünyaya bakan tarafı vardır ve RS485 veya RS232 seviyesindedir.

RS485 için tek hat vardır ve bu hat 2 tellidir (balance),
RS232 de ise çok hat vardır ve her hat tek tellidir (unbalance).

Dış dünya ile bağlantı için RS232 de olan çok hat, niçin RS485 de tek hatta dönüşmekte denirse,
RTS CTS gibi kontrol uçları el sıkışma veya ring dedekt amaçlıdır,
bunların modem kontrol amaçlı olanlarını gözardı edersek geriye el sıkışma uçlarının fonksiyonları kalır. Yani vereceğim, hazırmısın, verdim, aldım, hazırım, hazır değilim gibi donanımsal kontroller eğer gerekiyorsa RS485 için yazılıma gömülür.

Onun temeli de şu şekildedir,
Data hep tek yonlu ise zaten yapacak birşey yok, birisi hep konuşur diğerleri hep dinler.

RS232 de aynı hat üzerinde yanlızca 1 cihaz vardır,
gonderilen data veya kontrol sinyali yanlızca 1 cihazı ilgilendirir.

Oysa RS485 de aynı hat üzerinde 1 den fazla unite olabilir ki genelde öyle olur.
Tek cihaz varsa gönderme ve alma sırası bir yönetici tarafından yapılabilir de yapılmayabilir de.

Gonderecek olan hattı dinler, hatta bir eylem yoksa 75176 yı TX konumuna anahtarlayıp gonderimini yapar ve 75176 yı tekrar RX konumuna cevirir.
Sükunet hali hattaki cihazların RX de beklemesi şeklinde ayarlanmasıdır.

Hat üzerinde 1 den fazla cihaz varsa, her ünite bir kimliğe (ID) sahip olmak zorundadır.

Hattaki data trafiğini yoneten bir yonetici olması elzemdir, yoksa karışıklığın önüne gecmek çok zor olur.

Yapılacak işe göre bir data trafik protokolunu herkes kendisi hazırlayabilir.
Yapılan İşe göre durumlar çok değişken olabilmekle birlikte en basit usul,
yönetici tarafından sırası ile ünitelere konuşma izni vermek şeklinde düşünülebilir.
Üstte söylediğimiz gibi yapılan işe göre bir yönetim şekli oluşturmak en doğru secenektir.

Ana mesele,
Hat sukunet anında iken herkes dinlemede (75176 lar RX konumunda),
Konusacak olan TX olup sonra hemen RX e donmesi.

Şeklinde diyerek,
Hem konuyu biraz uzattım, hem de 485'e yabancı olanlar için özetledim dersem yanlış olmaz sanırım.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

musti463

@OG Hocam, yazınızı baştan sona dikkatle okudum; çok faydalı bilgiler paylaşmışsınız.İnternette bu konuyu araştıran diğer arkadaşlarada yardımcı olacak bir yazı olmuş.Bu yazınızda olduğu gibi ayrıntılı bir şekilde yazılımsal olarak da RS485 protokolünü, mümkünse CCS C komutlarıyla anlatıp bir örnekle noktalarsanız RS485'i araştıran arkadaşların başka kaynaklara yönelmesine gerek kalmayacaktır.Tekrar emeğiniz için teşekkür ederim.
Mustafa Emir SADE

OG

Yapacağınız işi tam anlamadım. PIC LCD de birşeyler gösterecek sanırım.
Ne gösterecek?
Bazı değerler
Bazı uyarı yazıları
Falan dersek eğer,

Yapacağınız işlem,

LCD ye ayrı bir PIC kullanmak,
bu PIC e ana işlem yaptığınız PIC den ilgili verileri gondermek.
Yani şunu yaz, şu değeri goster gibi.
Ana PIC den LCD PIC'ine datayı 8N1 formatında çok yüksek hızda gönderirsiniz. Gönderim anında CRC falan da kullanırsınız ki gönderim datası doğrulansın.

Gönderim hızınız PIC lerin çalışma frekanslarının USART için izin veren en yüksek hızı olabilir. Yani  megabitler seviyesine çıkabilirsiniz, bu seviyeye bile gerek kalmaz.


İşlemi Ana PIC den LCD PIC'ıne tek yonlü iletişim olarak gönderebilirsiniz. Bunun tek sıkıntısı LCD PIC'inin datayı doğru alıp almadığını ANA PIC bilemiyecektir.

Ben doğrulama için şöyle yapardım.
Çift yonlu iletişim kullanırdım.
Çift yonlu RS485 iletişimi için her iki PIC 3 pin harcar.
2 pin usart TX RX uçları, zaten onların hangi pinler olduğu belli.
1 PIN TX-RX yon kontrolu yapabilecek OUTPUT olabilen herhangi bir pin. Bu pin 75176 nın 2 ve 3 nolu pinlerini birleştirip onlara bağlanır. 2 ve 3 nolu pini LOW ise kendi RS485 çeviricisi RX konumundadır, HIGH olursa TX.

Her iki tarafın 75176 larının rss485 giriş çıkış uçları olan 6 ve 7 nolu pinleri birbirine bağlanır.
Buradaki gibi,
https://320volt.com/rs485-balanced-data-transmission-hakkinda-bilgiler/



Başlangıcta 2 pic de kendi RS485 çeviricisini RX yapılandırır.
Ana PIC de gonderi için bir sayac değişkeni yapardım. Buna, Gönderi No içeren değişken diyelim.
Bu değişkeni LCD PIC'ınden geri donus doğrulama değeri olarak kullanacağız.
Ana PIC, ekrana her basılacak yeni bilgi için  değişkenin değerini 1 arttırır.

Gönderim değeri 0 dan başlar diyelim

Gidecek değerler,
* HEADER yani herhangi bir başlatma değeri, bir string dizisi olabilir mesela, Ornek "musti463" şeklinde string dizisi veya rakam dizisi olabilir. Bu ne için, alıcı taraf eğer bunları peşisıra doğru alırsa bilecek ki bana lazım olan esas değerler bunlardan sonra gelenlerdir diye o header ı bekler.  Gelen değerler peşisıra "musti463" değilse sonrası ile ilgilenmez çünkü datanın başını henüz yakalayamamıştır. Diyelim gelen bilgi akıp duruyor ve pic onları takip ediyor, gorduğu peşisıra bilgi  x4789a829musti463  olsun, m gelesiye kadar ilgilenmez, m gelince  hemen ardından gelen u mu diye bakar o da doğru ise hemen ardından s mi gibi gelenler peşisıra doğru ise takipe devam eder ama mesela s den sonra t gelmedi de z geldi tekrar başa m beklemeye başlar. musti463 ü doğru yakaladıysa peşinden gelecekler esas bilgilerdir ve onlarla ilgilenir. Peşinden gelenler,

*Sıra no = 0
*Gönderim paketinde kaç byte gidecek ( yani şimdi gondereceğim değerlerin toplam byte miktarı x adet tutuyor, bu ne için, LCD pic i alım anında bir sayac ile usartın alış kontrol sayısını yapar. Bir Alttaki gidecek byte ların toplam sayısı )
*İs Nedir ( örneğin 1 demek ekrana değer basacağım, 2 demek ekrana yazı yazacağım)
*Giden değerler ( muhtemelen 1 den fazla bilgi)
*Ve tüm Bunların CRC  değeri

Alıcı PIC de de bir SIRA NO sayac değişkeni vardır ve son gelen gecerli datayı hıfz etmiştir. Şimdi yeni gelen de aynı değerde ise onunla ilgilenmez çünkü onu almıştı, onun 1 fazlası olmalı ki yeni gönderim içersin.

Bu şekilde yeni gonderim olduğunu anlarsa diğer bilgileri de sıra ile kaç adet alacaksa alır, crc kontrolu yapıp doğru olduğunu onaylarsa hemen ekrana basar ve hattı dinlemeye doner, geri bildirim verecekse hattaki gonderim durunca veya gonderen pic x numaralı gönderi alındımı gibi bir soru sorar alıcı bu soruyu bekler, soruyu alınca 75176 yı TX e ceker ve alındı bilgisi gonderir, hattı tekrar RX e çeker.

Bunun gibi bir algoritma oluşturabilirsin.

Yapılacak işlemin temel noktası RS485 hattına 2 pic aynı anda TX e gecmemesidir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Erol YILMAZ

Yani 5 mt veri aktarmak için, diferansiyel hatta calisan bir protokol kurman gerekiyor...

Tahmin ediyorum ki bu senin odev-tez zamanini tek başına  kapsar. Sonucta halen böcük iceren bir sisteme sahip olabilirsin. Asil hedefin bir protokol kurmak degil cunku, yapman gereken olcumler hesaplar lcd gosterimi ve kritik bir vaktin var.

Ayni yerde Can-bus kullanabilirsin.
500 kbaud ile sadece 2 pinden bircok problemden arindirilmis
sekilde 8 bytelik paketlerle İletisim saglayabilirsin.

OG

Şöyle bir kontrol ettim. Çok karışık olmuş. Herhalde bir işe yaramamıştır.
Her 2 yazı da iki günlük uykusuzluk ile yazılmıştı.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Ramiz

Alıntı yapılan: OG - 20 Kasım 2013, 20:22:55
Şöyle bir kontrol ettim. Çok karışık olmuş. Herhalde bir işe yaramamıştır.
Her 2 yazı da iki günlük uykusuzluk ile yazılmıştı.

Şuan herşeyi öğrenmesine gerek yok. Öğrensin diyede abartmaya gerek yok.

   TX                                           RX
75176   ------------------------> 75176

Yapması gereken bu. Tx ten seri olarak bilgi basacak, 5 mt ötedeki Rx ten alacak. Şimdilik bunu bilsin yeter. Mezun olunca sistemin nasıl çalıştığını zaten kendisi öğrenir.
Electrical & Electronics Engineering -> Step one