Forum: Mikrocontroller und Digitale Elektronik i2c - wie wird kabellänge gemessen? Verstärker?


von philipp (Gast)


Lesenswert?

Hallo!

Ich hab eine Frage zum I2C-Bus. Es wird immer eine maximale Länge von 
maximal ein paar Metern angegeben. Wie wird das nun gemessen? Absolut 
vom Master zum Slave oder vom ganzen Bus?

Ich habe ein System mit einem Master. An ihn will ich 30 slaves mit rund 
1 Meter Kabellänge anschließen. Hab ich nun 30 Meter Kabellänge oder 1 
Meter Kabellänge von Slave zum Master?

Könnt ihr mir irgendwelche Verstärker empfehlen? Datenrate sollte so 
hoch wie möglich sein.

Danke für die Mithilfe,
Philipp

von andreas (Gast)


Lesenswert?

Hi,
die angegebene Leitungslänge bezieht sich immer auf die Strecke von 
Master zum Slave. Wenn du also 30 Slaves anhängen willst und die alle 
nur jeweils 1m vom Master entfernt sind gibt es da kein Problem.

Verstärker wirst du da nicht brauchen.

von philipp (Gast)


Lesenswert?

Sehr gut, Danke.

Man liest immer von Datenrate "bis zu ...".
Mit welchen Datenraten kann ich bei meinem Bus rechnen?

Danke =)

von andreas (Gast)


Lesenswert?

Das hängt von Deinen Baugruppen die du einsetzt ab. Bei einen Bustakt 
von 400KHz können das so ca. 30KByte in der Sekunde sein.

von philipp (Gast)


Lesenswert?

bin bei dem projekt noch beim Planen auf Blockschaltbildebene. Also noch 
ist nichts fix.

ich denke der Master wird ein ATMeag32 @ 16MHZ, alle Slaves ein ATMega16 
@ 16MHZ.

von holger (Gast)


Lesenswert?

>Bei einen Bustakt von 400KHz

Kannste bei 30m knicken.

von andreas (Gast)


Lesenswert?

Wenn man vom Master sternförmig zu den Slaves geht sind das nur 1m.
Ansonsten funktionieren 400kHz natürlich nicht.

von Martin G. (zombo)


Lesenswert?

Moinsen
ging es bei der übertragungsgeschwindigkeit nicht um die dämpfung der 
leitung? also der kapazität? da währe doch egal ob 30 meter am stück 
oder 30 mal ein meter im stern.

(bitte nich hauen wenn ich falsch liegen sollte)
lg

von Purzel H. (hacky)


Lesenswert?

Der I2C wurde nicht gemacht, um die Leiterplatte zu verlassen... der Bus 
ist nicht einmal differentiell.

von Michael M. (Gast)


Lesenswert?

nimm spi oder uart und differentiellwandler.
wenn ich schon "i2c" und "so schnell wie möglich" lese...

von philipp (Gast)


Lesenswert?

Das System mit 30 Slaves gibt es schon. Es wurde mit USART mit 9600 Baud 
realisiert.

Nun soll die Version 2 realisiert werden, bei der der Bus rund 10 mal so 
schnell sein soll.

Nun such ich eben Alternativen. Eine Möglichkeit auf die ich noch 
gestoßen bin ist der CAN Bus, allerdings weiss ich hier nicht ob ich 
mich darüber aussehe. Wie komplex ist der CAN Bus in der Handhabung und 
wieviel Arbeit nimmt mir zum beispiel ein AT90CAN32 oder andere 
Controller mit CAN Interface ab?

Was wären andere Alternativen? SPI?

Ziel wären also rund ~100kBit/s

Danke

von old-school_offline (Gast)


Lesenswert?

Hallo zusammen,

@Hey noch Was
>> Der I2C wurde nicht gemacht, um die Leiterplatte zu verlassen

so ... ist mir neu ...
HDMI , DVI , sogar VGA verwenden I2C zum Datenaustausch ?

Die gesamt Kapazität des Bus bzw. eines selektierten BUS-Zweiges HUB) 
und natürlich auch die Kabellänge (Signallaufzeit Master <> Slave) ist 
zu beachten.

Mit entsprechenden Treibern können Leitungslängen von weit über 100 m 
bei 100kHz erreicht werden.

Leitungs-Treiber:
P 82B96    I²C-Bus Repeater/Hubs/Extenders (von mir bevorzugt verwendet)
P 82B715   I²C bus extender

wird der Bus z.B. zu groß (Umfangreich), kann man diesen jederzeit auch 
über einen HUB in Segmente aufteilen, mehr Adressen, verkleinern der 
Gesamtkapazität ...

PCA9516 5-channel I2C hub


@Michael M.
>> nimm spi oder uart und differentiellwandler.
>> wenn ich schon "i2c" und "so schnell wie möglich" lese...

I2C ist auf jeden Fall flexibler als SPI,
nur weil Du damit nicht umgehen kannst und es nicht hin bekommst :-)

Gruss Ralf

von Michael M. (Gast)


Lesenswert?

old-school_offline schrieb:
> [viel blödsinn]
ja, das fasst es gut zusammen.

von philipp (Gast)


Lesenswert?

Michael M. schrieb:
> old-school_offline schrieb:
>> [viel blödsinn]
> ja, das fasst es gut zusammen.

solch unqualifizierte Aussagen bringen mich auch nicht weiter. Kannst du 
den "Blödsinn" näher ausführen? Haut das nun hin mit meinem I2C oder 
nicht? Soll ich SPI, CAN nehmen?

Das problem wird sein, dass Probleme wahrscheinlich erst bei vielen 
Platinen auftreten, sprich ich seh erst obs klappt wenn ich die 30 
Platinen gebaut hab. Deshalb wär es praktisch für mich im Vorfeld zu 
wissen mit welchem Bus ich eine chance hab und mit welchem nicht.

Danke

von stepp64 (Gast)


Lesenswert?

Bei der USART ist doch mit 9600 noch nicht Schluss. Die schafft auch 
250.000 (oder noch schneller?). Warum also nicht einfach auf z.B. 115000 
gehen?

von Garstiger (Gast)


Lesenswert?

old-school_offline schrieb:
> Die gesamt Kapazität des Bus bzw. eines selektierten BUS-Zweiges HUB)
> und natürlich auch die Kabellänge (Signallaufzeit Master <> Slave) ist
> zu beachten.
Signallaufzeit beachten? Bei I2C? Der Bus ist gääähnend langsam, da ist 
die Signallaufzeit doch kein Prozent.
Auch mit 30 Teilnehmern nicht.

> Mit entsprechenden Treibern können Leitungslängen von weit über 100 m
> bei 100kHz erreicht werden.
Gääähn. Wir leben in 2010. Über 100kHz freut sich kein Mensch mehr!

> Leitungs-Treiber:
> P 82B96    I²C-Bus Repeater/Hubs/Extenders (von mir bevorzugt verwendet)
> P 82B715   I²C bus extender
Ganz schöne Klimmzüge, um nicht von der Technik wegzumüssen, auf die man 
sich so eingeschossen hat!


> @Michael M.
>>> nimm spi oder uart und differentiellwandler.
>>> wenn ich schon "i2c" und "so schnell wie möglich" lese...
>
> I2C ist auf jeden Fall flexibler als SPI,
Wieso denn flexibler?
Das einzige, was flexibler ist, ist das Kabel, weil es weniger Leitungen 
braucht.
Das war es dann aber auch damit.

> nur weil Du damit nicht umgehen kannst und es nicht hin bekommst :-)
I2C ist doch seit Jahren überall fertig integriert zu finden. Was soll 
denn daran "nicht hinzubekommen" sein?

von Ralf G. (old-school) Benutzerseite


Lesenswert?

@all

Philipp hatte ursprünglich eine Frage:
>> Ich hab eine Frage zum I2C-Bus ....

... und wurde auf diese eingegangen ?

außer erst mal alles schlecht machen und runter ziehen, glaube nicht.

Wir wissen ja noch nicht einmal was Philipp überhaupt damit machen will 
...

Fakt ist: Philipp hat derzeit einen Master und 30 Slaves die ca 1 Meter 
vom Master entfernt sind und derzeit mit 9600 b/s verbunden sind und 
dies soll 10 x schneller werden.

Es wäre super wenn uns Philipp mal mehr Infos geben könnte ...

müssen z.B. die Slave (BUS) Hot-Plug fähig sein,
sind die Slaves Aktoren , Sensoren , oder beides,
wie groß sind die Datenpakete, sollen die Slave gepolt werden oder wird 
eine oder mehrere Interrupt-Leitung benötigt.

Gibt es Einschränkungen in der Verkablung (Anzahl der Leitungen)
in was für einer Umgebung soll die Verbindung laufen, 19" Gehäuse mit 
Backbohne oder Leitungs-Verbindungen in einer Maschine ...

Jede Art der Verbindung hat seine Daseinsberechtigung, sie muss nur 
vernünftig eingesetzt werden.

in diesem sinne ...

Gruss Ralf



@Michael M.
>> :-) << (smilie) sollte nicht böse gemeint sein, sorry wenn Du es anders 
verstanden hast.

von Michael M. (Gast)


Lesenswert?

Ralf Greinert schrieb:
> Wir wissen ja noch nicht einmal was Philipp überhaupt damit machen will
> ...
Da hast du völlig Recht!

> @Michael M.
>>> :-) << (smilie) sollte nicht böse gemeint sein, sorry wenn Du es anders
> verstanden hast.
Danke für die Aufklärung. Dann bitte ich dich um Entschuldigung =)
Nicht für ungut!
Michael

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

philipp schrieb:
> Das System mit 30 Slaves gibt es schon. Es wurde mit USART mit 9600 Baud
> realisiert. Nun soll die Version 2 realisiert werden, bei der der Bus
> rund 10 mal so schnell sein soll.
Dann lass es doch einfach bei der seriellen Kommunikation, schraub die 
Baudrate hoch und verwende differentielle Treiber (RS422 bzw. RS485, 
ähnlich CAN).

> Wie komplex ist der CAN Bus in der Handhabung
Er ist ähnlich einfach wie eine RS232-Schnitte: Initialisierung, 
Senderegister beschreiben, Empfangsinterrupt, Empfangsregister lesen. 
Aber für dich ist er eben noch neu. Das Stichwort dazu heißt: Lernen 
;-)


>> Der I2C wurde nicht gemacht, um die Leiterplatte zu verlassen
> so ... ist mir neu ...
Ist trotzdem so: Inter-IC-Bus, also zur Kommunikation zwischen ICs. Z.B. 
zwischen dem Hauptrechner und der Eingabe bzw. irgendwelchen 
Ansteuerungen im Fernseher, Autoradio oder Videorecorder.
> HDMI , DVI , sogar VGA verwenden I2C zum Datenaustausch ?
Und PS/2 (Tastatur) ist auch so ein Format. Das sind aber Punkt-zu-Punkt 
Verbindungen, da ist die Terminierung einfacher zu realisieren.

>>> Ich hab eine Frage zum I2C-Bus ....
> ... und wurde auf diese eingegangen ?
Die grundlegende Frage war eigentlich gar nicht zum I²C-Bus, sondern 
hätte lauten müssen: Wie schaffe ich eine Baudrate von mindestens 
100kBit/s auf einer Länge von 30m?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.