Inhaltsverzeichnis
RP6v2 I2C-Portexpander: Hardware
In diesem Projekt soll eine "Exp" (RP6#Experimentierplatine, CONRAD 191537) für den RP6v2 (natürlich auch für den RP6) "gebaut" werden, auf der mit dem IC PCF8574P ein I2C-Portexpander realisiert werden soll. Mit den 8 neu gewonnenen Ports kann z.B. ein LC-Display betrieben werden. Für die Teile, die man für das ganze Projekt braucht, werden Bestell-Nummern vom großen C angegeben. Natürlich gibt es auch andere Versender, bei denen es evtl. günstiger wird.
Das Projekt wird in 2 Abschnitten ("Phasen") vorgestellt. Wer mitbauen will, kann auch schon nach der ersten Phase aussteigen, weil sie ohne die 2. Phase funktioniert. Jede Phase ist also allein funktionsfähig.
So werden die 2 Phasen aussehen:
- Phase 1 -> Aufbau des PCF8574 (8 I/O-Ports) mit Wannenstecker für ein LCD
- Phase 2 -> Aufbau des PCF8591 (4 AD- und 1 DA-Wandler) mit Wannenstecker für die AD-/DA-Ports
- (Phase 3 -> Ich weiß nicht, ob es sie gibt. Aber: Ich hätte evtl. eine Idee dafür!)
Was braucht man allgemein für den Aufbau einer Schaltung auf der Exp:
- Seitenschneider, Schere, Zange
- Lötkolben 25..30 Watt, Lötzinn
- Plastik 70 Schutzlack (CONRAD 813621)
- Isolierter Schaltdraht YV 0,20 mm² (CONRAD 606065)
- Versilberter CU-Draht 0,6 mm (CONRAD 605581)
Mit dem versilberten CU-Draht stellt man auf der Unterseite (= Lötseite) der Exp Verbindungen zwischen den Bauteilen her; mit dem isolierten Schaltdraht werden Drahtbrücken auf der Oberseite (= Bestückungsseite) der Exp eingesetzt. Die Lage der Verbindungen zeige ich im Bestückungsplan jeder Phase. Man muss sich nicht an die genaue Lage der Verbindungen halten.
Wenn man die Drähte und Bauteile an anderen Positionen einlötet, kann es aber sein, dass man die nächste Phase nicht mehr so aufbauen kann, wie ich das hier zeige! Möglicherweise sind die weiteren Teile dann nur noch mit einer "wilden" Freiverdrahtung machbar!
Phase 1
In der Phase 1 wird das PHILIPS Portexpander-IC PCF8574P oder PCF8574AP mit seinen Verbindungen zu einem 14-poligen Wannenstecker als Anschluß für ein LCD aufgebaut. Alle RP6#Displays können hier direkt angeschlossen werden.
Man braucht folgende Bauteile (Bestell-Nummern CONRAD) für die 1. Phase:
Anzahl | Bestell-Nr. | Bauteil-Bezeichnung: |
1 | 191537 | RP6 Experimentierplatine |
1 | Reichelt | IC PCF8574P ODER |
1 | Reichelt | IC PCF8574AP |
1 | 189626 | IC Sockel DIL 16-polig |
1 | 741687 | Wannenstecker gerade, 2 x 7-polig |
1 | 741119 | 1-reihige Stiftleiste RM 2,54mm (36-polig) |
1 | 742902 | Vier Codierbrücken (aus Set) |
1 | 430730 | Trimmpoti stehend 10kOhm, 2,5 x 5mm |
1 | 500812 | Keramik Kondensator 100 nF |
Hier erst einmal der Schaltplan:
Und dann der Bestückungsplan:
Ich habe die Drahtbrücken aus isoliertem Schaltdraht (es sind 17) rot eingezeichnet. Sie werden auf der Oberseite der Experimentierplatine bestückt!
Viel Erfolg beim Aufbau!
Testen, ob die Schaltung grundsätzlich funktioniert, kann man mit der Demo "RP6Base_I2CMaster_01.c" aus den RP6v2 Examples. Die Demo zeigt ein Lauflicht, wenn man 8 LEDs an die Ausgangs-Ports des PCF8574 anschließt. Man sollte dazu low-current LEDs mit Vorwiderstand jeweils 1,5 kOhm an die Ausgänge anschließen,- Kathode an den Ausgang und Anode über Vorwiderstand an VDD. Die Ausgänge des PCF8574 sind zu finden an den Pins 4 (P4), 6 (P7), 11..14 (P0..P3) des LCD-Wannensteckers und an der 2-poligen Stiftleiste neben dem IC, beschriftet mit P5 P6. Auf die Jumper JP1..3 werden 3 Codierbrücken so aufgesteckt, dass die Adresseingänge des PCF8574 (A0..A2) mit GND verbunden sind (Position zum oberen Platinenrand). JP4 wird nicht aufgesteckt. Wenn der PCF8574AP eingesetzt wird, kann die I2C-Adresse im Demoprogramm "RP6Base_I2CMaster_01.c" unverändert bleiben. Wird jedoch der Typ PCF8574P verwendet, muss die I2C-Adresse geändert werden:
#define PCF8574_8LEDS_ADR 0x40
Später soll natürlich auch ein LCD angesteuert werden! Geduld ...
Phase 2
--- BAUSTELLE --- BAUSTELLE --- BAUSTELLE --- BAUSTELLE --- BAUSTELLE --- BAUSTELLE ---
Allgemeine Daten und Tabellen
Stecker
Stecker | Pins | Bedeutung |
P5 P6 | 2 | PCF8574: I/O-Ports P5, P6 |
LCD | 14 | PCF8574: Wannenstecker für LCD (I/O-Ports P0..P3, P4, P7) |
OSC | 1 | PCF8591: Oszillator Ein-/Ausgang |
ADC/DAC | 10 | PCF8591: Wannenstecker für ADC/DAC (AIN0..AIN3, AOUT) |
LCD
Pin | Port | LCD | Bedeutung |
1 | GND | ||
2 | VDD | ||
3 | Vo | ||
4 | P4 | RS | |
5 | R/W | ||
6 | P7 | EN | |
7 | D0 | ||
8 | D1 | ||
9 | D2 | ||
10 | D3 | ||
11 | P0 | D4 | |
12 | P1 | D5 | |
13 | P2 | D6 | |
14 | P3 | D7 |
ADC/DAC
Pin | Port | Bedeutung |
1 | AIN1 | |
2 | AIN0 | |
3 | AIN2 | |
4 | AGND | |
5 | AIN3 | |
6 | AGND | |
7 | AGND | |
8 | AGND | |
9 | AOUT | |
10 | VDD |
Jumper
Zeichenerklärung:
- Zweipolige Jumper:
- Stellung ON = Jumper aufgesteckt (Kontakt geschlossen)
- Stellung OFF = Jumper abgezogen (Kontakt offen)
- Dreipolige Jumper:
- Stellung O = Jumper oben * aufgesteckt
- Stellung U = Jumper unten * aufgesteckt
- Stellung L = Jumper links * aufgesteckt
- Stellung R = Jumper rechts * aufgesteckt
Zu *) Platine so gesehen, wie im Bestückungsplan!
Jumper | Stellung | Bedeutung |
JP1 | O | PCF8574: A0 = 0 |
JP1 | U | PCF8574: A0 = 1 |
JP2 | O | PCF8574: A1 = 0 |
JP2 | U | PCF8574: A1 = 1 |
JP3 | O | PCF8574: A2 = 0 |
JP3 | U | PCF8574: A2 = 1 |
JP4 | ON | PCF8574: INT verwenden |
JP4 | OFF | PCF8574: INT nicht verwenden |
JP5 | ON | PCF8591: AGND = GND |
JP5 | OFF | PCF8591: AGND variabel |
JP6 | O | PCF8591: A1 = 1 |
JP6 | U | PCF8591: A1 = 0 |
JP7 | L | PCF8591: A2 = 1 |
JP7 | R | PCF8591: A2 = 0 |
I2C-Adressen
A2 | A1 | A0 | PCF8574P | PCF8574AP | PCF8591P |
0 | 0 | 0 | 0x40 | 0x70 | 0x90 |
0 | 0 | 1 | 0x42 | 0x72 | nicht nutzbar * |
0 | 1 | 0 | 0x44 | 0x74 | 0x94 |
0 | 1 | 1 | 0x46 | 0x76 | nicht nutzbar * |
1 | 0 | 0 | 0x48 | 0x78 | 0x98 |
1 | 0 | 1 | 0x4A | 0x7A | nicht nutzbar * |
1 | 1 | 0 | 0x4C | 0x7C | 0x9C |
1 | 1 | 1 | 0x4E | 0x7E | nicht nutzbar * |
Zu *) Da A0 = 0 festgelegt!
RP6v2 I2C-Portexpander: Software
Phase 1
Phase 2
Siehe auch
Quellen
Autoren
--Dirk 21:00, 22. Mai 2012 (CET)