Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => Endüstriyel Elektronik => Konuyu başlatan: HAKKITANIR - 28 Kasım 2017, 12:53:30

Başlık: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 28 Kasım 2017, 12:53:30
Pic Mikro işlemci ile bir çipi, I2C haberleştirmeli, aralarında yarım metre uzunluğunda kablo ile rahatça kullanabiliyoruz.
Haberleşme frekansını 100 ve 400 kHz. her ikisini de kullanabiliyoruz.
Mikroişlemci ile diğer çip arasındaki mesafeyi 1 metre uzattığımızda sorun oluşmaya başlıyor.
Bu sorun her iki 100 ve 400 kHz. haberleşme frekansı içinde oluyor.
Bunu net olarak gözlemleyebiliyoruz. Kısa mesafeli kablo ile sorun yok. Kablo uzatılınca sorunlar başlıyor.
Çözüm için ne tavsiye edersiniz.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: Elektroemre - 28 Kasım 2017, 13:01:12
https://www.nxp.com/docs/en/data-sheet/P82B96.pdf (https://www.nxp.com/docs/en/data-sheet/P82B96.pdf)
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: makdeniz - 28 Kasım 2017, 13:03:27
Merhaba aşağıdaki pdf'i incelerseniz sorularınızın cevaplarını bulabilirsiniz.

Hızlı olan cevaplar :)


https://www.nxp.com/docs/en/data-sheet/P82B715.pdf

Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: JOKERAS - 28 Kasım 2017, 17:54:48
Bu sorun Data-Clock hatlarındaki Salınımdan kaynaklı.I2C yapısı uzun mesafeler için uygun değil.
Durumu biraz düzeltmek için R-Pull-Up dirençlerinin değerlerini düşürün.Mesela R-Pull-Up 10K ise 4.7k yapıp deneyin.
Kablo kalitesi de önemli.
Mesafe uzadıkça hızı düşürmek gerekir.


Yazdığınız Kod nasıldır bilmiyorum.Blokeli kod yazarsanız hatasız veri tranceiveri yaparsınız.
I2C sisteminde kontrol daima Masterde'dır.Slave cihaz kendi başına hiç bir iş yapamaz.
Eğerki Master,Slave'e gönderdiği komutları belli bir zaman ve kurala göre gönderir,ve belli bir zaman ve kurallara
göre almak icab ederse yazılımı o'na göre konfigre etmek gerekir.




Mesela Master Slave gönderdiği her Byte karşılığında Slave'in Ack cevabını Almak için bir Bloke döngüsü kurarsanız.
Ack gelene kadar sorgu atmış olursunuz.
Ack gelmişse Master'in gönderdiği Data düzgün gitmiş demektir vs.
Slave'in gönderdiklerini Almak içinde aynı tip bir algoritma kurmak gerekir.
Slave'in gönderdiği Data doğrumu?Doğruluğunu nasıl anlayacağız?
İşin Belirsiz olan kısmı bu.Slave kendinden istenen veriyi doğru gönderir fakat veri,veri yolunda
bozgun yemişse ne yapmak gerekir?


Clock hattını dinlemek,Clock'un zamanında High-Low olduğunu kontrol etmek
eğerki bir problem varsa Clock'u Strech yapmak(Lastik bigi Uzatmak) düzelene kadar beklemek. 








Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: OptimusPrime - 28 Kasım 2017, 23:11:29
3 metreye kadar uzatmisligim var :)
kablo cok oncemli burda fakat haberlesme hizini dusurmek, her iki tarafa olabildiginde kucuk pull up direcleri eklemek, her iki tarafta 100pf lik kond kullanmak ise yariyor. bunun disinda tabi bu isi uygun guzel entegrelerde var. bahsettigim entegresiz cozum. fluorescent lambaya kabloyu sararak denemistim ki bu sisteme gurultu sokmanin en kolay yontemidir.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: baran123 - 29 Kasım 2017, 01:44:40
Şu dökümanın son kısımları belki fayda sağlar. Edit : Döküman"lar" diyelim.
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
https://www.nxp.com/docs/en/brochure/pca9600_daughter_card.pdf
https://www.nxp.com/docs/en/application-note/AN10658.pdf

Ama I2C harici olarak taşınabilecek yapıya uygun olmayan bir protokol. SPI olsa gene bir nebze fakat konu I2C !
Tüyden etkilenen mız mız bir protokol :)
PCB üzerinde kalması çok daha iyi.
Kartlar arası farklı protokoller ile taşıma yapmak çok daha mantıklı.


Örneğin
I2C->RS485 --------------- RS485->I2C
gibi

Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: hwdesigner - 30 Kasım 2017, 16:49:59
TXS0102DCUR Buna da bakabilirsiniz hocam.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 14:10:22
cevaplarınız için teşekkür ederim.

P82B96 ile çok güzel bir şekilde uzay montaj bağlantılı deneme yaptım, aynı sorun devam ediyor.
çok bağlantılı bir çip olsa pcb çizmek öyle denemek şart diyecem ama öyle sade bir çip.
pull up dirençlerinin değerini düşürmekle de sorun çözülmüyor.
100 pF. kondansatör nasıl kullanılıyor. SDA SCL hatlarından ayrı ayrı toprağa mı bağlanıyor kondansatörler.
kablo 4X0,22 mm. çok telli  blendajlı kabloydu.
ACK cevaplaması beklemesi otomatik var programda. strech uzatma olayını bilmiyorum. bunu program normalde yapmıyor sanıyorum.
haberleşme hızı 100 - 400 kHz. her ikisiyle de denense aynı netice alınıyor. normalde 100 kHz. le çalışıyoruz. denemeler açısından 400 'ü denedik.
kısa kabloyla harika çalışıyor en ufak sıkıntı yok. uzun kablolu ve uzun kablo + P82B96 ile aynı sorun devam ediyor.
TXS0102DCUR bundan bir şey anlamadım.
baştan direkt RS485 e girmek zorunda kalmasaydık güzel olurdu.
kısa kablonun çalışmasını sağlasak yeterli olacak bizim için.
çözüm için başka ne yapılabilir.



Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: JOKERAS - 04 Aralık 2017, 14:25:12
Kabloyu Çok telli değil,kaliteli tek Damar kablo kullanın.


Mesela şu elektrik tesistalarında kullanılan 1, 1.5'luk kablolar gibi.
R-Pullup'ların değerini ve haberleşme hızını biraz daha düşürüp deneyin.


Diğer bir yöntem R-Pullup dirençlerini homojen şekilde hatta dağıtın.
Mesela İdeal R-Pullup dirençleri 10K ise Kobloların En baş tarafına 30K, Kobloların Orta Kısmına 30K, Kabloların Son kısmına 30K ideal direnç değerini Hatlara homojen edederek dağıtıp deneyin.










Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: Elektroemre - 04 Aralık 2017, 14:34:31
Alıntı yapılan: HAKKITANIR - 04 Aralık 2017, 14:10:22
cevaplarınız için teşekkür ederim.

P82B96 ile çok güzel bir şekilde uzay montaj bağlantılı deneme yaptım, aynı sorun devam ediyor.
çok bağlantılı bir çip olsa pcb çizmek öyle denemek şart diyecem ama öyle sade bir çip.
pull up dirençlerinin değerini düşürmekle de sorun çözülmüyor.
100 pF. kondansatör nasıl kullanılıyor. SDA SCL hatlarından ayrı ayrı toprağa mı bağlanıyor kondansatörler.
kablo 4X0,22 mm. çok telli  blendajlı kabloydu.
ACK cevaplaması beklemesi otomatik var programda. strech uzatma olayını bilmiyorum. bunu program normalde yapmıyor sanıyorum.
haberleşme hızı 100 - 400 kHz. her ikisiyle de denense aynı netice alınıyor. normalde 100 kHz. le çalışıyoruz. denemeler açısından 400 'ü denedik.
kısa kabloyla harika çalışıyor en ufak sıkıntı yok. uzun kablolu ve uzun kablo + P82B96 ile aynı sorun devam ediyor.
TXS0102DCUR bundan bir şey anlamadım.
baştan direkt RS485 e girmek zorunda kalmasaydık güzel olurdu.
kısa kablonun çalışmasını sağlasak yeterli olacak bizim için.
çözüm için başka ne yapılabilir.

Hocam devrelerin toprakları birbirine bağlı mı?
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: Cemre. - 04 Aralık 2017, 14:50:27
Alıntı yapılan: JOKERAS - 04 Aralık 2017, 14:25:12
Kabloyu Çok telli değil,kaliteli tek Damar kablo kullanın.


Mesela şu elektrik tesistalarında kullanılan 1, 1.5'luk kablolar gibi.
R-Pullup'ların değerini ve haberleşme hızını biraz daha düşürüp deneyin.


Diğer bir yöntem R-Pullup dirençlerini homojen şekilde hatta dağıtın.
Mesela İdeal R-Pullup dirençleri 10K ise Kobloların En baş tarafına 30K, Kobloların Orta Kısmına 30K, Kabloların Son kısmına 30K ideal direnç değerini Hatlara homojen edederek dağıtıp deneyin.

Bu frekanslarda deri etkisini azaltmak adına çok damarlı kablo kullanmak daha mantıklı değil mi? Gerçi zaten I2C kablo ile taşınmak üzere tasarlanmış bir iletişim altyapısı değil ki... Kart üzeri çevre birimler ile haberleşmek üzere dizayn edilmiş bir protokol ile bu mesafelere çıkmaya çalışmak çok anlamsız. Laboratuvar ortamında sorun çıkartmasa bile yarın sahada sorun çıkartacak bir dizayn.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 15:00:54
hızlı, sert, keskin ve çok kıvrılan hareketleri olmasa da kablo bir miktar sürekli nazik hareket halinde.
bu yüzden tek damarlı kablo kullanımı bir yere kadar sınırlı olur diyebilirim. 1, 1,5 mm2 kesitli elektrik tesisatlarındaki NYA tek kalın damarlı kablodan kullanamayız, ama Ethernet kablosu gibi olan daha ince - kibar tek damarlı kabloların, aynı yekpare gövdede 4 tel hatlısı varsa kullanılabilir diye düşünüyorum. yoksa normal Ethernet 8 telli kablonun blendajsız olanın dan da kullanılabilir galiba.

kablonun blendajlı ve blendajın toprağa bağlanması konusu önemlimi?

kablonun ortasından bağlantı yapma şansımız yok. kablonun her iki ucunda piyasada mayk diye geçen 4-5 pinli soketler var bu soketlerle kablo I2C haberleşmesi yapan çiplere veya P82B96 lara bağlanıyor. kablonun uçlarının soketle bağlantı yapıldığı devrelerde istediğimiz değişiklikleri yapabiliriz. dirençlerle bu kısımda oynayabiliriz.
pull-up Dirençleri 4k7 ile 390R. arası değerlerde denedim. hatta çiplerin bozulmadıklarından emin olmakla birlik de 100R bile denendi.

haberleşme hızını 100 kHz. altına düşüremiyoruz diye biliyorum. iki seçenek var 100 ve 400 kHz.

evet devrelerin toprakları ortak. P82B96 kullanılınca topraklar ayrılamaz sanıyorum, çünkü giriş çıkış data hatları için ortak tek beslemesi var. tabiki işin içine ilave başka çipler kullanılmıyorsa beslemeler ayrılamaz sanıyorum.

4 hatlı kablodan ikisi +5V./0V. olarak ortak beslemelerin. hattı diğer ikisi SCL / SDA hatları olarak denemeler yaptım.

aslında sorun basit gibi duruyor ama öyle değilmiş.
kablo kısa devre çalışması harika, kablo uzun devre çalışması ikide bir bozulup duruyor.

uzay montajdan kaynaklı bozukluk olabilir mi acaba? yeni pcb çizip denemeleri onunla yapmak mı gerekir ? çok güzel uzay montaj bağlantısı yaptığıma da eminim aslında.
böyle bir sorununu P82B96 ile gideren var mı? bu çiple de işin çözülebildiğinden bir miktar şüphelerim var aslında.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: JOKERAS - 04 Aralık 2017, 15:09:57
Cemre usta, Doğru söylüyorsunuz, I2C uzun mesafeler için uygun değil.Bunu demiştik.
Ama arkadaş illaki uzun mesafe olsun diyor.Durumu Zorluyoruz:)
Atölyede çalışırsa sahada da çalışacağını sanıyorum.



HAKKITANIR,


Evet, Tek damar Ethernet kablosu da bir nevi çözüm olabilir.Tek damar olması Çok önemli!


Koblonun Blendajının her iki tarafını tabiki Toprağa bağlayın.Dış gürültülere karşı Ekranlama yapmış olursunuz.


390R, 100R işi düzeltmek yerine hepten berbat hale sokar.O kadar da değil!


R-Pullup dirençlerini Hatta Homojen dağıtın söylemimi test etmek için yapıp durumu gözlemleyin.
Sonra çare üretilir.
Bir deneyin bakalım ne oluyor.







Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 15:12:32
Alıntı yapılan: Cemre. - 04 Aralık 2017, 14:50:27
Bu frekanslarda deri etkisini azaltmak adına çok damarlı kablo kullanmak daha mantıklı değil mi? Gerçi zaten I2C kablo ile taşınmak üzere tasarlanmış bir iletişim altyapısı değil ki... Kart üzeri çevre birimler ile haberleşmek üzere dizayn edilmiş bir protokol ile bu mesafelere çıkmaya çalışmak çok anlamsız. Laboratuvar ortamında sorun çıkartmasa bile yarın sahada sorun çıkartacak bir dizayn.

buna katılıyorum işte. P82B96 kablo boyunu uzatabilir olarak görülüyor ama marifetini, alameti farikasını biz göremedik henüz. buna pcb çizsem de görülmeyecek gibi duruyor.

işten en kolay benim bilgimi aşmayacak şekilde nasıl çıkarım diye çabalıyorum. sorun tamamen kablo boyu ile alakalı. şimdi biz bu I2C yi kullanmak mecburiyetindeyiz. bunu RS485 veya farklı bir şeye otomatik dönüştüren hazır üretim bir çip yoksa işimiz zor olur.

ne tavsiye edersiniz ne yapabiliriz?
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 15:31:39
bir iki yeri daha aydınlatabilirsek denemeyi yapıp geri dönerim.
daha masada kablo uzun olunca çalışmıyor devre, devre bir çalışsın masada - endüstride bu kısımların testlerini de yaparım.

Devre şöyle mi dir?

P82B96 yı kullanıyoruz devrede, P82B96 çipleri arası 1,5 metre Ethernet kablosu ile bağlanacak, kablo 8 tek damarlı tel hatlı ve 4 teli kullanılacak. P82B96 nın bu kısımlarındaki 2 şer adet pull-up dirençleri çiplerin yanında yani kablonun başında ve sonunda bağlı toplam 4 pull-up direnç var bu kısımda. kablonun her iki tarafındaki P82B96 ile I2C haberleşmesi yapacak çiplerin bağlı olduğu kısımlardada 2 şer adet pull-up dirençleri bağlı olacak. bu kısımda I2C haberleşmesi yapacak çiplerle P82B96 arası mesafeler 10 cm. gibi pcb üzeri yollarla olacak. Ethernet kablonun içindeki tüm iletkenlerini kaplayan tek bir dış blendajı olması yeterli değil mi? bu blendajlar kablonun her iki tarafından toprağa girilecek.

bu bağlantı ile devreyi tekrar kursak, ilave edilmesi gereken bir şey olur mu?

Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: devrecii - 04 Aralık 2017, 15:39:38
Burgulu tel kullanmak gerekir sda ve scl birbirinden ayrılmalı.Yani asla ikisini burgulamamak gerekir herbirisini 3.3v le burgulayın ve bir direnç koyun. Hedef bölgede olsun direnç.  (ilk mesaj spi göre idi değiştirdim).




(https://s33.postimg.cc/8dauxwtov/sdfsdf.jpg) (https://postimg.cc/image/bk5ehje4r/)
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: Elektroemre - 04 Aralık 2017, 15:43:28
@HAKKITANIR hocam bir yerlerde yanlış yapıyor olmalısınız. P82B96 ile endüstriyel ortamda 5 metreden 100KHz ile sorunsuz haberleşiyoruz.
Besleme ve hat sinyallerini osiloskopla detaylı incelemek gerekli. En iyi yargıya bu şekilde varılabilir.
Eğer step-down entegresi kullanıyorsanız çıkışna LDO atıp P82B96'yı besleyin.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: JOKERAS - 04 Aralık 2017, 15:46:05

Şöyle demek istedim.

(https://i.hizliresim.com/GyM70N.gif) (https://hizliresim.com/GyM70N)
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 15:58:51
son mesajlar doğrultusunda bende ayrıntılı bir şema çizip onayınıza göndereceğim.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 16:02:47
Alıntı yapılan: Elektroemre - 04 Aralık 2017, 15:43:28
@HAKKITANIR hocam bir yerlerde yanlış yapıyor olmalısınız. P82B96 ile endüstriyel ortamda 5 metreden 100KHz ile sorunsuz haberleşiyoruz.
Besleme ve hat sinyallerini osiloskopla detaylı incelemek gerekli. En iyi yargıya bu şekilde varılabilir.
Eğer step-down entegresi kullanıyorsanız çıkışna LDO atıp P82B96'yı besleyin.

kablo nasıl bir şey sorabilir miyim. kaç ayrı iletken hattı vardı. iletkenleri tek damarlı çok damarlı? nasıl bir şey di. step-down LDO bunları böyle yazınca kafamda algılayamadım bu kısımları da bir inceleyip döneyim.   
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 04 Aralık 2017, 16:06:03
Alıntı yapılan: iboibo - 04 Aralık 2017, 15:39:38
Burgulu tel kullanmak gerekir sda ve scl birbirinden ayrılmalı.Yani asla ikisini burgulamamak gerekir herbirisini 3.3v le burgulayın ve bir direnç koyun. Hedef bölgede olsun direnç.  (ilk mesaj spi göre idi değiştirdim).




(https://s33.postimg.cc/8dauxwtov/sdfsdf.jpg) (https://postimg.cc/image/bk5ehje4r/)

denemeler sırasında kablo bağlantılarında değişiklikle bu kısmıda deneyebiliriz sanıyorum tamamen kablolar arası bağlantı gruplaması oluyor bu kısım anladığım kadarıyla diğer iki birbirine bükük iltkenlede 0V. besleme taşınacak bu durumda.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: devrecii - 04 Aralık 2017, 16:11:11
Resmi değiştirdim ilk negatif ile idi Spi için,  iic de open   drain olduğu için 3.3v ile burgulu yapın.

Bir telde eletron ileri doğru giderken diğer telde tersi yönünde gitmeli ki induktansı düşürsün. Bu nedenle eternet, hdmi kablolarda (-) (+) yönlü kablolar
birbirine sarılmıştır indukatnsı azaltmak için.

Telleri toplayıp en dışına 0V sarasanız çok güzel olur (koaksiyel kablo gibi).

(https://s33.postimg.cc/r6wnv8kaj/sdfsdf.jpg) (https://postimg.cc/image/r6wnv8kaj/)
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: OptimusPrime - 05 Aralık 2017, 03:37:50
Hdmi ve Ethernet de sinyal diferansiyel. Bu yaptığının hiçbir faydası yok aksine kendi kendine gürültü oluşturuyorsun

@HAKKITANIR
Scope görüntüleri lazım. Ayrıca 100khz uzun kabloda hayal. Onu unut. Tek hanelere in.
Başlık: Ynt: I2C Haberleşme Hattını Nasıl Uzatırız?
Gönderen: HAKKITANIR - 09 Aralık 2017, 12:25:31
100 kHz. altına haberleşme hızı olarak inemiyoruz.
minimum 100 kHz. , maksimum 400 kHz. haberleşme hızı seçimleri.
kablo nasıl ve ne kullanılırsa kullanılsın, 1,5 metre uzunluğunda kablo kullanıldıktan sonra iş olmuyor bizim devremizde.

Alıntı yapılan: Elektroemre - 04 Aralık 2017, 15:43:28
@HAKKITANIR hocam bir yerlerde yanlış yapıyor olmalısınız. P82B96 ile endüstriyel ortamda 5 metreden 100KHz ile sorunsuz haberleşiyoruz.
Besleme ve hat sinyallerini osiloskopla detaylı incelemek gerekli. En iyi yargıya bu şekilde varılabilir.
Eğer step-down entegresi kullanıyorsanız çıkışna LDO atıp P82B96'yı besleyin.

P82B96 ların ve I2C haberleşmesi yapan çiplerin ortak beslemesi şu şekilde;
DC 24V. smps ile LM2575-5 step down besleniyor. LM2575-5 çıkışından da, DC 5 Volt giriş / DC 5 Volt regüleli çıkışlı izole dc/dc konvertör besleniyor. Bu konvertör üzerinden I2C çipleri besleniyor.
Beslemenin güzel olduğundan eminim. Sıfırları/toprakları ayırmak için en son bunu denedik. Sıfırları ayırsak da aynı sonuç ayırmasak da aynı sonuç.
Daha önce DC 24V. smps den LM2575-5 veya LM7805 ile besleme sağlayarak denemeler yapmıştık.

Elektroemre sizin kablo özel bir şeyse birde onu deneseydik Hocam.