I2C-Pegelanpassung 3,3 / 5V für Raspberry PI

Die GPIO-Schnittstelle des Raspberry PI ist für 3,3V Pegel ausgelegt.

Roboternetz schreibt hierzu:

Die GPIO Pins sind als 3,3V Signale ausgeführt und nicht 5V tolerant. Ein direkter Anschluss an TTL Level kann zur Zerstörung führen!
(http://www.rn-wissen.de/index.php/Raspberry_PI:_GPIO)

Um gefahrlos die Pins

  • Pin 3 = GPIO 0 (SDA)
  • Pin 5 = GPIO 1 (SCL)

an einen 5V I2C-Bus anzuschließen haben wir einen I2C-Repeater entwickelt der die Pegelanpassung von 3,3V auf 5V übernimmt.

Der eingebaute I2C-Repeater PCA9517 erledigt den sogenannte Level-Schift (Voltage level translation) auf die höhere Spannung.

Dadurch erhalten Sie zwar keine richtige galvanische Trennung zwischen der Versorgungsspannung des Raspberry PI und der I2C-Peripherie Aber es ist zumindest ein Bauteil dazwischen, welches die empfindlichen GPIO-Pins vor höheren Spannungen schützt.

 

Bausatz I2C-repeater für Raspberry PI

Bausatz I2C-repeater für Raspberry PI

Alle SMD-Bauteile sind auf der Platine bereits aufgelötet.

Beim Bausatz liegen die beiden Stecker lose bei, bei der komplett fertigen Platine sind auch diese bereits verlötet und der GPIO 17 auf Pin 11 überbrückt.

Damit ist es möglich ein INT-Signal von einer I2C-Eingabekarte direkt abzufragen.

Den Schaltplan und das Datenblatt zum I2C-Repeater-PI finden Sie im Downloadbereich.

Datenblatt (1 Seite) I2C-Repeater-PCA917-PI_db.pdf (396 kB)
Schaltplan (1 Seite) I2C-Repeater-PCA917-PI_sp.pdf (23 kB)

Der Bausatz und die komplett fertige Platine können im Onlineshop unter www.horter-shop.de bestellt werden

I2C-Repeater mit level translation von 3,3 auf 5V

I2C-Repeater mit level translation von 3,3 auf 5V

 

I2C-Repeater Vorder- und Rückseite

I2C-Repeater Vorder- und Rückseite

 

I2C-Repeater Version 2 für Raspberry-PI und Banana-PI

Die neue Version 2 des Repeaters hat eine zusätzliche Taste und kann auf den Raspberry-PI mit Kühlkörper gesteckt werden.

Den Schaltplan und das Datenblatt zum I2C-Repeater-PI Version 2 finden Sie auch im Downloadbereich.

Datenblatt  (1 Seite) I2C-Repeater-PCA9517-PI+T_db.pdf (218 kB)
Schaltplan (1 Seite) I2C-Repeater-PCA9517-PI+T_sp.pdf (27 kB)

 

 

Speichere in deinen Favoriten diesen permalink.

57 Kommentare

  1. Hallo Herr Horter,

    ich habe vor langer Zeit diverse I2C Komponenten bei Ihnen gekauft und diese laufen bis heute Störungsfrei .. vielen Dank dafür.

    Ich bin gerade dabei den Raspberry durch einen ESP8266 (Tasmota Firmware) zu ersetzen. Dies ist von der Steuerung einfach und kostengünstiger.
    Der ES8266 ist wie der Raspberry eigentlich nicht 5V fähig, leider hatte ich dies übersehen und Ihre I2C Komponenten direkt an den ESP ohne die Pegelanpassung angeschlossen. Ich musste feststellen, dass es trotzdem ohne Probleme funktioniert.
    Ich wollte diesen Fehler nun eben beheben und die Pegelanpassung einbauen.
    Mit dem eingebauten Modul musste ich feststellen, dass dies nun nicht mehr funktioniert. Wenn ich das Modul wieder ausbauen funktioniert es problemlos.

    Haben Sie irgendeine Idee?

    Vielen Dank
    Helmut

  2. Hallo Herr Horter,
    wenn ich das richtig verstanden habe, kann der RPi4 man bis zu 6 i2C Busse am 40 Pin Header definieren, über einen „dtoverlay“ Eintrag in der config.txt.

    Kann ich für diese Busse auch den Repeater einsetzen?
    Wenn ich z.B.
    dtoverlay=i2c-gpio,bus=7,i2c_gpio_sda=10,i2c_gpio_scl=9
    dtoverlay=i2c-gpio,bus=6,i2c_gpio_sda=19,i2c_gpio_scl=26
    dtoverlay=i2c-gpio,bus=5,i2c_gpio_sda=16,i2c_gpio_scl=20
    dtoverlay=i2c-gpio,bus=4,i2c_gpio_sda=17,i2c_gpio_scl=27
    dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=23,i2c_gpio_scl=24
    definiere, habe ich alle 6 möglichen Busse definiert.
    Wie würde ich die Repeater anschließen? (SDA und SCL dürften klar sein)
    Kann ich auch die Interrupts umdefinieren?

    • Hallo,
      der INT wird nur benötigt, wenn Sie die Eingänge Ereignis getriggert lesen wollen.
      Wenn Sie die Eingänge sowieso zyklisch lesen, können Sie den INT einfach weg lassen.
      Wenn Sie den INT nutzen möchten, können Sie den auf jeden beliebigen freien GPIO-Pin legen.
      Den GPIO einfach einen 4,7 kOhm Widerstand gegen +3,3V anlegen. Der INT schaltet den Minus durch und zieht den GPIO auf LOW.

      Sie können auch die Repeater-Testplatine für mehrere I2C-Stränge am Raspberry-Pi nutzen.
      horter-Shop Repeater Testplatine

      I2C-Repeater Testplatine

      Gruß, JH

      • Kann man den Bus auch galvanisch trennen, so dass man beim Slave die 5V über ein separates Netzteil einspeisen kann?

        • Sie können an der Klemme Vs2 ein zweites Netzteil für jeden Strang verwenden. Eine Galvanische Trennung ist das nicht, weil die Massen noch verbunden sind.
          Es bietet aber dennoch einen gewissen Schutz für den Raspberry-Pi oder dem Master weil Überspannungen nicht gleich auf die Gegenseite durchschlagen. Ein weiterer Vorteil ist, dass ein Kurzschluss auf der VS2-Seite den Raspberry nicht neu booten lässt.

          Wenn es wirklich eine richtige galvanische Trennung sein soll, bei dem auch der GND keine elektrische Verbindung zum Slave hat müssen Sie den I2C-Isolator einbauen.

          I2C-Isolator Testplatine

          I2C-Isolator zur galvanischen Trennung von I2C-Bussen

  3. Hallo Hr Horter,
    kann Ihr I2C levelconverter auf einem Pi3 verwendet werden, auf dessen I2C lokal bereits eine RTC sitzt?

    Ziel wäre ggf ADC in (und DAC out) in FHEM auf dem Pi3;
    3x ADC in 0…5V in Temp umrechnen und in FHEM protokollieren, 3 x DAC out 0…5V.

    Dank und Gruss

  4. Hallo Herr Horter!

    Ich habe beim „I2C-Repeater mit Taste für Raspberry PI“ das Problem, dass auf dem GPIO17 kein Signal durchkommt. (Bei mir war die Lötbrücke bereits verlötet)
    Wenn ich jedoch den Taster drücke, kommt ein Signal auf GPIO4 durch.

    Ich hab es mit einem kleinen Python Programm (gpiozero library) getestet wo ich auf einen „Button-pressed“ event reagiere.
    Btn -> OK
    INT -> nicht OK

    Sollte sich der INT und der Button gleich verhalten? (Bis auf die unterschiedlichen Pins natürlich).

    Vielen Dank.
    Markus

  5. Hallo Herr Horter,

    ich habe den Repeater schon seit längerem im Einsatz und es funktioniert mittlerweile auch alles wie es soll. Jetzt ist mir jedoch aufgefallen, dass die rote SMD-LED die sich auf dem Repeater befindet sporadisch leuchtet, nicht immer, meistens kurz nach dem einschalten des RPi und geht dann nach 2-3 Minuten aus. Leider konnte ich bisher nichts genaues über die LED am Repeater finden.
    Welche Funktion hat diese LED?

    Gruß Eric

    • Hallo,
      die LED zeigt an, wenn sich an einer Eingangskarte der Signalzustand eines Einganges geändert hat.
      Wenn die Karte vom Master eingelesen wird, geht die LED wieder aus. Das kurze aufblitzen der LED zeigt Ihnen, dass der Master arbeitet.
      Beste Grüße, JH

  6. Hallo Herr Horter,
    in dem Bild oben (https://www.horter.de/blog/wp-content/uploads/2014/05/raspberry-repeater-v2.jpg) werden durch die Repeater-Platine zwei Kontakte verdeckt. Dies bekomme ich ja auch nicht dadurch gelöst, dass ich statt der gelieferten 26-poligen Standard-Buchse die verlängerte 40-Polige (https://www.horter-shop.de/de/i2c-repeater/214-pfostenleiste-stapelbar-40pol-fuer-raspberry-pi.html) auflöte, den die bekomme ich ja auf die Platine gar nicht drauf, wegen fehlender Löcher. Oder verstehe ich was falsch? Muss ich dann lieber die Testplatine nehmen?
    Gruß, Tobias S.

    • Hallo Tobias,
      danke für den Hinweis.
      Sie haben recht. Die Leiterplatte ist an der Stelle zu groß und verdecken die Pins 27 und 28.
      Auf der Leiterplatte verlaufen an dieser Stelle keine Bahnen, so dass diese ein wenig abgefeilt werden kann,
      wenn die Pins benötigt werden.
      Das gleiche gilt, wenn die 40-polige „stapelbare Pfostenleiste“ eingelötet werden soll.

  7. Jan-Bodo Möller

    Hallo Herr Horter,
    ist es möglich ein i2c Display welches mit 3 Volt betrieben wird an dem Bus anzuschließen?
    Der Aufbau ist wie folgt:
    Pi Zero, Repeater, Digitale Eingangskarte. Zusätzlich würde ich aber noch ein kleines OLED Display am Bus betreiben wollen.
    Mit freundlichen Grüßen
    Jan-Bodo Möller

  8. Hallo,
    ich habe eine Steuerung für mein Aquarium gebaut. Nun möchte ich noch einen 1-wire Temperatursensor anbinden, nur wird der GPIO4-Pin, welcher laut Tutorials im Internet für 1-wire benutzt wird, bereits von Ihrer Repeater-Platine belegt (Taste).
    Besteht eine Möglichkeit, trotzdem einen 1-wire Sensor anzubinden?

    Mit der Bitte um rasche Hilfe 🙁

  9. Hallo,
    wie verwaltet man den Interrupt von mehreren Eingangskarten am I2C? Werden sie nur parallel auf den INT des Repeaters gelegt?
    Danke

    • Bei Parallelschaltung müssen Sie alle Eingangskarten auslesen wenn ein INT-Signal ansteht.
      Ist aber trotzdem Sinnvoll um den Bus-Trafik zu reduzieren.

  10. Hallo
    Ich habe die I2C-Repeater Version 2 für Raspberry-PI.
    Ich will sie mit dem Raspberry Pi 3W in meinem Wohnmobil verbauen.
    Ich habe von Adafruit einen INA219 DC Current Sensor mit I2C Schnittstelle,
    der soll mit einem Cat5-Kabel in ca. 4m Entfernung betrieben werden.
    Wie soll die Belegung de Cat5-Kabels aussehen?
    Ich habe mir auch 2 I2C-Repeater-Testplatinen gekauft.
    Soll ich sie dafür schon einsetzen oder erst wenn ich den I2C-Bus erweitere?
    Gruß Fritz

    • Hallo Fritz,
      vier Meter sollten mit dem Repeater auf dem PI möglich sein.
      Das CAT-Kabel würde ich so auflegen wie es Philips im Datenblatt des I2C-Buffers P82B96 vorschlägt.
      SDA mit +5V paarweise und SCL mit GND paarweise.

      Schreib doch mal ob das so geklappt hat.
      Längere Distanzen können auch mit zwei I2C-Buffer-Testplatinen überbrückt werden.
      Im Wohnmobil bzw. Caravan hat man ja 12V zur Verfügung den der I2C-bidirectional Bus Buffer braucht.
      Hier noch der Link zur I2C-Buffer Testplatine im Onlineshop

  11. Hallo Herr Horter,

    ich kann den Repeater „I2C-Repeater V2 für Raspberry PI “ im Shop nicht finden.
    Gibt es den überhaupt, zumindest finde ich im Downloadbereich die Doku dazu 🙂

    Nach der Logik sollte der Repeater und weitere Baugruppen auf den Lemaker Guitar auch passen bzw. funktionieren? Kommt ja quasi vom gleichen Entwickler wie die Bananas…

    Für mein vorhaben bräuchte ich genau diesen Repeater. ( Führerstandbau f. Elok )

    Gruß
    Michael S.

    • Hallo Michael S.

      es gibt nur noch den Repeater in der Version V2.
      Gegenüber der Version 1 ist lediglich der 2-polige Stecker ST-3 hinzu gekommen.
      Hier kann bei Bedarf die 5V Spannung vom Raspberry-PI für ein Display oder andere Peripherie abgegriffen werden.

      Die Kontakte zu den GPIOs wurden nicht verändert.

      Schicken Sie mal bitte einen Link zum Thema „Führerstandbau f. Elok“.

      Beste Grüße
      J. Horter

      I2C-Repeater V2
      Schaltplan zum I2C-Repeater V2

  12. Hallo Herr Horter,

    gibt es Erfahrungen (Links) mit diesem Repeater in Verbindung mit 8-fach Input bzw. Output-Karten und einer Anbindung an openHAB2?

    Das wäre für mich die perfekte Möglichkeit Eltako-Komponenten (Dimmer, Stromstossschalter) anzusteuern.

    Danke
    Gruß
    Chris W.

    • Hallo Chris W.
      unsere Module laufen unter openHAB2.
      Wir sind gerade dabei einen Blogbeitrag zu diesem Thema zu erstellen.
      Falls Sie vorab Infos brauchen melden Sie sich bitte per Mail.
      Gruß, J. Horter

  13. Hallo,
    kann ich über JP2 auch 1 wire Sensoren anhängen?
    Gruss Markus

    • mit dem Repeater erfolgt die Pegelanpassung des GPIO-2 (SDA) und des GPIO-3 (SCL).
      Wenn Sie in Ihrem Programm diese Ports als 1-wire definieren können geht das selbstverständlich.
      Sie können mit unserer I2C-Repeater Testplatine auch andere GPIO-Pings wandeln.
      http://www.horter-shop.de I2C-Repeater-Testplatine
      Universeller I2C-Repeater / Pegelanpassung 3,3V 5V für zwei Kanäle

  14. Hallo,

    Does this module work with the newer Raspberry Pi 3 B model?

    Thanks,
    Jonathan

  15. Hallo,

    ich bin vollkommen neue auf dem Gebiet Raspberry. Deshalb meine Frage:
    Kann ich mit I2C-Schnittstelle meine 3,3V auf einen 5V Pegel erhöhen um damit direkt mit einer 5V Eingangskarte von einer SPS zu kommunizieren?
    Ich möchte nämlich Ausgänge des Raspberry an meine SPS weitergeben.

    Vielen Dank vorab!

  16. Hallo Herr Horter,

    können Sie mir sagen wie ich den Taster an GPIO4 programmiere das mein Raspberry Pi 3 herunter gefahren wird und wie die Programmierung aussehen müsste wenn ich statt eines Schließers einen Öffner verbauen würde.

    MfG
    Patrick

    • Hallo Patrick,

      im Netz gibt es eine Menge Programmbeispiele wie der PI auf einen Signalwechsel an einem GPIO-Pin heruntergefahren werden kann.

      Z.B. im deutschen Raspberry Forum der Beitrag „Hoch und runterfahren mittels Taster“
      Der Taster ist bei unserem Repeater der GPIO4.
      Die LED ist bei unserem Repeater der GPIO27.

      Das Beispielprogramm muss entsprechend angepasst werden.
      Im Beispiel: „# watch LOW level on pin 5 to enter sleep mode“ -> Bei uns PIN 4
      Im Beispiel: „Status led on pin7“ -> bei uns PIN 27

      Die Pins im Beispielprogramm an allen Stellen ändern und mit der Anleitung weiter machen.

      Wenn der Taster ein Öffner werden soll muss der Eingang auf HIGH abgefragt werden.
      In diesem Fall die Programmzeile

      while True:
      if not (GPIO.input(4)):
      ...

      geändert werden in

      while True:
      if (GPIO.input(4)):
      ...

      Viel Erfolg 🙂

  17. Hallo Herr Horter,
    ich versteh das mit denn Lötbrücken nicht ganz.
    für was benötige ich die die auf gpio17 geht???
    ich möchte das teil in Zusammenhang mit codesys verwenden.
    und für was ist die LB2?? versteh ich das richtig, das wenn die gesetzt ist ich mit einem 5v Netzteil welches ich auf 5V bei der der Platine geklemmt ist denn raspberry versorge??
    oder kann ich denn raspberry auch über st3 versorgen und die Spannung kommt auch die 5V von der Platine??

    Grüsse Matthias

    • Hallo Matthias,

      Lötbrücke LB1:
      Wenn Sie im Programm wissen möchten ob sich an den Signalen der Digitalen Eingangskarten etwas verändert hat, müssen Sie die Lötbrücke schließen.
      Codesys fragt die Eingangskarten zyklisch ab. In diesem Fall brauchen Sie die Lötbrücke nicht und können den GPIO17 anderweitig nutzen.

      Lötbrücke LB2:
      Diese Lötbrücke verbindet die 5V vom PI mit den 5V der I2C-Baugruppen.
      LB2 geschlossen: Versorgung der I2C-Baugruppen über das Raspberry-Netzteil.
      Vorteil: Nur ein Netzteil notwendig
      Nachteil: Ein versehentlicher Kurzschluss an den Baugruppen schaltet unmittelbar den Raspberry ab.

      LB2 offen: Versorgung der I2C-Baugruppen mit eigenen Netzteil.
      Vorteil: Ein Kurzschluss an den Baugruppen stört nur die IO-Karten. Der Raspberry läuft weiter.
      Nachteil: Sie brauchen ein zweites 5V-Netzteil.

      • Hallo Herr Horter,

        würde ich bei geschlossenem LB2 und Kurzschluss an den Baugruppen den Raspberry auch beschädigen, oder schaltet er sich nur ab?

        Gruß, Frank

        • Hallo,
          so lange Sie nicht eine höhere Spannung als 5V anschließen fährt der PI nur runter und startet ggf. wieder wenn der Kurzschluss behoben ist.

  18. Hallo,

    Ich habe einen STM32F4 DISCOVERY und es hat einen Ausgangsspannung von 3,3 V und ich muss brauche 5V Ausgangsspannung, wäre I2C-Pegelanpassung 3,3 / 5V für Raspberry PI das Richtige Bauteil dafür

  19. Hi Mr JH ,
    i have a question.
    Can i install Adafruit 16-Channel 12-bit PWM/Servo Driver – I2C interface – PCA9685 Board (https://www.adafruit.com/product/815) on I2C H & K Bus ( 5 V powered)?
    I am waiting your answer.

    Thanks

    Best Regard

    Scendoni Andrea

    • Hello Andrea S.

      yes, you can connect the 12-bit PWM/Servo Driver to the 5V Bus.

      in the discription of the product is written
      „It is 5V compliant, which means you can control it from a 3.3V microcontroller and still safely drive up to 6V Outputs“

      Best wishes
      JH

  20. Benötigt werden folgende Pins: #11 (GPIO 1; wegen Auswahl Betriebsart fürs Display), #19 (MOSI), #21 (MISO), #23 (CLK), #24 (SS Kanal 0) und #26 (SS Kanal 1)

    • so könnte eine Schaltung aussehen, welche die Pegelanpassung der SPI-Schnittstelle vom Raspberry PI von 3,3V auf 5V macht.
      Der bi-directional logic level converter verwendet den N-Kanal FET BSS138
      Hier schon mal das Layout der Platine und den Schaltplan als pdf
      Falls mehrere Leute Interesse an dem SPI-Level Konverter haben kann ich das Produkt mit in das Programm aufnehmen.

      Platinenlayout SPI Levelkonverter

      • Hallo Herr Horter!

        Habe ein Projekt mit I2C Display und einem PCF8574 am RPi2 zum Laufen gebracht. Dabei verwende ich bisher einen einfachen Level Konverter wie den von SparkFun, um die 5V Welt an den 3V3 RPi anzudocken.Funktioniert soweit.

        Bei einem Erweiterungsvorhaben fiel jetzt auf, dass der I2C Bus sehr instabil arbeitet. Soll heißen, nach Neuanordnung der kurzen Kabelwege mit wenigen 10cm sowie Hinzufügen je eines elektrischen Knotenpunktes in der Busleitung kommt es sporadisch zu Aussetzern (sporadisch keine Adressen mehr erkannt bzw. Buskommunikation unterbrochen)

        Frage: kann ich mir Abhilfe vom Repeater versprechen, bzw. welchen entscheidenden Unterschied macht er zum Level Shifter?

        Herzlichen Gruß!

        Gero F.

        • Hallo,
          der Repeater kann mehr als eine einfache Pegelwandlung.
          Der Repeater frischt die I2C-Signale auf und macht auch die Flanken wieder steiler.
          Die 9,90€ für den Repeater-Bausatz sind gut investiertes Geld und spart viel zeit für die Fehlersucht.
          Beste Grüße

  21. Gibt es auch einen solchen Pegelwandler auch für SPI? Ich bräuchte dringend einen…

    • Hallo Jacek,
      sorry, eine Pegelanpassung für die SPI Schnittstelle des Raspberry haben wir noch nicht gemacht.
      Wenn es ein bisschen Zeit hat kann ich mal eine Leiterplatte machen für die Anpassung der 3,3V auf 5V.
      Bitte mal schreiben welche Pins benötigt werden.
      Gruß, J. Horter

Schreibe einen Kommentar

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