Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: PCF8574 macht Unsinn Kategorie: C-Control I V1.2/2.0 (von André H. - 21.09.2006 9:02)
 Als Antwort auf PCF8574 macht Unsinn von Compfox - 19.09.2006 16:50
André H. nutzt:  CC1-M-Unit V1.1, CC1-Station V1.1, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station, C-Control 2
Hallo ReinhardB,


> Ich habe mir eine I2c Porterweterung mit einem PCF8574 gebastelt, nach dem Vorbild des Erweiterungsmoduls für das Appboard (Inclusive der 10k Pullups). Zum Test habe ich die Ausgänge mit LEDs (plus Vorwiderstände) versehen und will diese nun schalten. Bis dahin alles o.k. der Baustein wird angesprochen.
> Nur: ich bekomme jeweils nur einen Kanal auf high. Sobald ich einen zweiten einschalte, geht mir der erste wieder aus !

Wie hast Du die LEDs angeschlossen ?
Wenn Du die fehlerhafte LED-Ansteuerung der CC1-Station V2 übernommen
und die LEDs zwischen Port und GND angeschlossen hast, kann es so nicht gehen.
Denn genau das ist auch das Problem bei der CC1 Station V2, daß man den Klimmzug
mit einem Byte RAM als Zwischenspeicher auch beim Benutzen des PCF8574
als reinen Ausgangsbaustein machen muß. Auch das Problem mit dem sofort nach
Anlegen der Versorgung einschaltenden Relais bei der CC1 Station V2 hat u.a. auch
mit einer "nicht durchdachten" Beschaltung zu tun.

Was auch der Entwickler der CC1 Station V2 leider nicht beachtet hat, war das Datenblatt des PCF8574.
Lasten am PCF8574 schaltet man immer invertiert.
Denn der PCF8574 hat nur einen Open-Drain-Ausgang.
Für einen High-Pegel sorgt eine integrierte 100µA Konstantstromquelle.
Wenn man nun den Port des PCF8574 "stark" belastet, d.h., daß die Spannung unterhalb
des definierten Hi-Pegels absinkt, was bei 0,7V bei Transistoren und unter 2V bei LEDs
der Fall ist, wird beim Auslesen des ICs immer ein Low-Pegel erkannt, obwohl
der Port auf High gesetzt wurde.
Daher wird der PCF8574 als quasi-bidirektionaler I²C-Bus-Portexpander bezeichnet.
Er kennt nur zwei Zustände:
Eingang (=High durch integrierte Konstantstromquelle) und Low.


So, um nun Dein Problem zu lösen, mußt Du nur folgendes machen:
Schließe die LEDs (mit Vorwiderstand) zwischen 5V (Anode) und den jeweiligen
Port des PCF8574 (Kathode) an.
Die Schaltlogik ist nun invertiert, aber dafür kannst Du die Ports nun
ohne extra Puffer-Byte ansprechen.
Du mußt nur beachten, daß ein Low-Pegel die LED einschaltet und ein High-Pegel ausschaltet.
Übrigens, die 10k -Pull-Ups am PCF8574 braucht man i.d.R. nicht.

5V
 |
Vorwiderstand
 |
(A)
LED
(K)
 |
PCF8574 Portx

Wenn Du die LEDs aber lieber nicht invertiert schalten willst, mußt Du
zwischen PCF8574 und LEDs einen Puffer anschließen (z.B. HEF4050).

Bei beiden Möglchkeiten kannst Du aber auf jeden Fall die direkten Portfunktionen à la
define LED1 port[25]            
define LED2 port[26]

benutzen.

Nur, wenn Du einzelne Ports eines PCF8574 auch als Eingang nutzen willst,
muß Du beim setzen von Ausgängen den PCF8574 Byteweise beschreiben,
da ansonsten bei einem Rücklesen der aktuellen Zustände am PCF8574
u.U. an Eingängen Low-Pegel erkannt werden, und diese wieder zurückgeschrieben werden.

MfG André H.

 Antwort schreiben

Bisherige Antworten:

Re: PCF8574 (von Compfox - 22.09.2006 9:41)
    Re: PCF8574 (von André H. - 22.09.2006 10:52)