Widerstände am I2C

Gast #5267735
Lesenswert?

Hier entsteht gerade ein Aufbau mit Arduino-Nano und mehreren 
I2C-Steinen. Ich nutze China-Platinchen, die neben dem eigentlichen IC 
auch dessen Grundbeschaltung mitbringen, kosten wenig und passen 
komfortabel auf eine Lochrasterplatte.

In Summe habe ich fünf I2C-Steine: 2x MCP4725, 2x INA219 und Display 
mit PCF8574.

Auf jeder dieser Platinchen sind 4k7 als PullUp an SDA / SCL vorhanden, 
in Summe komme ich also auf knapp 1k.

Frage: So lassen oder einige runter, um die Last am Bus zu reduzieren?

Einen Bus verstehe ich als gerade Linie, welche an beiden Enden 
terminiert wird. Kann ich nicht, es wird eher ein Stern oder gar Baum. 
Ich nehme an, dass das bei I2C kein Problem sein wird - die Gesamtlänge 
wird innerhalb des selben Gehäuses kleiner 30 cm sein?
Moderator Persönliche Seite #5267740
Lesenswert?

Manfred schrieb:

> Frage: So lassen oder einige runter, um die Last am Bus zu reduzieren?

Einige runter, minimal etwa 4,7 kΩ.

> Einen Bus verstehe ich als gerade Linie, welche an beiden Enden
> terminiert wird.

So hoch sind die Frequenzen nicht, dass man das hier als elektrisch
lange Leitung betrachten müsste.
#5267786
Lesenswert?

Jörg W. schrieb:
> Würde ich trotzdem nicht völlig ausreizen.

Ja, aber zu hoch ist auch ein Problem. Pauschal kann man das ja eh nicht 
wirklich sagen. Klar, man kann einen Wert in den Raum werfen und meist 
passt es auch mit 4.7 kΩ. Muss es aber nicht immer. Ich würde zunächst 
auch keinen Widerstand runter werfen sondern mir mit dem Oszi den 
Signalverlauf anschaun. Sinds vernünftige Rechtecke würde ich auch 
keinen Widerstand runter werfen.
Moderator Persönliche Seite #5267812
Lesenswert?

Falk B. schrieb:
> Ich würde sie an den Master machen und an allen Slaves entfernen.

Ich auch.

Eigentlich ist es völlig widersinnig, dass diese Slave-Boards überhaupt
mit Pullups ausgeliefert werden.  Aber da hat wohl wer mal gehört, dass
an I²C Pullups Pflicht sind, und da niemand nun weiß, ob außer ihn noch
jemand auf die kluge Idee gekommen sein könnte, an diesem Bus hier
welche vorzusehen, macht deshalb jeder welche drauf …
Gast #5267867
Lesenswert?

Jörg W. schrieb:
> Einige runter, minimal etwa 4,7 kΩ.

Wenn ich andere Threads interpretiere, sollten 10k nicht unterschritten 
werden.

Layoutprofi schrieb:
> Schau mal da rein:
> Ist eine AppNote von TI zur berechnung der WIderstände am I2C.

Danke, abgespeichert, schaue ich mir die Tage an, bevor ich weiter 
mache.

Falk B. schrieb:
> I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V.

Danke, diese 3mA nehme ich mal als Hausnummer, die sich hier leicht 
umsetzen lässt. Grob über den Daumen kann ich drei 4k7 drauf lassen.

Jörg W. schrieb:
> Eigentlich ist es völlig widersinnig, dass diese Slave-Boards überhaupt
> mit Pullups ausgeliefert werden.

Ja und Nein: Arduino nutzt die Analog-Pims A4 / A5 für I2C, welche auf 
den Boards natürlich keinerlei Beschaltung aufweisen. Wenn ich nun als 
Heimwerker eine I2C-Device anklemme, tut mir der Chinese den Gefallen, 
die PullUps mitzuliefern. Auf den MCP4725-Boards gibt es sogar eine 
Wischbrücke, mit der man diese abtrennen könnte.

Was ich hier treibe, liegt vielleicht geringfügig über dem typischen 
"Maker" - egal, das wird zur Funktion kommen!
Gast #5268852
Lesenswert?

> Es wurde schon alles gesagt

Danke für Eure Antworten, speziell mit den AP-Notes zum Thema!

Der MultiSpeedI2CScanner von Rob Tillaart sieht alle Komponenten, ich 
kann das Display beschreiben und mit dem D/A-Wandler Werte ausgeben. 
Alles weitere wird sich zeitlich ziehen, aber ich bin guter Dinge.

Natürlich gab es erstmal Fehlersuche: Ein Lötfehler und eine falsche 
Adresse, aber das muss wohl so sein :-(
Gast #5268977
Lesenswert?

Stefan U. schrieb:
> Das Wifi Kit 8 Board verwendet 10k Ohm Pull-Up Widerstände bei 3,3V für
> das on-board Display. Das geht so gerade eben. Wenn man die Pins anfasst
> oder einige cm Draht anlötet, geht es schon nicht mehr.

Generell baue ich gerne stromsparend, was nicht fließt, muß nicht 
weggekühlt werden und Temperatur ist Lebensdauer. Im konkreten Fall habe 
ich 5 Volt, Strom kommt aus der Steckdose und über 10 mW mehr oder 
weniger muß ich nicht nachdenken.

Falk B. schrieb:
> I2C muss min. 3mA gegen LOW ziehen können,

dazu schaue ich in die Datenblätter, jawohl, alle drei beteiligten ICs 
definieren max. 0,4 V-low @ 3 mA bzw. min. 0,4 V @ 3 mA.

Der Zollstock sagt mir, dass ich in Summe fast 50 cm Leitungslänge habe, 
also lege ich mich an die Unterkante mit etwa 1,5 kOhm.

Wie gesagt: Thema erstmal erledigt!
Gast #5269008
Lesenswert?

Manfred schrieb:
> Generell baue ich gerne stromsparend, was nicht fließt, muß nicht
> weggekühlt werden und Temperatur ist Lebensdauer.

Das ist bei I2C fast egal, da Strom nur fließt wenn die Pegel auf low 
liegen, also während der Datenübertragung.

Da man I2C nahezu beleibig verlangsamen kann, kann man die Leitungslänge 
entsprechend ausdehnen. Hab letztens ein paar Sensoren an 10m 
geschirmten Cat-Kabel getestet (hohe Leitungskapazität), ging mit 10kHz 
problemlos und mit sauberem Signalbild.

Wenn man es schnell bei großer Leitungslänge haben will, hilft ein 
Stromspiegel, die Pegel schnell wieder hochzuziehen: 
https://www.mikrocontroller.net/attachment/9856/consta1.jpg

Allerdings benötigt der dauerhaft seine 1.5mA pro Leitung.
#5269172
Lesenswert?

Karl schrieb:
> Hab letztens ein paar Sensoren an 10m
> geschirmten Cat-Kabel getestet

Naja, mein Gefühl sagt mir, dass I2C nie für solche Abstände bestimmt 
war.

Falk B. schrieb:
> Ich
> würde sie an den Master machen und an allen Slaves entfernen.

Wenn ich die Slaves selber baue dann würde ich denen auch keine Pull-Ups 
spendieren. Wie gesagt,, in diesem Falle würde ich aber erstmal den Bus 
zusammen setzen und mir das Signalbild auf dem Oszi anschaun bevor ich 
den Lötkolben auspacke denn warum die Pull-Ups runter holen wenn das 
Signalbild gut aussieht? ;)
#5269183
Lesenswert?

Karl schrieb:
> I2C wird von VGA, DVI und HDMI für EDID verwendet. DVI kann bis 15m.

I2C war ursprünglich nur für die Kommunikation von ICs auf einer Platine 
gedacht. Natürlich kann man es auch zweckentfremden. Bei DVI: Ist bei 
den 15 M wirklich noch ne vernünftige I2C Kommunikation mit inbegriffen?
Naja, ich hab jedenfalls I2C noch nie auf diese Entfernungen benutzt und 
plane das auch nicht. Da würde ich dann doch andere Schnittstellen in 
Betracht ziehen.
Gast #5269242
Lesenswert?

M. K. schrieb:
> Naja, mein Gefühl sagt mir, dass I2C nie für solche Abstände bestimmt
> war.

Dann weise dein Gefühl mal auf die Application Note AN10658 (Sending 
I2C-bus signals via long communications cables) von NXP hin.
https://www.nxp.com/docs/en/application-note/AN10658.pdf

Dort werden vom Erfinder des I2C Leitungslängen bis 120m für 
I2C-Kommunikation genannt.
Gast #5269385
Lesenswert?

> bis 120m

Wenn die Sender die Flankensteilheit begrenzen und die Empfänger kurze 
Überschwinger raus filtern und die Taktrate dazu passend gering ist wird 
das wohl gehen.

Aber wenn du heute einem Hobbybastler erzählst, dass deine Geräte mit 
10kbit (wie bei Lego Mindstorms NXT) kommunizieren, erhältst du nur ein 
müdes mitleidiges Lächeln.

Wenn auf einem Radiowecker "0,00003 GHz Taktfrequenz" stehen würde, 
würde ihn niemand kaufen. So doof ist die Welt geworden, dank der 
permanenten Gigantomanie.
#5269423
Lesenswert?

Hallo,

wenn ich dazu etwas beitragen darf.

Die besagten 120m funktionieren auch nur mit Portexpander. Das sollte 
man fairerweise mit erzählen. I2C wurde schließlich für Kommunikation 
innerhalb eines Gerätes entwickelt. Also für kurze Kabellängen.

Ansonsten gibts hier paar bessere Erklärungen mit Messbildern wie sich 
die Widerstandsgrößen auf das Signal auswirken. 
http://www.gammon.com.au/forum/?id=10896&reply=5#reply5
Gast #5269507
Lesenswert?

Wie niedrig die Pullups sein müssen, hängt auch von der Kapazitäten ab, 
die an SDA/SDC hängen. Je mehr Platinen und je länger die Leitungen 
sind, umso höher ist die Kapazizät und um so niedriger sind die 
benötigten Pullups.

Bei einem Slave und kurzen Leitungen bzw. wenn der Slave auf der 
gleichen Platine wie der Master ist, mag 4k7 ok sein, bei 5 Platinen, 
die wie hier alle über Leitungen angebunden sind, wäre bei 5V eher 1k5 
zielführend.

Ich nehme für Platinenverbindungen immer Flachkabel, die abwechseld GND 
und Daten führen, also GND/SDA/GND/SDC/GND/+5V, die GND dürfen nur an 
der Seite des Masters verbunden werden, auf der Seite des Slaves ist nur 
1x GND verbunden, die anderen offen.

Und ich schaue mir immer die Flanken mit dem Oszi an und ändere die 
Pullups ggf.
Gast #5269791
Lesenswert?

M. K. schrieb:
> I2C war ursprünglich nur für die Kommunikation von ICs auf einer Platine
> gedacht.

Nein, eigentlich nicht. Er war für die Kommunikation zwischen den 
Platinen in einem Gerät gedacht. Er sollte die vielen Drähte z.b. 
zwischen dem Bedienteil mit den Stationstasten vorne und dem Hauptteil 
hinten, die sonst mit zentimeterbreiten Flachkabeln oder Kabelbäumen 
aufgebaut waren, reduzieren.

> Natürlich kann man es auch zweckentfremden. Bei DVI: Ist bei
> den 15 M wirklich noch ne vernünftige I2C Kommunikation mit inbegriffen?

Über den I2C Bus wird die Monitorkennung gelesen. Zusätzlich werden auch 
5V Übertragen. Wenn der Monitor alles richtig macht, kann der PC selbst 
dann, wenn der Monitor keine Betriebsspannung hat, seine technischen 
Daten auslesen. Wenn das nicht funktioniert, fällt der PC bei jedem 
Einschalten auf seine default Displayeinstellung zurück. Passiert das 
nicht, funktioniert der I2C Bus.

MfG Klaus
Gast #5269956
Lesenswert?

Jörg W. schrieb:
> Falk B. schrieb:
>>> Einige runter, minimal etwa 4,7 kΩ.
>>
>> I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V.
>
> Würde ich trotzdem nicht völlig ausreizen.

Warum? Wir bewegen uns natürlich sauber in den Recommended operating 
conditions, setze ich mal voraus. Und weil ein niedrigerer Widerstand 
eine höhere Robustheit des Busses bedingt, nimmt man den 
kleinstmöglichen Wert. Das hat keinen Nachteil - der Hersteller 
garantiert uns die Funktion. Aber Vorteile - steilere Flanken, geringere 
Empfindlichkeit gegen Einkopplung.

Ich denke, 2k oder 1k5 sind gute Werte. 1k5 sind nicht teurer als 4k7, 
und der zusätzliche Stromverbrauch ist möglicherweise sogar gleich (wenn 
man schneller kommuniziert, ist man auch schneller fertig).

Die Abwärme ist jedenfalls kein sinnvolles Argument, die 17mW (1k5, 5V) 
pro Leitung tun niemanden weh.
#7799044
Lesenswert?

Guten Abend, Ein Frohes Fest und schöne Feiertage.... ICh habe eine Schaltung mit einem ESP32 und einem IC Si4732 das IC Benötigt 3,3V und ist über einen I2c Bus mit dem ESP32 Verbunden,

dieser Meldet (aus dem Display oben auf dem ESP das er keinen Kontakt mit dem IC hat.... Die Pullup Widerstände habe ich versehendlich (SMD 4r7) anstatt (4K7) genommen... war übernächtigt...mache ich nicht mehr.

Die Richtigen Versorgungs Spannungen IC liegen an, Verbindungen sind Vorhanden, die anderen Teile sind Richtig Verlötet,

meine Vermutung bevor ich den Lötkolben auspacke und anwerfe....könnte der kleine widerstand diesen Fehler verursachen... Ich habe sonnst immmer 4,7K genommen... weiss da jemand rat?

die Linke platine so sollte er Fertig aussehen und Funktioniren. Rechts ist die Anzeige das er keinen Kontakt mit dem SI3545 hat

#7799049
Lesenswert?

Bei einem 6 Jahre alten THread solltest du nichts mehr neues einfügen. Steht ja auch so als Hinweis. Für Farbenblinde sogar in ROT!

Aber ich würde sagen, dass entweder der ESP oder der andere IC sein Leben durch Überstrom ausgehaucht haben. Oder auch beide. Wenn du einen Oszi hast, kannst du das gut messen. Schreibe die beiden als Lehrgeld ab!

#7799082
Lesenswert?

weil ich nach Hilfe gesucht hatte....! dann bin ich hier darauf gestoßen.... und habe angefangen zu schreiben. habe den wink mit dem zu alten thread nicht bemerkt...sorry! aber mal im Ernst....einer oder beide gehimmelt? bei zu kleinen Widerständen? mehr als 3,3 V ist eh nicht vorhanden und ich habe auch einen 9V Block mit weniger als 8V Betrieben da ja alles auf einen 1117 = 3Volt hinaus läuft kann doch eingendlich nix Passiert seina auser die Signale wie ich hier gelesen habe könnten unsauber werden und der ESP kann damit nix mehr anfangen?

#7799141
Lesenswert?

Hans Werner A. schrieb:

bei zu kleinen Widerständen? mehr als 3,3 V ist eh nicht vorhanden

Bei 3,3V und 5x 4k7 fließen 3,5mA. Davon stirbt keine GPIO Ausgangsstufe. 4,7 Ohm dagegen sind bezogen auf die Grenzdaten dagegen faktisch ein Kurzschluss.

Helmut -. schrieb:

Für Farbenblinde sogar in ROT!

Nicht nur farbenblind :-( "Bitte das JPG-Format (nur) für Fotos und Scans verwenden!"

#7799316
Lesenswert?

gemessen habe ich an den I2c Datenleitungen. Der Takt sollte eigenlich vom ESP kommen, der IC hat einen eigenen Quarz wenn der nicht tut ist da auch sense. Ich habe mir mal alle SMd Bauteile Ordendlich Bestellt und keine uralt Smd Teile....genommen... habe schon alle Teile Rausgelötet nur noch der Quarz, IC und 5Volt Regler sind drauf....

#7800631
Lesenswert?

Warum soll ich mich den nicht so geben? Ist doch Schließlich mein Geld oder? diese 5€ an SMD Teilen... machen die Ganz auch nicht Fett. Aber meine Einstellung hat Früchte Getragen! hat den Kopf frei gemacht...mal nicht an diese platine Denken und ab in die Kiste. nun nach den Feiertagen (nicht 5€ ausgegeben...sondern nur 5Cent für 2 Widerstände a 4,7KOhm....das wars..... SDR Empfänger Funktioniert...! Hab nun doch noch ein Weihnachts Geschenk..lieber Spät als gar nicht....

So das wars! wie beendet man diesen Beitrag als Erledigt?

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren