i²c ist für Kabellänge unter einem Meter entwickelt, dass es bei dir mit 4 Meter läuft hast richtig Glück, hast du am ende mehrere Geräte oder nur eins angeschlossen?
Ich weiß nicht, wie es sich mit der Kapazität und dem Widerstand verhält, evetuell reicht auf die Länge und mehreren Geräten der Pullup Widerstand nicht.
Es wir geraten den unter Umständen kleiner als 4.7k zu machen… (auf beiden Leitungen SCL & SDA)
Ich geh mal davon aus, du meinst generell: Was kann I²C elektrisch so ab, was sind sinnvolle Kabellängen, Datenraten, Pull-Ups usw.?
Ich halte es übersichtlich und praxisnah.
- Grundlegende I²C-Datenraten
Typische Standard-Modi:
Standard Mode: bis 100 kHz
Fast Mode: bis 400 kHz
Fast Mode Plus: bis 1 MHz
High-Speed Mode: bis 3,4 MHz (seltener im Hobby-Bereich)
Es gibt auch spezielle Erweiterungen (z. B. FM+ für längere Leitungen), aber typischerµµ Arduino/ESP-Alltag ist 100–400 kHz.
Je länger das Kabel und je höher die Kapazität, desto niedriger sollte die Taktfrequenz sein.
- Kabellänge bei I²C
Faustregeln (für typische Bastelumgebungen, z. B. ESP32, Arduino, 3,3/5 V):
Auf dem gleichen Board / kurzer Abstand (bis ca. 20–30 cm)
→ 400 kHz fast immer unkritisch.
Bis ca. 50–100 cm
→ meist noch 100–400 kHz möglich, wenn:
sauberes Kabel (Twisted Pair, z. B. Netzwerkkabel),
gemeinsame Masse,
passende Pull-Ups,
wenig Störungen (kein Motor direkt daneben).
1 m
→ wird kritisch; dann:
Takt stark reduzieren (z. B. 50 kHz oder 10–20 kHz),
saubere Verdrahtung (Twisted Pair, abgeschirmt),
evtl. spezielle I²C-Bus-Extender (P82B715, PCA9615, etc.),
ansonsten lieber andere Protokolle (UART, RS-485, CAN).
Offiziell ist I²C eher für kurze Verbindungen auf einer Platine gedacht. Alles über 1 m ist schon „Trickkiste“.
- Pull-Up-Widerstände (SDA & SCL)
I²C braucht Pull-Ups an SDA und SCL, sonst funktioniert der Bus nicht zuverlässig.
Typische Werte
Für Hobby / Standard-MCUs (3,3 V oder 5 V):
Häufig: 4,7 kΩ pro Leitung
Alternativ:
10 kΩ bei sehr wenigen Devices / langsamer Bus / wenig Kapazität
2,2–3,3 kΩ bei höherer Kapazität oder höheren Geschwindigkeiten (400 kHz+)
Wichtige Punkte:
Die Pull-Ups hängen an der I²C-Versorgungsspannung (z. B. 3,3 V).
Nicht an jedem Modul noch mal starke Pull-Ups lassen – wenn viele Module jeweils 4,7 kΩ haben, wird der Gesamtwiderstand zu klein → hoher Strom / unsaubere Flanken.
→ Oft sinnvoll, auf Modulen Pull-Ups zu deaktivieren (Lötjumper) und nur einen Satz Pull-Ups am Bus zu lassen.
Wie stark dürfen die Pull-Ups sein?
Daumenregel:
Gesamt-Pull-Up-Strom pro Leitung bei Low-Pegel sollte etwa im Bereich 1–3 mA liegen, maximal ein paar Milliampere, sonst müssen die Devices zu viel Strom sinken.
Beispielrechnungen (für 3,3 V):
3,3 V / 4,7 kΩ ≈ 0,7 mA
3,3 V / 2,2 kΩ ≈ 1,5 mA
3,3 V / 1 kΩ ≈ 3,3 mA (geht schon stark in Richtung „zu viel“)
- Kapazität des Busses
I²C ist auf eine maximale Buskapazität von typ. 400 pF ausgelegt (inkl. Leitungen + Eingänge der ICs).
Längere Kabel → höhere Kapazität → langsamere Flanken → Probleme bei hohen Taktraten.
Was heißt das praktisch?
Kurze Leitungen auf einer Platine: kein Problem.
1 m billiges Flachbandkabel: kann schnell ~100–200 pF erreichen.
Mehrere Meter: meist deutlich zu viel für 400 kHz.
Daher gilt:
Je länger das Kabel, desto niedriger die Frequenz und desto stärker (kleinere kΩ-Werte) die Pull-Ups – aber mit Augenmaß.
- Praxis-Tipps
Wenn du konkret was planst (z. B. ESP32 ↔ Sensor im Auto / Camper):
- Takt reduzieren
I²C-Clock testweise auf 100 kHz oder noch weniger stellen (z. B. 50 kHz).
- Pull-Up-Widerstand wählen
Start mit 4,7 kΩ.
Wenn es instabil ist → ggf. auf 3,3 kΩ oder 2,2 kΩ runter.
- Kabelwahl
Twisted Pair (z. B. CAT5/CAT6):
Paar 1: SDA mit GND
Paar 2: SCL mit GND
Damit reduzierst du Störungen.
- Gute Masseführung
GND von Master und Slave(s) muss sauber verbunden sein.
- Bei >1 m Distanz
Takt < 100 kHz
ggf. Bus-Extender (P82B715 etc.) oder gleich anderes Protokoll (z. B. RS-485 mit Modbus).
Wenn du magst, schreib kurz dein konkretes Setup (Spannung, geplante Kabellänge, grobe Umgebung: z. B. Camper, Werkstatt, Motor in der Nähe etc.), dann kann ich dir eine konkrete Empfehlung geben:
sinnvolle Taktfrequenz
konkreter Pull-Up-Wert
und ob I²C da überhaupt noch Sinn macht oder lieber was anderes.