i2c über längere Strecke

Der i2c Bus ist ja eigentlich für kurze Strecken auf der Platine gedacht – wie kann man die Strecke ausweiten? – zb. um die Temperatursensoren verlässlich anzubinden?

Es gilt 2 Hauptprobleme zu bekämpfen:

  • EM – Störungen durch elektromagnetische Signale
    • wenn das Relais direkt daneben ein 220V Stromkreis trennt, dann kann es zu Spikes kommen, die das eine oder andere Bit umdrehen. Das führt zu üblen Bugs, die schwer nachzuvollziehen sind.
  • Kapazität der Kabels
    • 2 Leiter getrennt durch ein Isolator ergibt… ein Kondensator. Deshalb wird aus dem Rechtecksignal ein „Haifisch“ sobald die Kapazität zunimmt (der Kondensator „lädt auf“)
    • „Erlaubt“ wären 400 pF bei 100/400Mhz

Nach einem Wochenende ausgiebigen Tests und viel Gecrimpe/Löterei habe ich eine Lösung für mich:

  • zu Problem 1: CAT 5/6 Kabel verwenden – und zwar geschirmt!
    • Cat 5e hat etwa 52 pF  pro Meter bei 800Mhz. Ich verwende nur 100-400 Mhz und dazu noch unbalanced.  Cat5 wird also bis ca. 6m sicher noch hinkommen, wenn alles sauber gemacht wird.
    • Keinesfalls Data und Clock verdrillen!
    • in jedes twisted pair eine Masse reinnehmen!
    • die Schirmung nur auf einer Seite (Arduinoseitig) auf Masse legen
  • zu Problem 2: Pullups
    • Je stärker der Pullup, desto steiler die Flanke (siehe Skizze unten)
    • Gleichzeitig je stärker der Pullup, desto höher die Spannung die das i2c Gerät runterziehen muss 
    • Am besten mit dem Ozilloskop austesten… irgendwo zwischen 1k und 10k haut es hin
  • falls eine weitere Strecke überbrückt werden muss: Clock runterbremsen
rot= gewünschtre Signal, blau mit kleinem Pullup, grün mit großem

Als Verbinder verwende ich normale RJ45 Stecker, damit sich die Sensoren scnnell tauschen lassen. Diese Belegung hat sich als robust erwiesen:

  • Orange = Power 
  • Blau = Masse
  • Grün = Data 
  • Braun = Clock
  • alle anderen Kabel auch auf Masse

Kommentare

2 Antworten zu „i2c über längere Strecke“

  1. […] der Sensoren kann natürlich jeder machen wie er will – ich habe beim Testen mit LAN Kabeln einige Sachen dazugelernt. Ich verwende aktuell LAN Kabel und Rj45 Stecker um im Ager schnell einen Sensor tauschen zu […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.