Startseite>Mehr I/O-Ports bereitstellen mit dem PCF8574
Aus Raspberry Pi Geek 03/2016

Mehr I/O-Ports bereitstellen mit dem PCF8574

© Citadelle, 123RF

In Kontakt

Martin Mohr

Fehlen beim Messen ausreichend viele Ports, um die Daten zum RasPi zu führen, dann hilft ein kleiner Baustein weiter.

Dieser Teil unserer Artikelreihe beschäftigt sich mit dem PCF8574, einem 8-Bit-I/O-Baustein für den I2C-Bus. Sie betreiben ihn im Spannungsbereich von 2,6 bis 6 Volt. Der PCF8574 hat drei Adressleitungen, sodass man bis zu acht dieser Bausteine an einem Bus betreiben kann.

Es gibt noch eine Variante des PCF8574, den PCF8574/A. Er ist komplett baugleich, arbeitet aber mit einem anderen Adressbereich. Das ermöglicht es, acht weitere Bausteine am Bus zu betreiben. Der PCF8574 nutzt die Adressen 0x20h bis 0x27h; den PCF8574/A sprechen Sie über die Adressen 0x38h bis 0x3Fh an.

Den PCF8574 gibt es in verschiedenen Gehäuseformen; meist kommt das DIP16-Gehäuse zum Einsatz, das sich in Testaufbauten am einfachsten handhaben lässt. Abbildung 1 zeigt das Pinout des PCF8574/A.

Abbildung 1: Das Pinout des PCF8574/A.

Abbildung 1: Das Pinout des PCF8574/A.

Die I/O-Pins des PCF8574 weisen eine kleine Besonderheit auf, die einem schlaflose Nächte bereitet, wenn man sie nicht kennt: Er verwendet “quasi-bidirektionale I/O”. Das bedeutet vorderhand, dass Sie einen I/O-Port sowohl für Eingabe als auch Ausgabe verwenden dürfen, ohne dies vorher auszuwählen. Anders als bei der GPIO-Schnittstelle des RasPi müssen Sie also vor dem Einsatz nicht definieren, ob Sie einen Port als In- oder Output verwenden wollen.

Beim PCF8574 verwenden Sie einen I/O-Pin als Input, indem Sie ihn einfach auf logisch 1 setzen. Lesen Sie diesen Port aus, erhalten Sie eine logische 1 oder 0 – je nachdem, wie Sie ihn beschaltet haben. Warum gibt es bei einem solchen Aufbau keinen Kurzschluss? Die Lösung findet sich im Datenblatt, genauer gesagt im Schemadiagramm der I/O-Ports (Abbildung 2).

Abbildung 2: Auszug aus dem Schemadiagramm der I/Os – wichtig ist hier die 0,1-mA-Konstantstromquelle.

Abbildung 2: Auszug aus dem Schemadiagramm der I/Os – wichtig ist hier die 0,1-mA-Konstantstromquelle.

Hier findet sich eine Konstantstromquelle, die den maximalen Ausgangsstrom bei einer logischen Eins auf maximal 0,1 Milliampere begrenzt. Um eine logische Null an dem Port zu erhalten, müssen Sie den Port also lediglich auf Masse legen. Die Konstantstromquelle sorgt dafür, dass es keine Kurzschlüsse gibt. Dabei handelt es sich um das reguläre Verhalten der I/O-Pins, sie stehen nach dem Einschalten alle auf logisch 1.

Wie verhält sich diese Schaltstufe nun als Output? Kurz gesagt wie ein Open-Drain-Output. Bei logisch 0 kann die Transistorstufe leicht 20 Milliampere gegen Masse fließen lassen, also in den Chip hinein. Das bringt eine LED zum Leuchten.

Bei logisch 1 gerät die Lage dann etwas anders: Der Strom aus dem Port heraus ist auf 0,1 Milliampere begrenzt. Das bedeutet, dass Sie damit nur relativ hochohmige Eingänge ansteuern können. In diesem Betriebsmodus lässt sich eine LED noch nicht einmal zum Glimmen bringen. Daher sind die Ports im Output-Betrieb so gut wie immer als Open Drain zu verwenden.

Eine letzte Anmerkung zur Ausgangsstufe: Die zwei in Sperrrichtung eingebauten Dioden sollen den Halbleiter vor negativen Spnnungsspitzen (induktiven Verbrauchern) und Verpolung schützen.

Damit ist aber auch schon alles gesagt, was Sie über den PCF8574 wissen müssen. Ansonsten benimmt sich der Baustein, wie Sie es von einem guten I/O-Chip erwarten dürfen. Im Datenblatt [1] finden sich noch viele zusätzliche Informationen, die helfen, den PCF8574 in einer Schaltung zu verbauen.

Aufbau

Zur Programmierung kommt auch hier wieder die in Teil 6 der Reihe vorgestellte Java-Umgebung zum Einsatz. Als Hardware für das Output-Beispiel fungieren dabei zwei 7-Segment-Anzeigen. Das zeigt sehr deutlich, dass die Ausgangsstufe des PCF8574 bei sehr hochohmigen Digitaleingängen des CD4543 saubere Spannungspegel erzeugt. Beim CD4543 handelt es sich um einen sehr flexiblen Decoder von BCD zum 7-Segment-Element, ein Blick in das Datenblatt [2] lohnt sich auf jeden Fall.

Im Input-Beispiel kommt ein Achtfach-“Mäuseklavier” zum Einsatz, mit dem Sie die I/O-Ports des zweiten PCF8574 auf Masse ziehen. Die acht Pullup-Widerstände sind bei den speziellen quasi-bidirektionalen I/Os des PCF8574 nicht unbedingt nötig, gehören aber zu einem guten Schaltplanlayout dazu, da Sie die I/Os sicher auf High-Pegel ziehen.

Die Abbildung 3 zeigt den fertigen Versuchsaufbau. Alle hier verbauten Komponenten erhalten Sie bei den bekannten Versandhändlern wie etwa Reichelt [3]. Abbildung 4 und Abbildung 5 zeigen die Schaltpläne für den Input- und den Output-Baustein. Die Schaltpläne liegen im gEDA-Format mit auf der Heft-DVD.

Abbildung 3: Der Versuchsaufbau.

Abbildung 3: Der Versuchsaufbau.

Abbildung 4: Schaltplan für den Input.

Abbildung 4: Schaltplan für den Input.

Abbildung 5: Schaltplan für den Output.

Abbildung 5: Schaltplan für den Output.

Nachdem Sie alles zusammengebaut haben, testen Sie sicherheitshalber erst einmal mittels I2cdetect, ob alle Bausteine am I2C-Bus vorhanden sind. Mit den Werkzeugen I2cset und I2cget nehmen Sie gleich einen ersten Funktionstest vor (Listing 1).

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 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$ i2cset -y 1 0x3f 0x99
$ i2cget -y 1 0x20
0x00
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland