mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pullup bei I2C


Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

soweit ich weiß werden in der Regel 10kOhm als Pullup beim I2C bus 
verwendet. In welchem Rahmen kann sich der Pullupwiderstand bewegen, so 
dass eine Kommunikation gewährleistet ist?

Danke!

Autor: Marcus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja da steht 1k bis 4.7k. Welche Auswirkungen hat es auf die 
Kommunikation, wenn ich zb einen 10k oder 20k Pullup verwende?

Autor: Marcus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Je größer der Pullup, desto niedriger die erzielbare Datenrate.
Genau rechnen kann man sowas nur, wenn man Kapazitäten und Leitwerte der 
Busleitungen kennt.

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank.
Sprich wenn ich einen Sensor habe, der eingebaute 10k Pullups hat, hänge 
ich am besten nichts mehr an die Leitung?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Naja da steht 1k bis 4.7k. Welche Auswirkungen hat es auf die
>Kommunikation, wenn ich zb einen 10k oder 20k Pullup verwende?

Warum verwendest du einen 10k oder 20k Pullup, wenn die Spezifikation 1k 
bis 4.7k fordert?

Die Anschlüsse aller Teilnehmer am I²C ziehen die Leitung entweder nach 
Masse, oder sind hochohmig. Beim loslassen der Leitung "füllt" sich die 
durch den pull-up. Ist der zu groß, dauert das zu lange.

Oliver

Autor: Marcus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i2c schrieb:
> Sprich wenn ich einen Sensor habe, der eingebaute 10k Pullups hat, hänge
> ich am besten nichts mehr an die Leitung?

Du kannst trotzdem mehrere Slaves anschließen.
Einfach noch einen 10k Pullup parallel (oder kleiner) und du bist bei <= 
5k, das reicht für die meisten Anwendungen. Kannst ja sicherheitshalber 
mit einem Oszi die Flanken kontrollieren.

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir wird die Leitung durch einen Multiplexer umgeschaltet, so dass 
sich immer nur ein Slave dran befindet. In dem Fall dann keine weiteren 
Pullups?

Autor: Marcus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i2c schrieb:
> In dem Fall dann keine weiteren
> Pullups?

Kommt auf die Buslänge und die Geschwindigkeit an. Sicherer ists immer 
in der Spezifikation zu bleiben. 10k Widerstände hat man doch meistens 
auf Lager.

Wenn du die unbedingt einsparen willst, dann prüfe mit einem Oszi die 
Anstiegszeit von Low auf High und schau ob die kurz genug ist 
(vergleiche mit Datenblatt). Oder teste einfach obs geht und wenn nicht 
füg die Pullups hinzu. Fürs Hobby ists ja egal, sauber ist die Lösung so 
aber nicht.

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe leider keinen Oszi da.

Die Leitungslänge beträgt im Worst Case ca 3m.
Der bessere Weg wäre also nochmal ein 10k parallel nach VCC?

i2c
----
   |
  10k
   -------- Sensor
   |
  10k
------- GND

so?

Autor: Marcus W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i2c schrieb:
> 10k parallel nach VCC?

Ja.

>i2c
>----
>   |
>  10k
>   -------- Sensor
>   |
>  10k
>------- GND

Nein.


>
>------------------------ VCC
>   |                |
>  10k(zusätzlich)  10k(integriert im Sensor)
>   |                |
>------------------------ I2C(SDA)

Das ganze nicht nur für SDA (Datenleitung) sondern auch für SCL(Takt).

Gruß

Autor: old-school (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  i2c (Gast)

I2C ist ein Bus,

bei einer Länge von 3 Metern solltest du am Anfang und am ende ein 
PullUp-Widerstand verwenden.

Du schreibst das Du einen Umschalter verwendest ...

Umschalter in der nähe der uP, dann nach dem Umschalter je eine 
Verbindung (3 Meter) zu den Sensoren ?

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo old-school,

im Moment ist es so aufgebaut:

µC --> Mux --> Pullup nach VCC --> 1m bis 3m Leitung --> Sensor mit 
integriertem Pullup.

Es funktioniert auch, aber falls es eine Möglichkeit gibt, das ganze 
professioneller zu gestalten, würde ich es gerne tun, auch wenn nur 
Hobby :)

Autor: Marcus W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wofür dient der MUX?
Haben deine Slaves alle die gleiche Adresse?
Wenn nicht dann kannst du den Mux entfernen und durch draht ersetzen :)

Autor: i2c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Slaves sind 4 Sensoren vom gleichen Typ, alle haben die gleiche, 
feste Adresse

Autor: old-school (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Marcus W.

>> Wofür dient der MUX?

um zum Beispiel den Bus in Segmente (Stern) auf zu teilen,
es können mehr Bussteine mit gleichen Adressbereich verwenden werden und
die Gesamt-Kapazität der Leitung kann so erheblich verringert werden, 
gerade bei langen Leitungen.

Ich verwende den I2C-Bus für meine Haussteuerung und habe bei Tests 
Leitungslängen von 200m stabil mit 100kHz zum laufen bekommen.

Für längere Leitungen benötigt am aber Bustreiber, ich verwende den 
P82B96 mit 12V und 2,2k Pull-Up auf jeder Seite.

Trotz aller Vorsehungen kann es doch passieren das sich ein Slave beim 
Clock-stretching aufhängen. Da Hilft nur eins, Bussegment für einige 
Sekunden Stromlos machen ...

Ich habe für meine Haussteuerung einen aktiven I2C-Hub gebaut, der 
Fehlerhafte Bussegmente erkennt und abschaltet / Resetet, somit ist 
immer ein Fehlerfreier Betrieb gewährleistet.

Gruss Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.