Moin!
Wie sieht das eigentlich in der Leitungstheorie bei sehr langen
Signalleitungen aus? Beispiel: Ich habe hier eine 30 Meter lange
ungeschirmte I2C Leitung. Beim Empfänger kann ich dann mit dem Oszi FM
Radio sehen. Nachdem ich direkt beim Empfänger 1nF Kerkos eingebaut
habe, war der Spuk vorbei. Das war aber eher so ne instinktive
Problemlösung eines Hobbybastlers, wie ich nunmal einer bin. Wie siehts
mit best practice aus?
Hier geht es nicht darum, ob ich I2C richtig verwende, sondern wie ich
Daten über eine lange Leitung mit hoher Impedanz richtig transportiere.
Wenn es um "ich bin blöd und folge deshalb nur den Standards, wie lese
ich I2C Specs?" gehen würde, hätte ich das nicht unter Analogtechnik
gepostet, sondern im digitalen Bereich.
Panny schrieb:> Ich habe hier eine 30 Meter lange ungeschirmte I2C Leitung.
Du kannst sie zwar haben. Aber nicht sinnvoll benutzen.
Panny schrieb:> Wie siehts mit best practice aus?
Stell dir die Leiterplatte eines Fernsehers vor. FÜr solche
Distanzen die auf so einer Platine auftreten ist I2C gedacht.
Für nichts anderes!
Wenn du anders handeln willst ... dein Problem.
Panny schrieb:> Hier geht es nicht darum, ob ich I2C richtig verwende, sondern wie ich> Daten über eine lange Leitung mit hoher Impedanz richtig transportiere.
Ja und das geht nun mal nicht störungsfrei. Und wenn du noch so
viele "KerKos" und Widerstände vorsiehst. Drosseln bzw.
Induktivitäten stehen zum Spekulieren auch noch zur Verfügung.
Es stimmt schon, I²C ist nicht für lange Leistungslängen entwickelt
worden. Grundsätzlich gibt es schon Lösungen, die einen Betrieb weit
über den Platinenrand hinaus ermöglichen:
* P82B96: bidirektionaler Buffer
* PCA9615: differentieller Buffer
Wenn du noch Einfluss auf deine Beschaltung bzw. dein Kabel nehmen
kannst, könnte das ein richtiger Weg sein.
Panny schrieb:> Beispiel: Ich habe hier eine 30 Meter lange ungeschirmte I2C Leitung.
Vergiss es. Diese Leitung ist um den Faktor 100 zu lang. Für solche
Entfernungen ist der Inter-IC-Bus nicht gedacht.
Panny schrieb:> Hier geht es nicht darum, ob ich I2C richtig verwende, sondern wie ich> Daten über eine lange Leitung mit hoher Impedanz richtig transportiere.
Nimm einen Bus, der 1. differentiell und 2. niederohmig ist.
1) Bestudiere mal der unterschied zwischen 0..10V (spannungsgesteuert)
oder 4..20mA (stromgesteuert) auf eine lange leiting. Widerstand der
Leitung ist bei stromsteuerung egal. Injektierte stoerungen sind fuer
stromsteuerung meistens egal
2) Bestudiere mal der unterschied zwischen CM (Common Mode) und DM
(Differential Mode) Stoerungen. CM stoerungen werden von abschirmung
unterdruckt. DM stoerungen werden von twisted pairs unterdruckt.
3) Ja, auch bei I2C ist es moeglich lange leitungen zu benutzen, ich
habe in unser Labor ein system das schon 10+ Jahren einwandfrei
funktioniert mit 5 PCF8574 I2C chips jeder konnekter mit kabel von 2..5m
kabel. Aber dafuer habe ich u.a. die folgende sachen machen muessen :
- Fail-safe I2C kommunikation mit retry.
- Hardware-filtering
- Bus frequenz zurueck gebracht zo 1kHz damit ich besser filtern kann
Ja, es ist machbar aber man kann sich abfragen ob dies nicht als I2C bus
durchgehen kann. Dabei wuerde ich das system nie am Kunden anbieten.
Lothar M. schrieb:> Panny schrieb:>> Beispiel: Ich habe hier eine 30 Meter lange ungeschirmte I2C Leitung.> Vergiss es. Diese Leitung ist um den Faktor 100 zu lang. Für solche> Entfernungen ist der Inter-IC-Bus nicht gedacht.
Mag sein, wenn man weiß was man tut, geht das aber. Hab ich schon in
einer Industrielösung gesehen, Auslesen einen Potis über 100m und mehr!
Klar muss man da mit der Taktfrequenz runter, aber das ist ja OK.
Panny schrieb:> Wie sieht das eigentlich in der Leitungstheorie bei sehr langen> Signalleitungen aus? Beispiel: Ich habe hier eine 30 Meter lange> ungeschirmte I2C Leitung. Beim Empfänger kann ich dann mit dem Oszi FM> Radio sehen. Nachdem ich direkt beim Empfänger 1nF Kerkos eingebaut> habe, war der Spuk vorbei.
Logisch, die 1nF sind eine HF-Kurzschluß für alle eingekoppelten
HF-Störungen. Die NF (dein I2C Signal) wird nur wenig gedämpft (nicht
kurzgeschlossen).
> Das war aber eher so ne instinktive> Problemlösung eines Hobbybastlers, wie ich nunmal einer bin. Wie siehts> mit best practice aus?
Kann man in einigen Fällen so machen, der Preis ist die verminderte
Datenrate.
Panny schrieb:> ich bin blöd und folge deshalb nur den Standards
Umgekehrt wird ein Schuh draus.
Nur wer blöd ist kommt auf die Idee I2C über 30m einzusetzen.
Wer nicht blöd ist, versteht auch warum das eine total dumme Idee ist.
schön, in welcher Tonart hier wieder diskutiert wird.
Nur das es dem Poster offenbar gar nicht um die Diskussion ob das
sinnvoll oder oder nicht ging!
MAnche scheinen mit der einfachsten Frage bereits hoffnungslos
überfordert
SO wirklich viele Beiträge, die Bezug auf seine Frage nehmen, sehe ich
nicht
Ach ja, es ist Freitag..UND Homeschooling.
Tomas pk schrieb:> SO wirklich viele Beiträge, die Bezug auf seine Frage nehmen, sehe ich> nicht
Weil auch nur wenige Leute den Sinn darin sehen dies zu
beantworten. Sie wissen es einfach besser und schütteln im
Hintergrund den Kopf über solche dummen Vorhaben.
Panny schrieb:> Wie sieht das eigentlich in der Leitungstheorie bei sehr langen> Signalleitungen aus? Beispiel: Ich habe hier eine 30 Meter lange> ungeschirmte I2C Leitung. Beim Empfänger kann ich dann mit dem Oszi FM> Radio sehen. Nachdem ich direkt beim Empfänger 1nF Kerkos eingebaut> habe, war der Spuk vorbei. Das war aber eher so ne instinktive> Problemlösung eines Hobbybastlers, wie ich nunmal einer bin. Wie siehts> mit best practice aus?
Ohne jetzt in die Spec zu schauen, habe ich 400pF im Kopf, die I2C pro
Leitung haben darf. Es gibt aber für lange Kabel spezielle I2C-Treiber.
Dämlack schrieb:> Panny schrieb:>> ich bin blöd und folge deshalb nur den Standards>> Umgekehrt wird ein Schuh draus.> Nur wer blöd ist kommt auf die Idee I2C über 30m einzusetzen.>> Wer nicht blöd ist, versteht auch warum das eine total dumme Idee ist.
Na ja, obs blöd ist, liegt im Auge des Betrachters. Beispiel: als ich
gesehen habe , dass i2c und Waschmaschinenstecker im Automotive Bereich
eingesetzt werden, da dachte ich mir auch, "sind die blöd". Und nun?
"sondern wie ich Daten über eine lange Leitung mit hoher Impedanz
richtig transportiere."
Du gibst Dir selbst bereits die Antwort. Deine Störungen waren weg, als
der Kondensator dazu kam. Somit war die Impedanz zum Unterdrücken der
Störung niedrig genug. Die Leitung hat sowieso keine hohe Impedanz.
Vielleicht ein paar hundert Ohm, wenn es kein Koaxialkabel ist. Mit der
von Dir gewünschten hohen Impedanz wirst Du immer Störungen einfangen.
Dagegen hilft dann nur noch, mit der Signalspannung höher zu gehen. Nimm
halt 50 Volt für das I2C.
Mfg
I2C Techniker schrieb:> Weil auch nur wenige Leute den Sinn darin sehen dies zu> beantworten.
Deshalb antwortet hier auch Hinz und Kunz. Leider ohne dass die Frage
wirklich beantwortet wird.
I2C Techniker schrieb:> Sie wissen es einfach besser und schütteln im> Hintergrund den Kopf über solche dummen Vorhaben.
Auch das stimmt leider nicht. Sie blubbern hier an der Frage vorbei und
blähen den Beitrag unnötig auf.
Zum Glück sind auch ein paar "sachdienliche" Hinweise und Antworten
dabei. :-)
(meine ausgenommen, aber das konnte ich mir zum Wochenende nicht
verkneifen)
Tomas pk schrieb:> SO wirklich viele Beiträge, die Bezug auf seine Frage nehmen, sehe ich> nicht
Du hast auch einen zu dieser Sammlung beigetragen.
Falk B. schrieb:> Mag sein, wenn man weiß was man tut, geht das aber.
Natürlich. Auch die PS/2 Tastaturen und Mäuse verwenden ein ähnliches
Verfahren und konnten "problemlos" über Verlängerungen betrieben werden.
Und auch das EDID-Verfahren bei Monitoren funktioniert über längere
Leitungen.
Allerdings sollte man hier eben nicht nur auf einer Seite terminieren,
sondern verteilt auf beiden. Zudem darf die Terminierung ruhig
niederohmiger sein als im "Standard". Weiters empfiehlt sich eine
Klemmung mit Schutzdioden und die bereits realisierte (moderate)
Filterung mit Kondensatoren. Auch ein geschirmtes Kabel ist an dieser
Stelle gut investiertes Geld.
Panny schrieb:> Nachdem ich direkt beim Empfänger 1nF Kerkos eingebaut habe, war der> Spuk vorbei.
Bei I2C gibt es keinen "Empfänger", weil es prinzipiell ein
bidirektionaler Bus ist, bei dem die Datenrichtung laufend wechselt.
Zudem können sogar viele Slaves im Bus hängen und darüber hinaus auch
noch andere Master auf dem selben Bus aktiv sein.
Alle diese "Erweiterungsmöglichkeiten" und "Stubs" sollte man an diesem
"externen 30m-I2C-Bus" tunlichst vermeiden und nur den 1 Master und den
1 Slave anschließen.
M.A. S. schrieb:> Patrick C. schrieb:>> Bestudiere...> Aus welcher Sprache stammt dieses Wort und was heißt es auf Deutsch?
Wees ich nit... ich bin ein Bloeden Hollaender
Panny schrieb:> Ich habe hier eine 30 Meter lange> ungeschirmte I2C Leitung. Beim Empfänger kann ich dann mit dem Oszi FM> Radio sehen. Nachdem ich direkt beim Empfänger 1nF Kerkos eingebaut> habe, war der Spuk vorbei.
1nF Kerkos Empfängerseitig an Vcc? SDA? SCL?
btw warum gibt es keine Kerko-Arrays?
Auch wenn meine Zwischenfrage blöde klingt, ich verwende für
I2C-Sensoren ein etwa 15-20cm ungeschirmtes Kabel. Also einfaches WtoB
auf JST XH Buchse. Gelegentlich gibt es Aussetzer auf der kurzen
Distanz.
Viel schlimmer ist der OneWire Sensor auf 1,5m Probe. Der tut mit Glück
jede 5te Abfrage.
Falk B. schrieb:> Kann man in einigen Fällen so machen, der Preis ist die verminderte> Datenrate.
Ja, man kann die Taktrate reduzieren, aber das ist nicht immer die
Lösung. Denn die Busteilnehmer (nicht alle aber viele) haben auch
Anforderungen an die Signal-Flanken (Rise-Time und Fall-Time).
Gut abgeschirmte Leitungen wären eine Alternative. Es gibt dafür extra
welche mit besonders wenig Kapazität zwischen Leitung und Schirm.
Jeder Sensor hat folgende Kerkos:
VCC:GND 10uF+100nF
SDA:GND 1nF
CLK:GND 1nF
Der Pull-Up für den Bus ist 820 Ohm jeweils für Data und Clock. Alles 0
Problemo derzeit. Clamp-Dioden habe ich nicht eingebaut, denn die sind
ja schon in den Sensoren in Form von ESD-Dioden vorhanden.
Wenn jetzt keiner noch sowas wie "aber wenn das und das wäre, dann würds
nicht mehr gehen" einzuwänden hat würde ich es einfach so laufen lassen.
Denn... naja... es funzt halt.
Panny schrieb:> Wie siehts mit best practice aus?
Da würde ich mich ruhig auf die Angaben des Herstellers/Erfinders
verlassen. Lies die AN10658 von NXP zu dem Thema: "Sending I2C-bus
signals via long communications cables". Dort werden Kabellängen bis
100m diskutiert.
https://www.nxp.com/docs/en/application-note/AN10658.pdf
Panny schrieb:> Wenn jetzt keiner noch sowas wie "aber wenn das und das wäre, dann würds> nicht mehr gehen" einzuwänden hat würde ich es einfach so laufen lassen.> Denn... naja... es funzt halt.
Wenn es funktioniert ist es doch gut.
Aber man sollte doch einen Blick in die Spezifikationen werfen. 820 Ohm
als Pullup wäre für 5 V alsolut zu niedrig. Bei 5 V sind ca. 1,7 K
gerade noch zulässig. Für 3,3 V rät TI
Rp max = 1,77 K
Rp min = 966 Ohm
Siehe Seite 4, Rechenbespiel:
https://www.ti.com/lit/an/slva689/slva689.pdf?ts=1611987497971&ref_url=https%253A%252F%252Fwww.google.com%252F
Die Kapazität der Signalleiter sollte 400 pF nicht überschreiten. Dies
gilt sicher für die höchste Taktfrequenz, zumindest für 100 kHz.
Wie Falk schon erwähnte kommt man mit kleineren Taktfrequenzen weiter.
Eine Halbierung der Frequenz erhöht die Reichweite um das Doppelte.
Einen PCF8574 habe ich zum Testen über eine Kabeltrommel mit 2 x 2
Telefoninnenkabel über 100 m betreiben können.
mfg klaus