Hallo, ich möchte an einen ESP32 mehrere I2C Bausteine dran hängen. Alle werden mit 3.3V betrieben. Folgende Dinge hängen dran: - OLED 0.42" - 2 x I2C Multiplexer TCA9548 mit einmal 4 und einmal 5 INA219. - Gyroskop MPU6050 - einzelner INA219 Welchen Widerstand sollte ich für SCL und SDA als Pullup verwenden? Und benötige ich extra Pullups nach dem Multiplexer und somit vor den ganzen INA219? Oder reicht einer sehr nah am ESP32? Ich Danke euch.
Jurgen H. schrieb: > Welchen Widerstand sollte ich für SCL und SDA als Pullup verwenden? so klein wie nötig, nicht so klein wie möglich. Hängt von der Kabelkapazität ab. I2C ist nicht für Fernverbindungen und nicht für Sternverkabelung.
:
Bearbeitet durch User
> I2C ist nicht für Fernverbindungen
Man sollte sich manchmal vergegenwaertigen was die Is in I2C
bedeuten, dann klappt auch die Kommunikation mit dem Nachbarn. :-)
Vanye
Ich habe keine Sternverkabelung, sondern auf dem PCB eine 0.3mm Leitung die über das Board geht und von da gehen immer kurze Wege (2-3cm) ab zu den einzelnen Komponenten. gibt es irgendeine Formel um den Widerstand für Pullup zu berechnen? Oder sind die 47k i.O.? P.S. alle Komponenten sind auch einem PCB. (also sehr kurze "Kabelwege")
:
Bearbeitet durch User
47k sind sicher viel zu viel. Bei 3.3 Volt kann man insgesamt locker auf 1.5 bis 2 k runtergehen.
Jurgen H. schrieb: > Oder sind die 47k i.O.? Wenn dann 4k7. Und dann schau dir deine Signale einfach mal mit dem Oszi an ob das passt. Wenn du so unsicher bist. Bei deinem Setup rechne ich da gar nicht mit Problemen. Warum rechnest du überhaupt damit? Sonst keine Probleme mit der Schaltung mehr?
:
Bearbeitet durch User
Jurgen H. schrieb: > Und benötige ich extra Pullups nach dem Multiplexer und somit vor den > ganzen INA219? Warum schaust du nicht im Datenblatt vom TCA9548 nach? https://www.ti.com/lit/gpn/TCA9548A Dort ist im Bild 13 gezeichnet, wie du ihn beschalten musst. Und dann gibt es noch die I2C-Spec UM10204. Dort ist der Bereich für den Pullup angegeben, abhängig vom Mode, von der kapazitiven Last und der Betriebsspannung (Bilder 41 und 42).
Wenn ich als Laie das richtig verstehe, benötige ich keine Pullups an den einzelnen Ausgängen des TCA9548A, da bei mir Vdpum = Vdpx = 3.3V ist. Sehe ich das richtig? bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu interpretieren... Kann mir (als Laie) hier jemand auf die Sprünge helfen um rauszufinden welchen Widerstand ich direkt am ESP32 für die Pullups brauche? Cyblord -. schrieb: > Warum rechnest > du überhaupt damit? Ich rechne nicht wirklich damit, da ich aber noch keine Erfahrung habe beim nutzen mehrere I2C Komponenten wollte ich das hier im Forum einmal nachfragen, da ich eben auch nicht weiß, wie groß der Widerstand für SDA uns SCL sein sollte.
:
Bearbeitet durch User
Viele Boards mit Sensoren haben oft schon Pullups drauf (meist 4k7), die musst Du natürlich berücksichtigen. > Ich habe keine Sternverkabelung, sondern auf dem PCB eine 0.3mm Leitung > die über das Board geht und von da gehen immer kurze Wege (2-3cm) ab zu > den einzelnen Komponenten. Und wie gross ist das Board?
Jurgen H. schrieb: > Und benötige ich extra Pullups nach dem Multiplexer Ich würde erwarten, dass das im Datenblatt dieses Bausteins stehen müsste. Und tatsächlich... Jurgen H. schrieb: > Wenn ich als Laie das richtig verstehe, benötige ich keine Pullups an > den einzelnen Ausgängen des TCA9548A, da bei mir Vdpum = Vdpx = 3.3V ist. Woraus liest du das worin ab? > Sehe ich das richtig? Auf der ersten Seite des DB steht: "External pullup resistors pull the bus up to the desired voltage level for each channel." Als muss explizit "each channel" für sich terminert werden. Und auch bei den "Pin Functions" steht in jeder Zeile explizit: "Connect to VDPU through a pull-up resistor". Jurgen H. schrieb: > bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu > interpretieren... Welches Datenblatt hast du da? Im Datenblatt https://www.ti.com/lit/ds/symlink/tca9548a.pdf ist auf Seite 26 beim Bild 20 Schluss...
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Welches Datenblatt hast du da? Im Datenblatt > https://www.ti.com/lit/ds/symlink/tca9548a.pdf ist auf Seite 26 beim > Bild 20 Schluss... Im von mir verlinkten UM10204 steht das
Stephan S. schrieb: > Viele Boards mit Sensoren haben oft schon Pullups drauf (meist 4k7), die > musst Du natürlich berücksichtigen. Ich habe keine fertigen Boards, sondern die Module direkt auf einem PCB. Somit hat bei mir keines Pullups. Stephan S. schrieb: > Und wie gross ist das Board? Insgesamt ca. 12x10cm. Da ist aber auch noch der ESP32 mit drauf. Lothar M. schrieb: > Und auch bei den "Pin Functions" steht in jeder Zeile explizit: "Connect > to VDPU through a pull-up resistor". Ok, also doch nach jedem Ausgang am Multiplexer noch zusätzlich Pullups. Sehe ich es dann richtig, dass nach jedem Ausgang vom Multiplexer zu den INA219 Sensoren ein 4k7 Pullup für SCL und SDA passt? Für den PullUp am ESP32, wo alle meine I2C Bausteine dran hängen komme ich leide nicht weiter. Da fehlt mir noch das wissen bzw. das geschrieben zu verstehen...
Jurgen H. schrieb: > Sehe ich es dann richtig, dass nach jedem Ausgang vom Multiplexer zu den > INA219 Sensoren ein 4k7 Pullup für SCL und SDA passt? An jeden I2C Bus muss EIN Paar Pullups. Das ist doch nicht so schwer. Jetzt bleibt nur die Frage wie viele I2C Busse hast du mit Multiplexern usw?
Das verstehe ich ja, mir war aber nicht klar, dass hinter dem Multiplexer immer wieder ein "neuer" I2C Bus entsteht. Aber das habe ich verstanden und werden hinter dem Multiplexer für jedes angeschlossene Gerät ein paar Pullups einbauen. Mein Hauptbus mit - OLED 0.42" - 2 x I2C Multiplexer TCA9548 - Gyroskop MPU6050 - einzelner INA219 bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden welchen Wert diese Widerstände bekommen sollen?
:
Bearbeitet durch User
Jurgen H. schrieb: > Sehe ich es dann richtig, dass nach jedem Ausgang vom Multiplexer zu den > INA219 Sensoren ein 4k7 Pullup für SCL und SDA passt? Der passt dann, wenn für die gewählte I2C-Geschwindigkeit und die vorhandenen kapazitiven Lasten die Anstiegszeiten noch dem Datenblatt entsprechen - für die Sensoren und den Mux. Auch die Leitungslängen und eine eventuell störende Umgebung sollten mit einfließen. In vielen Datenblättern und in der I2C-Spec sind die meisten Angaben für 3mA Strom durch den PU zu finden. Ganz so viel muss es nicht sein, aber unter 1mA würde ich nicht gehen. Lothar M. schrieb: > Im Datenblatt > https://www.ti.com/lit/ds/symlink/tca9548a.pdf ist auf Seite 26 beim > Bild 20 Schluss... Dort ist das Bild 13 zunächst mal interessant, wie ich schon schrieb. Und auch die Bilder 14-16. In der I2C-Spec dann die Bilder 41 und 42 für die Wahl des Widerstandswerts. In beiden Dokumenten ist auch ein Gleichung für Rp_min und Rp_max angegeben.
:
Bearbeitet durch User
Jurgen H. schrieb: > 2 x I2C Multiplexer TCA9548 mit einmal 4 und einmal 5 INA219. Du hast das Datenblatt des INA219 angeschaut? Die Multiplexer sind überflüssig, es lassen sich 16 verschiedene I2C-Adressen festlegen!
Jurgen H. schrieb: > Ich habe keine Sternverkabelung, sondern auf dem PCB eine 0.3mm Leitung > die über das Board geht echt? 0,3mm?
:
Bearbeitet durch User
Jurgen H. schrieb: > bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden > welchen Wert diese Widerstände bekommen sollen? Warum willst Du EINEM Bus mehrere Pullups verpassen? Oder meinst Du mit "ein paar Pullups" vielleicht "ein Paar Pullups"? Kleiner aber feiner Unterschied ;-) Ein Paar pro I²C-Bus reicht (mit wenigen Ausnahmen) vollkommen aus. Weiter oben wurden bereits sinnvolle Werte genannt: Stephan S. schrieb: > 47k sind sicher viel zu viel. Bei 3.3 Volt kann man insgesamt locker auf > 1.5 bis 2 k runtergehen. Cyblord -. schrieb: > Wenn dann 4k7. Klaus liefert eine Erklärung für diese Werte: Klaus H. schrieb: > In vielen Datenblättern und in der I2C-Spec sind die meisten Angaben für > 3mA Strom durch den PU zu finden. Ganz so viel muss es nicht sein, aber > unter 1mA würde ich nicht gehen. Je mehr Geräte an demselben Buis hängen, desto größer wird die Lastkapaziät und desto kleiner müssen die Pullup-Widerstände werden. Du solltest allerdings noch kein Problem haben. Mit anderen Worten: Mit 1k bis 10k bist Du vermutlich im grünen Bereich (UM10204, Grafik 41). Erst recht, wenn Du Dich auf den Kernbereich beschränkst und irgendwas so um die 2k-4k7 nimmst.
Jurgen H. schrieb: > bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu > interpretieren Jurgen H. schrieb: > Mein Hauptbus mit > > OLED 0.42" > 2 x I2C Multiplexer TCA9548 > Gyroskop MPU6050 > einzelner INA219 > > bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden > welchen Wert diese Widerstände bekommen sollen? Bild 42 sagt dir, dass die Pullup-Widerstände (bei 3V Busspannung) nicht kleiner als 1k sein sollen. Warum? Weil sonst in einen Busteilnehmer, der den Bus auf Low zieht, mehr als 3mA fließen würden. Bild 41 sagt dir, dass die Pullup-Widerstände nicht größer als 10k (bei 100pF Gesamtlastkapazität) bzw. 5k (bei 200pF Gesamtlastkapazität) sein sollen. Also such dir aus den Datenblättern der obigen Teilnehmer deines Hauptbus, und eventueller Kabel, die Einzellastkapazitäten heraus, addiere sie, und dann benutze Bild 41 (oder die darüber angegebene Formel) um die Maximalgröße der Pullup-Widerstände zu bestimmen. Je kleiner die Pullups desto schöner die steigenden Flanken, aber desto mehr Strom fließt. LG, Sebastian
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.