Elektor
1/2000
Die Anwendung eines I
2
C-Interfaces
hat einige große Vorteile. So verläuft
die komplette Kommunikation über
eine Zweidraht-Verbindung. Das Inter-
face ist sehr zuverlässig, ausreichend
schnell und gut dokumentiert. Darü-
ber hinaus ist eine Vielzahl von I/O-
Komponenten mit I
2
C-Interface erhält-
lich. Vorteile zuhauf, doch die andere
Seite der Medaille? Eigentlich ist nur
ein Nachteil zu nennen: Der steuernde
Computer muß über ein I
2
C-Interface
verfügen, wie es in Elektor schon in
vielen Variationen veröffentlicht
wurde, zuletzt im März ´99. Dabei
handelte es sich um ein I
2
C-Interface
für die parallele Druckerschnittstelle,
das durch DLLs für eine Windows-
Umgebung unterstützt wurde. Aber
auch verschiedene Mikrocontroller-
Systeme, die in Elektor vorgestellt wur-
den, konnten mit einer solchen
Schnittstelle aufwarten.
N
U R M I T D R E I
C
H I P S
Die Schaltung des Interfaces ist in Bild
1 dargestellt. Chef der Schaltung ist der
PCF8574(A), ein Philips-IC, das regel-
mäßig in Elektor-Projekten auftaucht.
Näheres über die Funktionsweise des
PCF8574 ist im Kasten zu finden. An
der linken Seite des ICs sieht man das
I
2
C-Interface, dessen Leitungen sowohl
auf einen Mini-DIN-Stecker (Standard
für I
2
C-Verbindungen) als auch auf
einen Schraubverbinder-Block geführt
sind. Neben den bekannten Steuersig-
nalen SCL und SDA sowie der Versor-
gungsspannung (+5 V und Masse)
wird auch die beim I
2
C-Bus optionale
Interruptleitung INT unterstützt.
Werden mehrere dieser Interfaces ein-
gesetzt, ist die zweite Anschlußvariante
von Interesse. Die Verbinder K2 und K3
sind so angeordnet, daß Interfaces auf
einfache Weise über ein paar kurze
Drähtchen miteinander Kontakt auf-
nehmen können. Neben den I
2
C-Sig-
nalen führt der Verbinderblock auch
die Betriebsspannungsleitungen VCC
und Masse. Auch ein gemeinschaftli-
cher Kathodenanschluß für die Frei-
laufdioden von IC3 (dazu später mehr)
ist vorhanden.
Mit den Jumpern JP1...JP3 wird die
Basisadresse des PCF8574(A) einge-
stellt. Die Basisadresse eines PCF8574
I/O-Interfaces werden
in schöner Regel-
mäßigkeit in Elektor
behandelt. Und doch
hat jede Schaltung
ihre besonderen
Eigenschaften, die sie
mehr oder weniger
einzigartig macht. Die-
ser sehr kompakt auf-
gebaute 8-bit-I/O-Port
besitzt acht gepufferte
Ausgänge, acht Ein-
gänge auf TTL-Niveau
und kommuniziert mit
dem PC über das
bekannte I
2
C-Inter-
face.
22
Entwurf von H. Böhling
8-bit I/O-Port
Steuern über I
2
C-Interface
MIKROPROZESSOREN
lautet $0100xxx (40
h
), während ein
PCF8574A die Basisadresse $0111xxx
(70
h
) verwendet. Die drei Bits hinter
der Basisadresse lassen sich mit den
Jumpern frei auswählen. Zwei Basis-
adressen und acht Bitkombinationen
ergeben 16 verschiedene Adressen, so
daß sich an den I
2
C-Bus für “Heavy-
duty-Anwendungen” insgesamt 16
dieser Module parallelschalten lassen.
Damit erhalten Sie satte 128 bidirektio-
nale I/O-Leitungen. Hinter den drei
variablen Bits folgt übrigens immer ein
weiteres, mit dem die
Datenrichtung (lesen
oder schreiben) festge-
legt wird.
Nun zur rechten Seite des Schaltbil-
des. IC1 verfügt über die acht bidirek-
tionale Anschlüsse P0...P7. Jede I/O-
Leistung besitzt einen Pull-up-Wider-
stand mit einer in Reihe geschalteten
LED. Ist ein Pin als Ausgang geschal-
tet, so zeigt die angeschlossene LED
den Ausgangspegel an:
Sie leuchtet, wenn der
Pegel Low ist und
bleibt bei einem High-
Pegel dunkel. Soll ein
Anschluß ausschließ-
lich als Eingang verwendet werden,
kann die LED samt Widerstand ent-
fallen.
Der Verbinder K4 ist direkt am
PCF8574(A), so daß hier nur Eingänge
angeschlossen werden sollten. Als Aus-
gänge dagegen sorgen zwei Puffer für
die nötige Leistung. IC2
ist ein sogenannter
23
Elektor
1/2000
K1
2
5
4
3
1
6
K2
K3
K4
K5
IC1
8574
INT
SCL
SDA
PCF
10
11
12
15
14
13
P0
P1
P2
P3
P4
P5
P6
P7
A2
A1
A0
16
4
5
6
1
2
3
7
9
8
74HCT540
IC2
19
11
12
13
14
15
16
17
18
EN
2
3
4
7
8
9
5
6
1
&
D1
R3
1k5
D2
R4
1k5
D3
R5
1k5
D4
R6
1k5
D5
R7
1k5
D6
R8
1k5
D7
R9
1k5
D8
R10
1k5
R2
330
Ω
R1
330
Ω
C2
100n
C1
100µ 16V
JP3
JP2
JP1
SCL
SDA
SCL
SDA
INT
INT
5V
5V
5V
5V
IC2
20
10
C3
100n
5V
994077 - 11
ULN2803
IC3
VEE
+VS
11
12
13
14
15
16
17
18
10
1
2
3
6
7
8
4
5
9
1
Bild 1. Die Schaltung
des 8-bit-I/O-Ports, der
über das I
2
C-Interface
angesteuert wird.
994077-1
(C) ELEKTOR
C1
C2
C3
D1
D2
D3
D4
D5
D6
D7
D8
IC1
IC2
IC3
JP1
JP2
JP3
K1
K2
K3
K4
K5
R1
R2
R3
994077-1
R10
994077-1
(C) ELEKTOR
2
Stückliste
Widerstände:
R1,R2 = 330
Ω
R3...R10 = 1k5
Kondensatoren:
C1 = 100
µ/16 V stehend
C2,C3 = 100 n
Halbleiter:
D1...D6 = LED high eff.
IC1 = PCF8574P oder PCF8574AP
IC2 = 74HCT540
IC3 = ULN2803
Außerdem:
JP1...JP3 = 1
⋅3poliger
Pfostenverbinder
K1 = 6polige Mini-DIN-Buchse für
Platinenmontage
K2...K5 = 8polige
Platinenanschlußklemme, RM5
Platine EPS 994077-1
(siehe Service-Seiten in der
Heftmitte)
Bild 2. Das kompakte
Platinenlayout samt
Bestückungsplan.
24
Elektor
1/2000
Bild 4. Das Timing eines Lese-
und eines Schreibbefehls zum
PCF8574(A).
INTERRUPT
LOGIC
LP FILTER
INPUT
FILTER
I
2
C-BUS
CONTROL
SHIFT
REGISTER
I / O
PORTS
POWER-ON
RESET
12
11
10
9
7
6
5
4
P7
P6
P5
P4
P3
P2
P1
P0
15
SDA
16
V
DD
8
V
SS
14
SCL
3
A2
2
A1
1
A0
13
INT
8 BIT
8 x
WRITE pulse
994077 - 12
READ pulse
PCF8574
"1"
"0"
+
3
1
SCL
SDA
WRITE
TO PORT
DATA OUT
FROM PORT
0
S
2
3
4
5
6
7
8
1
0
0
A2
A1
A0
0
A
DATA 1
DATA 2
DATA 1 VALID
DATA 2 VALID
994077 - 13a
data to port
slave address (PCF8574)
data to port
start condition
acknowledge
from slave
A
acknowledge
from slave
A
acknowledge
from slave
R/W
t
pv
t
pv
SDA
INT
READ
FROM PORT
DATA
INTO PORT
0
S
1
0
0
A2
A1
A0
1
A
DATA 1
DATA 2
DATA 3
DATA 4
DATA 4
994077 - 13b
data from port
slave address (PCF8574)
data from port
start condition
acknowledge
from slave
A
acknowledge
from slave
1
P
stop
condition
R/W
t
ps
t
ph
t
iv
t
ir
t
ir
4
Bild 3. Der interne Aufbau des
PCF8574(A). Das IC wurde
exakt für den hier eingesetz-
ten Zweck entwickelt.
Näher betrachtet:
PDF8574
Der PCF8557(A) ist ein CMOS-IC, daß einen Mikrocon-
troller über den I
2
C-Bus mit besonderen I/O-Funktionen
bereichern kann. Der Chip besitzt ein I
2
C-Interface sowie
einen quasi-bidirektionalen Port mit kombinierten Ein- und
Ausgängen. Der Port kann als Eingang eingesetzt werden,
wenn er zuvor auf High gesetzt wurde. Nur dann ist der
Portbaustein in der Lage, logische Niveaus zu registrieren.
Wird der Ausgang durch einen Lesebefehl gelesen, so ist
zu sehen, auf welches logische Niveau der Eingang
gesetzt ist. Um eine Portleitung, die als Eingang geschal-
tet ist, auf logisch Null zu setzen, muß ein externer Strom
von wenigstens 100 µA nach Masse fließen.
Die Ausgangsleitungen sind stark genug, um eine LED
direkt anzusteuern. Die Innenschaltung (Bild 3) zeigt, daß
ein Port nur 100 µA liefern, aber maximal 25 mA nach
Masse schalten kann.
Das IC bietet auch die Möglichkeit, einen Interrupt zu
erzeugen. Wenn der Port als Eingang geschaltet ist, ver-
ursacht jede Änderung des Pegels einen Interrupt. Der
Interrupt wird aufgehoben, wenn die Ursache verschwun-
den ist, also der Port wieder den ursprünglichen Zustand
einnimmt, oder wenn der Port über den I
2
C-Bus gelesen
oder beschrieben wurde.
Nach einem (Power-on-) Reset sind zunächst alle Portlei-
tungen High. Dadurch befinden sie sich im richtigen
Zustand, um als Eingänge gebraucht zu werden.
Bild 4 zeigt, welche Signale auf den I
2
C-Bus gesetzt
werden müssen, um Daten vom und zum Controller zu
schieben.
A
B
25
Elektor
1/2000
Bustreiber, der intern über acht inver-
tierende Puffer verfügt. Um aber auch
größere Lasten anschließen zu können,
folgt auf IC2 ein Leistungstreiber mit
der Bezeichnung ULN2803. Dieses IC
stellt acht Transistor-Treiber mit Open-
collector-Ausgängen zur Verfügung,
die für ohmsche oder induktive Lasten
(Lämpchen, Relais) bis maximal 50
V/500 mA (gesamt 2,25 W) geeignet
sind. Alle Ausgänge sind mit Freilauf-
dioden ausgestattet, deren Kathoden
gemeinschaftlich an Pin 10 liegen. Die
externe Spannungsversorgung für die
Lasten wird an K2 oder K3 ange-
schlossen (Masse an Pin 1 und Pin 8,
V++ an Pin 7). Pin 1 ist im Schaltbild
und im Bestückungsaufdruck mit einer
Abschrägung markiert.
M
E H R
S
T E C K E R
A L S
I C
S
Der Aufbau der Schaltung ist eine
Arbeit, die in einer guten halben
Stunde erledigt sein sollte. Probleme
durch “ungewöhnliche” Bauteile oder
durch allzu gedrängten Aufbau sind
nicht zu erwarten. Bild 2 zeigt, daß die
Elektronik im Zentrum der Platine
sitzt, während der Kontakt mit der
Außenwelt über eine DIN-Buchse
sowie die Platinenanschlußklemmen
an den Platinenrändern aufgenommen
wird. Diese Klemmen mit Schraubver-
bindung sorgen für vertrauenswürdige
elektrische Verbindungen. Da die
Klemmen dicht aneinander sitzen,
werden sie Rücken an Rücken mon-
tiert. Wenn erhältlich, kann man auch
je einen hohen und einen niedrigen
Klemmenblock (dann natürlich nach
außen gerichtet) anbringen.
Nach den Lötarbeiten kontrolliert man
Lötstellen und Bauteile und nimmt das
Interface in Betrieb. Mit einem Jumper
steckt man die gewünschte Adresse
und schließt die I/O-Karte am I
2
C-Bus
an. Die Platine ist übrigens so bemes-
sen, daß sie in ein Standard-Gehäuse
für Hutschienenmontage paßt.
Fehlt noch etwas? Richtig, die Software.
Üblicherweise wird das Interface durch
einen Treiber unterstützt, der lediglich
Daten lesen und schreiben können
muß. Der Kasten bietet ausreichend
Informationen, um einen solchen Trei-
ber ohne Probleme selbst zu erstellen.
(994077)rg