20 - 30 metre mesafeye dijital verinin taşınmasına yardı

Başlatan elektromer, 26 Ekim 2004, 00:19:48

elektromer

Merhaba Arkadaşlar,

Yapmış olduğum bir pic16F876'lı projede data aktarımı ile ilgili problemim var.

CPU ünitem ile kullandığım 7 segment display panosu birbirine 15 - 20 metre mesafede.  Klavye üniteleri (3adet) ise 2 - 3 metre mesafede.

Pano üzerinde 120 adet 74HC595 var. Bu 74HC595 ler 12'şerli gruplar halinde ayrılmış durumda ve Picten çıkan CLOCK, LATCH, CLEAR ve QE uçları önce 74HC245 Line driver entegresine giriyor.

74HC245 çıkışı 1. grup 74HC595 kartına ve aynı zamanda 724HC245'in boşta kalan diğer 4 ucuna giriyor. Onun çıkışıda 2. grup 74HC595 kartına ve 2. 74HC245 entegresine gidiyor.

Bu şekilde 5 Adet 74HC245 ve 10 grup 74HC595 kartı sürülüyor. DATA pini ise 1. grup 74HC595 kartının 1. entegresine doğrudan giriyor, 12 entegreden çıkan DATA ise 2. 74HC595 kartının 1. entegresine bağlı.

AYRICA Pic 16F876 CPU kartına  3 adet klavye ünitesi bağlı. Klavye bilgileri 2 Adet 74HC597 entegresinden, her klavye için bağımsız olarak geliyor. Klavye ünitelerinde 3'er adet 7 segment Display ve bunları süren 3 adette 74HC595 var.

Bütün sistemin CLOCK ve 74HC595'ler için DATA ucları ortak. Panoya CLEAR, QE ve LATCH uçları ayrı gidiyor. Bütün Klavyelerde bulunan 74HC597 lerin SLOAD ve CLEAR uçları (Ayrı ayrı) ortak. Her klavyedeki 74HC595'lerin CLEAR uçları  bağımsız. Her Klavyedeki 74HC595 ve 74HC597 entegrelerin LATCH ucu ortak.

Klavyelerde yaklaşık 2-3 metrelik kablo ile CPU kartına bağlı ve kablolar Blendajlı kablo.


RS485 düşündüm Hız sınırlamasından dolayı vazgeçtim.
Transistörle sürmede sonuç vermedi.
UDN2981 ile sürmeyi denedim sonuç olumsuz.

Önemli Not: Sistem ğüç kaynağı olarak Bilgisayarların ğüç kaynağından yararlandım. 5V 20A olması nedeniyle..

Sanırım sistemi 3 aşağı 5 yukarı kafanızda canlandırabildiniz.

Gelelim Probleme..?
Yukarıda anlattığım sistemi lokal olarak test ettiğinizde, (Kablo bağlantıları max 50 cm civarında. Problemsiz çalışıyor.  Sözünü ettiğim kablo mesafeleri devreye girince sistem saçmalıyor. kararsız çalışıyor..

Çözüm önerilerinizi sabırsızlıkla bekliyorum.

Saygılarımla...
Her şey gönlünüzce olsun..

fsan

Alıntı yapılan: "elektromer"Pano üzerinde 120 adet 74HC595 var..
way bea!! dostum sen ne yaptin böyle yaw  8O  umarim bir caresini bulur calistirirsin projeni..

kabloyu uzatinca baglantilari dogru yaptigindan eminmisin?

kolay gelsin

elektromer

Alıntı yapılan: "fsan"
Alıntı yapılan: "elektromer"Pano üzerinde 120 adet 74HC595 var..
way bea!! dostum sen ne yaptin böyle yaw  8O  umarim bir caresini bulur calistirirsin projeni..

kabloyu uzatinca baglantilari dogru yaptigindan eminmisin?

kolay gelsin
Ne var yani millet nasıl port çoğullanır diye sormuyormuydu ?
Alın size port çoğullama... 960+24+24+24 çıkış... 16+16+16 Giriş... ;)

Merhaba fsan,
3 - 4 gündür saç baş yoluyorsa insan, önce beslemeyi ardından da bağlantıları kontrol ediyor.

Ayrıca Klavye ve panoyu bağlamadan da CPU'ya kabloları takınca da sapıtabiliyor... :(

Fsan'a özel; yakında olsaydın dövmeye gelirdim ama dua et uzaktasın...:)

Saygılarımla...
Her şey gönlünüzce olsun..

fsan

Alıntı yapılan: "elektromer"Ne var yani millet nasıl port çoğullanır diye sormuyormuydu ?
Alın size port çoğullama... 960+24+24+24 çıkış... 16+16+16 Giriş... ;)
iyide hocam sen olayi biraz abartmissin gibime geldi de  :lol:
ayrica  bende ANTALYALI sayilirim, seneye yaza gelince bol bol döversin artik :p ..

neyse..
saka bir yana usta gercekten seni tebrik etmeli, yukarida sorunu baya detayli  anlatmissin yalniz ben yinede fazla birsey anlamadim blok semasi felan yokmu bu mucizenin? :)  

Saygılarımla...

elektromer

Merhaba fsan,
Endüstriyel elektronikte, MULTIPLEX çalışmayı pek güvenli bulmadığım için böyle bir tasarım oldu.

Kafanda bir pano canlandır. 20 satır ve 6 sütun, burdaki her hücrede 7 segment display var ve 74HC595 ile sürülüyor.

DATA 1.satır ve 1.sütunda bulunan 74HC595 entegresine giriyor. ondan çıkan data 2. entegreye, ... , 6. entegreden çıkan data, 2.satır 1. sütundaki entegreye giriyor. 12. entegreden çıkan data, 3.satır 1. sütun daki entegreye........

2 satır ve 6 sütundan oluşan devre 1 kart üzerinde....
Toplam 10 Kart var. Tüm kartlar aynı pano üzerinde..

HC serisi entegreler CMOS yapıda ve MOSFET'lerden oluştuğu için her OUTPUT pini max 16 entegreyi besleyebiliyor. (Bazı modellerde dahada düşük sayıda...

Bu nedenle, Picten gelen CLOCK, LATCH, CLEAR ve QE bilgileri önce hat sürücüsü (Line Driver) olarak kullandığım 74HC245'in (8 bitliktir) 4 bitine giriyor. Buradan çıkan bilgiler. 1. Display kartına ve 74HC245'in boşta kalan diğer 4 bitlik girişine uygulanıyor. 2. 4 bitlik bilgi çıkışıda 2. display kartına ve 2. 74HC245 entegresine gidiyor.

Böylece 5 adet 74 HC245 ile toplam 10 adet display kartı sürülüyor.

KLAVYE ünitelerine gelince;
Her Klavye ünitesinde 3 adet 7 segment display ve bunları süren 3 adet 74HC595,
16 adet tuş bilgiside 2 adet 74HC597 ile alınıyor.

Klavyeye gelen uçlar,
CLOCK  ; 74HC595 ve 74HC597'lerin CLOCK'ları ile ortak.
LATCH   ; 74HC595 ve 74HC597'lerin LATCH'leri ile ortak.
CLEAR1 ; 74HC595'ler için ayrı.
CLEAR2 ; 74HC597'ler için ayrı.
SLOAD  ; Tüm klavyelerdeki 74HC597'ler için ortak.
DATA    ; Tüm 74HC595'ler ile ortak (3 klavye ve pano) (Aynı anda max 4 entegreye giriyor. Diğerleri birbirine bağlı.

VERİ     ; 74HC597'lerden gelen DATA. Her klavyeden bağımsız olarak PIC'e giriyor.

Her halde bunlar yeterli gelir. Gerekirse dahada açıklama yapabilirim.

Saygılarımla...
Her şey gönlünüzce olsun..

demirkan1

merhaba elektromer hocam,

ben bir ara seri olarak 100 küsür 74164 ve 700 küsür 10 mm led ile
sizin bahsettiğinize benzer bir proje ile ugraşmıştım. bendeki sorunda aynı
sizdeki gibiydi bazı yerlerde kendi kafasına göre data bozulıyordu ve bende bilgisayar power suply kullanmıştım.

bendeki sorunu buldum kesinlikle beslemeydi. trafolu 5v 15 amper bir güç kaynagı yaptım sorun çözüldü. ama ben bilgisayar powerı kullanmak istiyordum onuda çözdüm pcb üzerindeki (+) ve (-) hatları kalınlaştırdım
ve aralıklı olarak 4700 mf elektrolitik ve 100nf  kondansatör lehimledim şimdi sorunsuz çalışıyor.

benim tahminim;  cihazdan cekilen amper degişiyorsa bilgisayar powerı kendi amperini tekrar ayarlıyor o esnada data bozuluyor.

saygılar.

salim ALTIN

Merhaba.
Elektromer tebrikler. Bu seviyedeki işi, aslında başarmışsın ama detay kalmış.
Burada 2 adet pic kullanmayı neden düşünmüyorsun.? Diyorsun ki bağlantılar 50 cm olunca problem yok. Ve anladığım kadarıyla gösterge panosu ile klavye kısmı birbirinden 20 metre mesafede olmalı. O zaman klavyeyi ayrı bir pic te düşün gösterge panosunu ise ayrı bir pic. İkisini birbiri ile haberleştir. Bu sana 10 dolar artı maliyet getirir en fazla. Benim cihazımda bu mantık kullanılıyor ve en kötü endüstriyel ortamda 6 metre kullandım hiç problem yok. Daha uzun mesafeyi denemediğim için bilmiyorum. ama vaktim olursa onuda denerim.
İnsanlar 3 guruba ayrılırlar. 1- Birşeyler yapıp üretmeye çalışan küçük bir gurup. 2- Birşeyler yapanları hayranlıkla ve takdirle izleyen büyük bir gurup. 3- Hiç birşeyden haberi olmadan yaşayan devasa yığınlar....

bmutlu

Bilgilerini RS 422 ile ilet taşı çalışır 100 m mesafede ben de displey yaktım (74hc595) ile çalıştı .Tuş takımını da optik olarak tara .

sezgin05

Kablosuz iletimide düşüne bilirsin.433 Mhz alıcı verici modüllerinin hızlı olanları bu işi görür bence.

microcozmoz

demirkan1 arkadaşım gerçi biraz bahsetmiş ama benimde aklıma gelen ; kullandığın entegrelerin şase ve besleme uçları arasına 100nf lık kondansatörler koydunmu?? Belki bir faydası dokunabilir...
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

salim ALTIN

Merhaba


Alıntı yapılan: "elektromer"Merhaba Arkadaşlar,

Yapmış olduğum bir pic16F876'lı projede data aktarımı ile ilgili problemim var.


Arkadaş yazılanlar herhangi bir fikir verdimi bilemiyorum ama problemini çözdüğünde yöntemini bizimle paylaşırsan memnun oluruz. Kolay gelsin.
İnsanlar 3 guruba ayrılırlar. 1- Birşeyler yapıp üretmeye çalışan küçük bir gurup. 2- Birşeyler yapanları hayranlıkla ve takdirle izleyen büyük bir gurup. 3- Hiç birşeyden haberi olmadan yaşayan devasa yığınlar....

z

Bir CLK esliginde gelen datanin dogru sekilde yakalanmasi digital elektronigin belki de en onemli konusudur. Zira sistemin dogru calismasi tamamen buna baglidir.

Bu tur clock sinyallerinin bulundugu digital IC lerin dokumanlarina bakarsaniz verinin yola cikisi ardindan CLK'un ne kadar sonra yola cikmasi gerektigi, yada clk'un ne zaman yok olacagi gibi kritik zamanlamalar kataloglarda bir hayli yer kaplar.

Devrenin bir iki noktasina ezbere kapasite atmak belki sorunu o an icin cozer ama sartlarda kucuk bir degisiklik bile olsa ayni yada bir baska sorunun ortaya cikmasina neden olabilir.

Problemin  cozumu icin oncelikle data ve clk bilgileri arasindaki zamanlamalara dikkat edildimi ona bakmak lazim.

Ornegin bir shift registere islemciden clk ve data yollayarak verilerin registere kayit edilisi ornegine bir goz atalim. (CLK yukselen kenar)

YOLLA:
            CLK pinini L yap.
DONGU:
            Verinin ilgili bitini Data  pinine yukle
            CLK pinini H yap
            CLK pinini L yap
            Butun bitlerin islemi bitmedi  ise DONGU'ye git


Bu program shift register ile islemcinin biribirine yakin olmasi durumunda sorunsuz calisacaktir. Gel gelelim aralarindaki mesafe uzatilir araya uzun kablolar girerse sikintiler baslayacaktir.

Islemcinin 1uS de komut isledigini varsayarsak bu kadar  kisa bir sure de
pespese datanin yuklenmesi, clk cikmasi ardindan inmesi vs olaylar,
uygun secilmemis yada uygun sonlandirilmamis iletim hatlarinda, sinyallerimizini filitrelenmesi, seklininin bozulmasi, crosstalk olaylari,  yansima olaylari olusacak ve verinin dogru aktarilmasi riske girecektir.

Bu tur olaylar  son derece hizli ve hafizali scoplarla incelenebilir.

Sozu daha fazla uzatmadan yukaridaki ornegi asagidaki gibi yaparsak pek cok problemin yok olacagini goreceksiniz.

YOLLA:
             CLK pinini L yap.
             BEKLE
DONGU:
             Verinin ilgili bitini Data  pinine yukle
             BEKLE
             CLK pinini H yap
             BEKLE
             CLK pinini L yap
             BEKLE
             Butun bitlerin islemi bitmedi  ise DONGU'ye git


Burada BEKLE suresini deneysel olarak tespit edebilirsiniz. 10uS civarinda secebilirsiniz.

Kapasitif etkilerden kurtulmak icin alici tarafini 50-100 Ohm gibi direncle yukleyin. Verici taraftan 100 Ohm direncde yeterli seviyede voltaj olusacak sekilde sinyal basin gerekiyorsa  araya surucu koyun.
Hatta iletilen sinyalleri RS232 seviyesinde yollayin. (+/- 12v)

Daha da iyisi balansli hat ile verinin kendini complementini de yollayin ve alicida bu iki veri ile veriyi ve clk'u cozun.

Bu konulara dikkat ederseniz eminim ki sorunu cozeceksiniz.

Genede en iyi cozum uzaktaki cihazi uzak bir noktadan dogrudan denetlemek yerine, her iki tarafi da akilli elemanlarla danatip, iki elemani protokol dahilinde konusturmak ve gorev paylasimi yapmaktir. Adi gecen protokol verilerin dogru gidip gitmediginin de denetlenmesini saglayacagindan bahsi gecen sorunlardan tamamiyla kurtulunmus olacaktir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

elektromer

Merhaba arkadaşlar,
Konu ile ilgilenip, kafa yoran, yorum yapan tüm arkadaşlara içtenlikle teşekkürlerimi sunarım.

Ek bilgiler...;
- Tüm entegrelerin burnunun dibinde multilayer diye tanımlanan 100nF kondansatörler mevcut.
- Projenin Kristal frekansı 3.2768 MHz.

Sizlerden gelen bilgiler ve kendi deneyimlerimin sonucunda, Klavye ünitelerine bağımsız işlemciler ve panoyada 1 işlemci olmak üzere 3 işlemci kullanmaya ve bunları RS485 ile haberleştirmeye karar verdim.

Tekrar hepinize çok teşekkür ederim.
Saygılarımla..
Her şey gönlünüzce olsun..

Nilesh23

yaw arkadaşlar rs485 hattında çift adrese sahip 2 veya daha fazla cihaz varsa bunları nasıl ayıklayabiliriz.bir algoritma önerisi verebilecek olan varmı?

fsan

merhaba Nilesh23,
"çift adrese sahip" derken neyi kastettin anlamadim ama belki bu resimler sana bir fikir verir ?






Include "modedefs.bas"  
symbol SO = PORTC.6
symbol SI = PORTC.7
symbol RT = PORTE.0     
B0 var byte  	
TRISB = $00

Main:   
low RT
serin2 SI,84,20,Main,[wait ("1"),B0] 
high RT
pause 50
serout SO,T9600,["1"]     
PORTB = B0      
goto Main
end


pic1:  
serin2 SI,84,20,Main,[wait ("1"),B0]

pic2:
serin2 SI,84,20,Main,[wait ("2"),B0]

pic3:
serin2 SI,84,20,Main,[wait ("3"),B0]

pic4:
..

serin2 komutlarini pic'lere ayri ayri yerlestir.  
yukaridaki wait("x") yazan yerlere dikkat edersen cözüm burada.. yalniz yukaridaki kod sadece bir örnek bu haliyle fazla ise yaramaz bazi degisiklikler yapmak lazim



http://www.mikroelektronika.co.yu/english/product/books/picbasicbook/07.htm#7.5%20RS-485

kolay gelsin