I2C-Reichweite steigern mit dem P82B715

© Alexey Zarodov, 123RF

Fernverkehr

Zwar wurde I2C eigentlich für die interne Gerätekommunikation konzipiert, doch mithilfe geeigneter Extender-Bausteine überbrückt der Bus Distanzen bis zu 100 Metern.

Was beim I2C-Bus im Kleinen gut klappt, eignet sich nicht für die Fernkommunikation. Die begrenzte Reichweite des Busses liegt unter anderem daran, dass die maximale Kapazität mit allen Komponenten nicht mehr als 400 Picofarad betragen darf. Je nach Qualität der verwendeten Leitungen entsprechen diese 400 pF nur einigen Metern – das Verhalten langer elektrischen Leitungen ähnelt bekanntlich jenem von Kondensatoren: Zwischen parallel verlaufenden Leitungen baut sich immer ein elektrisches Feld auf, das wie ein kleiner Kondensator wirkt.

Die sogenannte Eigenkapazität der Leitung fällt nicht besonders hoch aus, steigt aber mit der Länge des Kabels stetig an. Übertragen Sie nun Signale über eine solche Leitung, kommt es im ungünstigen Fall zum kompletten Auslöschen der Signale. Der Baustein P82B715 verringert die Kapazität, die eine Leitung auf dem Bus verursacht, um den Faktor 10. Verwenden Sie hochwertige Leitungen mit einer geringen Eigenkapazität, holen Sie sogar noch etwas mehr Reichweite heraus. Senken Sie dann zusätzlich die Geschwindigkeit der Datenübertragung etwas ab, bekommen Sie wieder einige Meter mehr Reichweite geschenkt.

P82B715

Beim P82B715 handelt es sich um einen sogenannten I2C-Bus-Extender, was bedeuten soll, dass er sich dazu eignet, die Reichweite des Busses zu erweitern. Er kommt in einem für Bastler einfach zu handhabenden DIL8-Gehäuse. Abbildung 1 zeigt die Pinbelegung des Bausteins. Die folgende kleine Eselsbrücke hilft Ihnen unter Umständen, die Anschlüsse nicht zu verwechseln: Sx und Sy schließen Sie an den vorhandenen seriellen Bus an; Lx und Ly sind für die Leitung vorgesehen.

Abbildung 1: Da der P82B715 in der Regel in einem kompakten Gehäuse daherkommt, fällt es leicht, den Baustein in eigene Projekte zu integrieren.

Die zwei entsprechenden Buffer weisen denselben Aufbau auf – es ist daher gleichgültig, welchen von beiden Sie für Daten- (SDA) und Taktleitung (SCL) verwenden. Der P82B715 eignet sich für den Einsatz mit vielen seriellen Bussen und beschränkt sich keineswegs ausschließlich auf den I2C-Bus. Daher reicht seine Betriebsspannung von 3 bis 12 Volt, er unterstützt Busse mit bis zu 400 kHz Taktrate. Weitere Informationen finden sich auf den 23 Seiten des P82B715-Datenblatts [1].

Erste Versuche

Zunächst einmal benötigen Sie einen kleinen Testaufbau, mit dem Sie überprüfen, ob der I2C-Bus fehlerfrei arbeitet. In Teil 10 dieser Reihe [2] finden Sie eine entsprechende Vorlage – das Setup kommt in diesem Teil des Workshops wieder zum Einsatz.

Die Hardware, mit der Sie leicht prüfen, ob der I2C-Bus fehlerfrei arbeitet, besteht aus zwei PCA8574-Bausteinen (Abbildung 2). Wir haben die zwei Chips mit böser Absicht auf zwei Breadboards verteilt: So können wir später zum Testen des P82B715 rund 100 Meter Kabel zwischen die zwei Platinen schalten.

Abbildung 2: Ein erster Testaufbau beschränkt sich auf zwei Breadboards.

Abbildung 3 zeigt den dazugehörigen Schaltplan, den Sie auf der Heft-DVD im gEDA-Format finden. Die zwei PCA8574-Bausteine erhalten die I2C-Adressen 0x20 und 0x21. Ein Baustein arbeitet im Input-Betrieb, der andere übernimmt die Ausgabe. Auf dem Ausgabebaustein lassen wir über ein kleines Programm ein einfaches Lauflicht ausgeben.

Abbildung 3: Der Schaltplan zum Testaufbau aus Abbildung 2.

Bevor es ans Programmieren geht, sehen wir noch kurz mit I2cdetect auf dem Bus nach, ob sich unsere zwei PCA8574 auch ordentlich melden (Listing 1). Ist das nicht der Fall, müssen Sie den Hardware-Aufbau noch einmal überprüfen. Wir gehen im Folgenden davon aus, dass die Grundschaltung fehlerfrei arbeitet.

Listing 1

 

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Unser Testprogramm liest den Wert vom Input-Baustein und gibt ihn zur Kontrolle auch auf der Konsole aus (Listing 2). Um für etwas Abwechslung zu sorgen, verwenden wir in diesem Teil des Workshops weder Java noch C, sondern ein schlichtes Bash-Skript. Es startet mit einer Endlosschleife für unser Lauflicht. Danach folgen zwei Schleifen: Die erste For-Schleife zählt hoch, die zweite wieder herunter. Um das Testskript zu beenden, müssen Sie es durch einen Druck auf [Strg]+[C] abbrechen.

Listing 2

 

#!/bin/bash
while [ 1 ]; do
  for((i=1; i<256; i=i*2)); do
    k=$(expr 255 - $i);
    i2cset -y 1 0x20 $k;
    i2cget -y 1 0x21;
    sleep 0.5;
  done
  for((i=64; i>1; i=i/2)); do
    k=$(expr 255 - $i);
    i2cset -y 1 0x20 $k;
    i2cget -y 1 0x21;
    sleep 0.5 ;
  done
done

In der Variablen k stecken die invertierten Werte der Zähler, da wir die Ausgänge des PCA8574 invertiert betreiben. Der Grund dafür wurde schon ausgiebig in Teil 8 dieser Reihe besprochen. Die Befehle i2cset und i2cget übertragen die Werte von den entsprechenden Halbleitern. Mehr gibt es über das kleine Skript eigentlich nicht zu sagen – höchste Zeit für eine erste Versuchsreihe.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

02/2019
Neue Energien

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Scheibchenweise

    Zu den Stärken von Sonic Pi gehört es, mit wenigen Zeilen Code Samples dynamisch auszuwählen und zu zerlegen.

  • Unter Strom

    Für einen kleinen Spannungsmesser wie den INA3221 gibt es viele Einsatzmöglichkeiten. Wir zeigen, wie Sie den flexiblen Baustein richtig verdrahten.

  • Vermittlungsstelle

    Fischertechnik-Modelle bieten sich zum Fernsteuern an. Mit dem Ftduino schlagen Sie die Brücke zwischen dem RasPi und dem Technik-Spielzeug.

  • Durchgeschlängelt

    Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

  • Gesiebt und gefiltert

    Filter und Werbeblocker einzurichten ist besonders auf Smartphones aufwendig. Den eBlocker hingegen schließen Sie einfach nur an Ihren Router an.

  • Es werde Licht

    Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

  • Energiekontrolle

    Der Gesetzgeber erschwert das Direktvermarkten von Strom durch technische Hürden: So muss sich die Einspeisung etwa aus der Ferne abschalten lassen. Der RasPi löst das Problem.

  • H<->2<->-Power

    Gilt es, Energie aus einer regenerativen Quelle zu speichern, erweist sich die Kombi aus einer Brennstoffzelle und dem RasPi als ideale Lösung.

  • Kleine Wolke

    Lokale Cloud-Lösungen im Heimnetz finden immer mehr Nutzer. Mit dem RasPi und Seafile haben Sie eine Lösung zur Hand, die selbst professionellen Ansprüchen genügt.

  • Planvoll verdrahtet

    Die Leiterplattendesign-Software KiCad leistet trotz einer etwas umständlichen Bedienung auch Hobbybastlern gute Dienste.