I2C uzun mesafe devresi yaptım fakat data kaybı yaşıyorum?

Başlatan clonex, 01 Haziran 2018, 09:18:26

clonex

Arkadaşlar I2C uzun mesafe de data kaybı yaşıyorum, bazen okuyabiliyorum bazen okuyamıyorum. Aşağıdaki gibi slave boardlarım var birbirini eklemeli. Ama tek board varken 20m ye kadar sorunsuz çalışıyordu. Ne zaman birbribine bağladım data kaybı yaşıyorum. Nedeni ne olabililir ?


Birde analog voltaj değeri sürekli farklı çıkıyor. Bugün farklı yarın farklı. Deli oldum artık. Invertor kullanıyorum invertor devrede bugün 4v iken yarın 3.8v oluyor. Öbür gün 4.2 oluyor.



foseydon

1. hocam iletkenin direnci hava sıcaklığına göre bile değişkenlik gösterir, elbette başka fatörlerde var. o yüzden günden güne 0.2V kayıp yaşaman gayet normal.

2. I2C = interitegrated circuit communication protocol, yani iki entegrenin haberleşmesi için tasarlanmış. iki entegre arasındaki mesafe ise PCB'nin bir ucundan bir ucuna olan mesafe kadar olur. ne kadar olabileceğiniz sen düşün. sen aslında 20m mesafeye veri aktarmak için tasarlanmamış bir protokol kullandığın için sıkıntı yapıyorsun. çünkü adam tasarlarken bunun PCB üzerinde olacağını düşünerek tasarım yapmış. sen bunu 20 metrede kullanmaya çalıştığın zaman aslında hesap edilmeyen bir sürü etkeni sisteme sokmuş oluyorsun. misal kablo kaybı, manyetik girişim gibi. buna rağmen çalışır mı? çalışır. ama yapılmalı mı, bence zorunluluk yoksa yapılmamalı.

3. nasıl yaparsın? voltaj seviyesini bir tarafta yükseltip diyer tarafta düşüreceksin, bu sayede kablo kaybı, manyetik girişim gibi dış etkenlerin etkisi oransal olarak azalacak. forumda bakarsan bu konuda sorulmuş 1-2 soru var, ve oralarda uygun çözümlerde verilmiş. hatta texas instruments'ın 100 metreye kadar taşımak için yazılmış bir dökümanı vardı.

clonex

Alıntı yapılan: foseydon - 01 Haziran 2018, 10:19:431. hocam iletkenin direnci hava sıcaklığına göre bile değişkenlik gösterir, elbette başka fatörlerde var. o yüzden günden güne 0.2V kayıp yaşaman gayet normal.

2. I2C = interitegrated circuit communication protocol, yani iki entegrenin haberleşmesi için tasarlanmış. iki entegre arasındaki mesafe ise PCB'nin bir ucundan bir ucuna olan mesafe kadar olur. ne kadar olabileceğiniz sen düşün. sen aslında 20m mesafeye veri aktarmak için tasarlanmamış bir protokol kullandığın için sıkıntı yapıyorsun. çünkü adam tasarlarken bunun PCB üzerinde olacağını düşünerek tasarım yapmış. sen bunu 20 metrede kullanmaya çalıştığın zaman aslında hesap edilmeyen bir sürü etkeni sisteme sokmuş oluyorsun. misal kablo kaybı, manyetik girişim gibi. buna rağmen çalışır mı? çalışır. ama yapılmalı mı, bence zorunluluk yoksa yapılmamalı.

3. nasıl yaparsın? voltaj seviyesini bir tarafta yükseltip diyer tarafta düşüreceksin, bu sayede kablo kaybı, manyetik girişim gibi dış etkenlerin etkisi oransal olarak azalacak. forumda bakarsan bu konuda sorulmuş 1-2 soru var, ve oralarda uygun çözümlerde verilmiş. hatta texas instruments'ın 100 metreye kadar taşımak için yazılmış bir dökümanı vardı.

Hocam cevapların için teşekkürler, Çok haklısın standardın dışında işlem yapıyorum. Ama çözüm böyle  gerektiriyordu. I2C kullanmak zorundaydım. Neyse ben bunun mesafe testleri yaptım çatır çatır çalışıyordu. Hiçbir aksama olmadan. 18m kalo ile test ettim. Sorun yoktu. Sonra bu kabloları kestim (bu arada alarm kablosu kullanıyorum 6x0.22 kablolardan sorunda olmadı data kaybıda olmadı. Ben devreyi çoğalttım. aralara ekledim 3'er metrelik. DATA görüyordum. Ama sonra dataları belli bir zaman sonra görmemeye başladım. Kayıp oluyordu. Sanki bağlantı kopuyordu.

Daha önce elektronikle hiç böyle uğraşmadım, çıkamadım işin içinden artık.

Teşekkürler tekrardan.

ipek

P82B715 gibi bir çip bulabilirseniz,oldukça stabil çalışır..

clonex

Alıntı yapılan: ipek - 01 Haziran 2018, 12:32:49P82B715 gibi bir çip bulabilirseniz,oldukça stabil çalışır..

Merhaba hocam, sanırım dikkatinizden kaçtı. Çizimlerime bakarsanız kullandığımı görebilirsiniz, ona rağmen stabil çalışmıyor :(

ipek


F.T

R3 R4 direnç değerlerini oynamanızın mesafe üzerinde  faydası olabilirmi?
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

clonex

Alıntı yapılan: F.T - 02 Haziran 2018, 07:50:22R3 R4 direnç değerlerini oynamanızın mesafe üzerinde  faydası olabilirmi?

Hocam, değerler tek slave board varken 20m ye kadar sorunsuz çalışıyordu. Sonra o 20 metre kabloyu kestim 2-3 metre aralıklarla o devreleri ekledim. Tek yaptığım şey buydu. Ama ona rağmen data kaybı oldu. Sonra g ittim toplamdaki kabloyu 12m ye çektim. yine problem devam ediyordu. Neyi atlıyorum anlayamıyorum artık. Dirençlerle oynamaktansa mesafeyi kıstım sorun hala devam ediyor.

Erol YILMAZ

@clonex

Skobun varsa problem çıkan mesafede  çalışırken, data ve clock durumunu gösteren bir foto koyabilir misin?

clonex

Hocam skop ne oluyor ? O değerlerini nasıl ölçeriz ? bilmiyorum çünkü.

Erol YILMAZ

Asagidaki gibi bir cihaz,
Elektrik sinyallerini görebiliyorsun...


clonex

Alıntı yapılan: Allegro - 02 Haziran 2018, 09:35:27Asagidaki gibi bir cihaz,
Elektrik sinyallerini görebiliyorsun...

(Resim gizlendi görmek için tıklayın.)

Tamam hocam ben bunu osiloskop olarak biliyordum. Osiloskopla bi kontrol edeyim.

foseydon

kahkaha attım istemsiz, çok yaşayın emi.

hocam, bu kadar uğraşacağına RS232 olarak çık devreden işin daha kolay olur. bir tane işlemcili ufak kart tasarla olmadı, 1 I2C 1 USART olsa yeterli. I2C'deki bilgiyi USART üzerinden gönder, karşıda geri I2C'ye çevir. Şu uğraşından daha kolay ve temiz çözüm olur. Sen şu anda hatayı çözsen bile, yarın o cihaz sahaya giderse başka sorunlar gelir karşına muhtemelen.

muhendisbey

Foseydon'a katılıyorum. Heberleşmeleri amacı dışında kullanmak 2 kat efor sarf ettirip, gereksiz sorunlarla uğraşmanıza neden olur. En fazla I2C'nin yanında mini bir mcu kullansaydınız problem kalmazdı. Bu stabilizasyon problemleriniz I2C için konuşursak kullandığınız alarm kablosu nedir bilmiyorum ama girişim sebebiyle bağlantınız sürekli olarak kopacaktır. Yani fabrikada kullanırsanız fabrikadaki çalışan makineler sisteminizi kilitler, evde ofiste kullanacaksanız flüoresan lambalar, tasarruflu lambalar, mikrodalga fırınlar, wifi gibi kaynaklar gene bağlantınızı koparacak ya da hatalı veri okumanıza neden olacaktır. Zırhlı yani koaksiyel kablo kullanıp, dış iletkeni fiziksel olarak toprağa bağlarsanız bir nebze probleminiz azalır ama tümüyle yok olur mu bilemem.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

clonex

Alıntı yapılan: foseydon - 02 Haziran 2018, 11:40:29kahkaha attım istemsiz, çok yaşayın emi.

hocam, bu kadar uğraşacağına RS232 olarak çık devreden işin daha kolay olur. bir tane işlemcili ufak kart tasarla olmadı, 1 I2C 1 USART olsa yeterli. I2C'deki bilgiyi USART üzerinden gönder, karşıda geri I2C'ye çevir. Şu uğraşından daha kolay ve temiz çözüm olur. Sen şu anda hatayı çözsen bile, yarın o cihaz sahaya giderse başka sorunlar gelir karşına muhtemelen.

Ne yapayım hocam, ilk defa bu işlerle uğraşıyorum.