Das I2C Portexpander Modul

Obwohl ein AVR ATMega 32 Mikrocontroller über etliche I/O Ports verfügt, ist es durchaus möglich, dass diese knapp werden. In solchen Fällen wäre es schön, wenn die Anzahl der Ein- und Ausgäge erweitert werden könnte. Und für genau solche Fälle, gibt es einige „Porterweiterungen“, die über den I2C Bus angesprochen werden können. Da das GREETBoard ATMega32 über eine I2C-Schnittstelle verfügt, sollte es daher relativ einfach sein, eine solche Erweiterung in das GREETBoard-Projekt zu integrieren.

PCF8574

Dieser Baustein ist ein sehr verbreiteter Port Expander für den I2C Bus. Es ist möglich die Adresse über die drei Adress-Pinns zu ändern und so acht PCF8574 gleichzeitig am I2C Bus zu betreiben. Da dieser Baustein in der Ausführungen PCF8574 und PCF8574A (mit jeweils unterschiedlicher Grundadresse) erhältlich ist, können somit bis zu 16 PCF8574’s betrieben werden. Zusätzlich sind, neben der DIL-16 Ausführung, auch noch SO16 und SSOP16 Modelle verfügbar.

Funktion

Der Baustein wandelt das serielle 8-Bit-Signal des I2C Busses in ein paralleles Signal an den Ausgängen P0-P7 um. Dabei ist zu beachten, dass diese nicht mit einer hohen Last beschaltet werden dürfen, da der maximale Ausgangsstrom bei 25mA liegt. Für eine LED ist dies ausreichend, höhere Lasten müssen jedoch anders ausgelegt werden.

Umwandlung serieller Daten in Parallele durch den PCF8574

Umwandlung serieller Daten in Parallele durch den PCF8574

Um die Funktion des PCF8574 als Port Expander im GREETBoard Projekt zu simulieren, werden die 8 I/O’s mit vier LED und vier Tastern versehen. So ist es möglich, mit einem Modul das Setzten von Ausgängen und das Einlesen von Signalen zu ermöglichen. Da das I2CLCD Modul bereits in das Projekt eingebunden wurde, können später die gelesenen Daten des PCF8574 am Display ausgegeben werden.

Die Schaltung

Schaltung des Portexpander Modul - Version 0.2

Schaltung des Portexpander Modul – Version 0.2

Das Modul

Diese oben gezeigte Schaltung zeigt die Version 0.2 mit einigen Veränderungen zu der von mir bereits bestellten Platine. Leider habe ich in der aktuellen Version die hardwaremäßige Entprellung eingeplant, was sich in der nächsten Version ändern wird. Die Taster sind in Zukunft direkt an VSS (GND) angebunden, so dass die Widerstände und Kondensatoren hinfällig sein werden. In der aktuellen Fassung befinden sich daher auf dem Board einige Drahtbrücken um den oben gezeigten Zustand, ohne Entprellung, herzustellen.

Fertig aufgebautes Portexpander Modul

Fertig aufgebautes Portexpander Modul

Um die Funktionen des PCF8574 dem GREETBoard Projekt hinzuzufügen, wurden die notwendigen Komponenten auf einem 1/8-Modul vereint. Zwei RJ12 Buchsen dienen der Anbindung an den I2C Bus, eine LED (Power) zeigt an, ob das Board mit Strom versorgt wird. Daneben wurden noch 3-polige Stiftleisten für den Adressenblock platziert. Auf diesem Bild ist die aktuelle Version zu sehen. Jedoch habe ich bereits einige Änderungen für die Zukunft beschlossen und im Schaltplan der Version 0.2 eingeplant:

  1. Die „Power“-LED, inkl. Vorwiderstand wird entfernt
  2. 1 und 0 müssen am Adressblock getauscht werden
  3. Kondensatoren und Widerstande der Entprellung werden entfernt
  4. Die Anordnung der Taster und LED wird getauscht um ein versehentliches Berühren stromführender IC Beine besser zu verhindern (LED’s lins, Taster rechts)
  5. Zusätzlicher Entstör-Kondensator (100n) einplanen

Zur Zeit teste ich das Modul und bin so auf die o.g. Änderungen gekommen. Zum einen stört es, dass die Taster dicht an den Beinen des PCF8574 sitzen. In einem unbedachten Moment könnte es sein, dass die Fingerkuppe, beim Drücken eines Tasters, ein oder mehrere Beinchen berührt und dies zu Fehlern oder sogar zur Zerstörung des IC führen kann. Daher ist es besser, wenn die Taster am Rand und nicht mittig angeordnet sind. Die LED hingegen können ruhig in der Mitte sitzen.

Portexpander - Version 0.2

Portexpander – Version 0.2

Aber bevor ich das herausfinden konnte, habe ich Stunden zugebracht, das Board überhaupt ansprechen zu können. Der I2C Bus funktionierte, da auch das I2CLCD Modul lief. Das Portexpander Modul lieferte aber kein „Acknowledge“ ab, was soviel bedeutet, dass es nicht beschrieben/gelesen wurde. Selbst die Entfernung des I2CLCD Moduls und das Betreiben des Portexpander mit der gleichen Adresse (alle Adresspins auf 0), brachte nicht das gewünschte Ergebnis. Nun ja, wenn die Beschriftung auf dem Board am Adressenblock nicht stimmt, dann kann das auch nicht funktionieren. Ich habe bei der Entwicklung des Moduls 1 und 0 einfach vertauscht.

Beachtet man diese zwei Dinge, läuft das Modul einwandfrei und ich kann es ausgiebig testen. Der fehlende Entstörkondensator macht momentan keine Probleme, aber zur Sicherheit möchte ich diesen für künftige Projekte integrieren. Auf die „Power“-LED hingegen, kann ich getrost verzichten und diesen Strom sparen.

In wenigen Tagen werde ich über die Einbindung des GREETBoard PortExpander berichten und den verwendeten Code erklären.

Schreibe einen Kommentar

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