- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: I2C und seine Widerstände?

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    21.10.2016
    Beiträge
    15
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo
    ICh verstehe die Aufgabe von Pull up nicht bei I²C.

    Danke

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.685
    Suchen, finden, lesen.
    Ciao sagt der JoeamBerg

  3. #13
    shedepe
    Gast
    Stichwort Open Collector.

    Mal eine Erklärung zu der Wahl der Widerstandsgröße:
    I2C Transmitter verwenden sog. Open Collector Ausgänge. D.h. sie haben einfach einen Transistor der SDA oder SCL auf Low ziehen kann. (Low ist auch der dominante Level) Wenn wir nun einen größeren Widerstand wählen fließt entsprechend weniger Strom als wenn wir einen kleineren wählen. Das ist eben entscheidend für die Frage: Wie viele Devices können wir am Bus betreiben -> Jedes Device das zuhört zieht ein kleines bisschen Strom und stellt eine Kapazität dar -> Zu viele Devices -> Keine stabilen HIGH, LOW Pegel (bzw. die Pegel können leichter gestört werden). Das gleiche gilt wenn wir nun die Länge des Busses betrachten. Ein längerer Bus bedeutet auch.: Mehr Kapazität. Diese Kapazität muss umgeladen werden -> Das geht nur mit mehr Strom in der selben Zeit.

    Deshalb auch: Keine 0,1uF oder anderes in den Bus schalten. Das sorgt eher dafür, dass es nicht mehr funktioniert, bzw. langsamer funktioniert.
    Laut Spezifikation darf die Bus Kapazität nicht 400 pF (550pf) betragen. Es wird außerdem empfohlen jeden Teilnehmer mit 100Ohm Serienwiderstand anzuschließen. Desweiteren gibt es Tabellen die in Abhängigkeit der Leitungslänge und der Anzahl der Teilnehmer die Größe der Pullup Widerstände vorgeben.

    Zu guter Letzt: Sollte man wirklich lange Leitungen oder I2C in Störanfälligen Umgebungen betreiben wollen gibt es I2C differentiell Wandler: http://www.nxp.com/products/interfac...ogic:PCA9615DP
    Und/Oder High Voltage I2C

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Zitat Zitat von kingf Beitrag anzeigen
    ICh verstehe die Aufgabe von Pull up nicht bei I²C.
    Die beiden Pins (SDA und SCL) können Eingänge und Ausgänge sein.

    Nimmt man Normale Ausgänge, welche nach 0 und 1 schalten und zwei Ausgängen schalten unterschiedliche Pegel auf den Bus, hat man einen Kurzschluss.

    Die OC-Ausgänge können nur gegen 0 schalten und sind bei einer 1 einfach hochohmig. Letzeres gibt natürlich keinen vernünftigen Pegel. Die 1 zieht dann der Pull up hoch.

    Diese Verschaltung ist auch als "wired AND" bekannt. Du bekommst die 1 nur, wenn alle Ausgänge auf der selben Leitung eine 1 ausgeben. also eine logische UND-Verknüpfung.

    Wozu der ganze Aufwand?

    Man kann sich zusätzliche Leitungen sparen.

    Der Master sendet eine Reihe Bits an den Empfänger und schaltet die SDA dann auf 1 und wartet bis der Empfänger die Leitung auf 0 zieht, als Bestätigung, dass der Empfänger bereit ist das nächste Datenpaket zu Empfangen. Andernfalls würde man dafür eine weitere Leitung benötigen.

    Der andere Trick ist das Clock-Stretching. Ist der Takt für einen Empfänger zu schnell, zieht er einfach SCL auf 0. Der Master erkennt, dass der Clock nicht auf 1 geht und legt eine Warteschleife ein.

    Ein weiterer Vorteil liegt noch darin, dass jeder Baustein Master sein kann.

    Ein Nachteil eines OC-Bumses ist die Leitungskapazität. Zusammen mit dem Pull up bildet sich ein RC-Glied, bei welchem dann der Spannungsverlauf von 0 auf 1 die schöne e-Funktion ergibt, welche man aus der Physik kennt.
    R*C = Tau
    Technisch geht man davon aus, dass ein C nach 5 Tau geladen ist.
    Wenn man R kennt, kann man den Spannungsverlauf z.B. mit dem Oszilloskop ausmessen und die Grösse von C bestimmen.

    OK, wenn man R möglichst klein macht, wird das schneller. Das Problem ist, dass der OC-Transistor nur einen maximalen Strom verträgt, kleiner darf man R nicht wählen. Da der Transistor auch noch einen Innenwiderstand hat (Besonders CMOS-Transistoren) wird der Pegel für die 0. mit kleinerem R grösser. Nun hat aber jeder Eingang eine bestimmte Schaltschwelle. Damit das richtig funktioniert, muss der Pegel plus die Störungen kleiner als die Schaltschwelle bleiben.
    Das andere Problem ist das C. Beim Wechsel von 1 auf 0, muss das C entladen werden. Versucht man ein C in t=0 zu entladen wird der Entladestrom theoretisch unendlich. Praktisch sind da natürlich die verschiedenen Innenwiderstände, welche die nicht wirklich zulassen, aber der Transistor verträgt nur einen maximalen Strom und kann beim Überschreiten durchbrennen. Deshalb ist im Datenblatt auch der maximale Wert für C angegeben.

    Das Ganze führt dazu, dass solche Bussysteme meist auf maximal ein paar Meter begrenzt sind.
    Man könnte jetzt natürlich 10A-Power-FETs als Ausgangstreiber verwenden. Bei 5V verbrät dann der Pull up 50W, das ist so die Grössenordnung eines Elektronik-Lötkolbens. Sowas will man nur im Winter aber nicht auf der Leiterplatte.
    Abgesehen davon müsste dein Netzteil bei I2C dann 20A für die beiden Pull ups bereitstellen, das will auch keiner.

    Eine älteres Bus-System, welche auf OC. basierte, was SCSI. Das war ein paralleler Bus mit 8,16 oder 32-Bit Breite, welcher vor USB und SATA für Festplatten, Scanner usw- verwendet wurde. Dabei gab es auch keinen festgelegten Master, man konnte also einen Sektor direkt von Festplatte zu Festplatte kopieren. Bei ATA musste man den Sektor von der einen Platte zuerst ins RAM der CPU laden und dann von dort zur anderen Festplatte. Bei solchen Operationen war SCSI doppelt so schnell.
    Jedes SCSI-Gerät hatte eine eigene Adresse, bei der 8-Bit Version waren aber nur 8 Adressen möglich. Bei einem Rest zog einfach jedes Gerät das entsprechende Bit auf 0. Der Master hat dann die 8-Bit eingelesen und überall wo er eine 0 gelesen hat, war ein Gerät unter dieser Adresse ansprechbar.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress