-         

Ergebnis 1 bis 5 von 5

Thema: I2C Bus mit 10 Slaves auf 10 metern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2007
    Beiträge
    16

    I2C Bus mit 10 Slaves auf 10 metern

    Anzeige

    Hallo,
    ich habe bis zu 10 Mikrocontroller (Slaves) gleichmäßig verteilt auf etwa 10m Buslänge und einen Master µC am Anfang. Geplant ist die Verwendung des I2C Busses, da recht einfach und keine weitere Hardware erforderlich.
    Wenn ich die Übertragungsrate entsprechend niedrig wähle, sollte doch auch I2C über 10m funktionieren, oder? Soweit ich es verstanden habe ist doch die Leitungslänge nur deswegen kritisch, weil ein Puls durch induktive/kapazitive Leitungseigenschaften nach 10m nicht mehr richtig rechteckig ist, sondern "abgerundete Kanten" hat. Wenn das so schlimm wird, dass der µC die TTL Signale nicht mehr sauber erkennt, sollten doch Schmitt-Trigger-Eingänge völlig ausreichen. Oder sehe ich das falsch?

    Als Hintergrundinfo, hier die Voraussetungen, die mich am I2C-Bus festhalten lassen:

    • übertragungsgeschwindigkeit egal
    • keine zusätzliche Hardware wie Bus-Transceiver, Controller,.. (Schmitt-Trigger-Input am µC vorhanden), aus Kostengründen; wenn extra Hardware, dann pro slave max. 20 Cent
    • Datenübertragung nur auf 5 Volt Pegeln, da sonst Extrakosten für Pegelwandler
    • Möglichst einfaches Protokoll.


    Grüße,
    Stefan

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ganz so einfach und klar ist das leider nicht. Bei einer langen Leitung und steilen Flanken kann es zu Überschwingern kommen - die Steilheit der Flanken ist aber durch die Ausgangsstufen festgelegt, unabhängig von der tatsächlich genutzten Geschwindigkeit. Im ungünstigsten Fall wird das dann als ein Paar kurze Pulse interpretiert.

    Da die Signale beim I2C keine feste Richtung haben, kann man auch nicht so einfach Schmidt-trigger einsetzen um eine langsame Flanke wieder steil zu machen. Mit dem Takt Signal kann man das ggf. noch machen, wenn die Slaves hier kein Clock-Stetching benötigen. Bei der Datenleitung ist es aber schwer was zu machen. Da muss man die Qualität der Ein und Ausgänge so nehmen wie die ICs sie anbieten.

  3. #3
    Hallo Stefan,
    vielleicht hilft Dir das weiter:
    http://www.mikrocontroller.net/articles/I2C_als_Hausbus
    Da geht es auch darum, das I²C Signal über lange Leitungen zu übertragen.
    Viele Grüße
    teamohnename

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2007
    Beiträge
    16
    @Besserwessi:
    wie es zu überschwingern kommen soll, verstehe ich nicht. Wann/wie treten die auf?
    Clock-stretching wird nicht nötig sein. Aber zumindest was den Datenfluss von Master zu Slave angeht, sollte doch ein Schmitt-Trigger Eingang am Slave genügen, denn wenn wenn das Taktsignal seinen Zustand erreicht hat, sollte das doch auch für die Datenleitung gelten. Ggf. kann im Protokoll ja eine kleine Wartezeit bis zum auslesen des Daten-Pegels eingebaut werden.

    @teamohnename:
    danke für den Link. Der ist ja ganz informativ.

    Ich werde mal sehen, ob ich hier ein 10m Kabel rumliegen habe. Dann kann ich einen Test machen.


    Gibt es denn irgendwelche Alternativen, welche die harten Kostenanforderungen erfüllen? Ich hatte bisher noch RS485 oder CAN in Erwägung gezogen, aber das wird nicht direkt vom µC unterstützt und würde dann deutliche Mehrkosten für Buscontroller zur Folge haben.

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Überschwinger können durch Reflexionen am Leitungsende entstehen. Bei genügender Länge des Kabel, d.h. wenn die Laufzeit nicht mehr gegen die Anstiegszeit (bzw. auch die fallende Flanke) zu vernachlässigen ist, verhält sich auch ein Digitalsignal wie eine Welle und wird gff. am Ende des Kabels reflektiert. Die µCs haben oft Anstiegszeiten im Bereich 5-10 ns , da fangen die ersten Problem so ab 30 cm an.

    Gegen die Reflexionen kann man die Kabel am Ende mit dem Wellenwiderstand abschließen. Bei I2C ist das aber so direkt keine wirkliche Option weil die rund 100 Ohm für I2C zu niederohmig sind. Man kann auch die Flanken (hier die fallende) absichtlich langsamer machen - das machen einige I2C ICs auch schon. Nachträglich sind dem aber Grenzen gesetzt.

Ähnliche Themen

  1. Adressierung von SPI-Slaves
    Von goof1980 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 14.03.2011, 21:24
  2. Unidirektionale ISP (8 Slaves)
    Von goara im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 06.03.2009, 16:11
  3. ATmega8 und I2C Slaves antworten nicht
    Von Gurax87 im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 12.01.2008, 13:51
  4. Laserentfernungsmessung ab 5 Metern
    Von 1hdsquad im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 30.03.2007, 18:04
  5. Mehrere I2C SLaves in einem PIC simulieren
    Von andi-58 im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 11.08.2005, 15:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •