Zurück zum Menü 4 4.0.10 i2c-Bus erkunden Erstellt ab: 14.11.2010
|
|||
Heute hatte ich einen netten
Emailkontakt. Ich fragte nach, ob man mich in der Werkstatt
unterstützen könnte und die Firma willigte ein. Ein wenig
später lag ein Päckchen mit drei Bausätzen bei mir auf
dem Tisch.
Es handelt sich dabei um
Dankeschön dafür :-)
Zunächst baute ich die
Platine mit dem PCF8574 auf, denn das scheint mir der einfachse Bausatz
zu sein:
Jetzt habe ich die
Möglichkeit, diese Platine einmal an einer Picaxe zu probieren, um
den i2c-Bus zu verstehen. Ich denke, zum Üben genügt eine
08M (Picaxe siehe hier). Von
besonderer Bedeutung ist hierbei die Klemme am linken Rand der
Platine. Auch die Jumper sind interessent.
Daher visualisiere ich das hier einmal, um dann später immer wieder nachschauen zu können: Wir wissen jetzt also, auf
welcher Adresse der PCF8574 in unserem Beispiel liegt. Nämlich auf
der kleinsten, für diesen Baustein verfügbaren Adresse.
Hier noch einmal zum Nachschlagen der komplette Adressbereich der Karte: Jetzt wollen wir einmal ein wenig Theorie machen, wie denn nun dieser Chip angesteuert werden muss. Der i2C-Bus ist ein Zweidraht-bus. Wir dürfen aber die Masse nicht vergessen. Also werden drei Drähte benötigt. Eine Datenleitung "SDA" und eine Taktleitung (Clock --- SCL). Beide Signalleitungen sind über je einen Pull-UP-widerstand mit 5 Volt plus verbunden, so dass sie im Ruhezustand eine logische "1" führen: Im Master und im Slave
können wir uns dann Open-Collektor-Transistoren vortellen, die
unabhängig voneinander die beiden Leitungen SDA und SCL auf
logisch "0" ziehen können. Wenn wir und das gang genau betrachten,
sehen wir, dass man hierbei keinerlei Kurzschluss fabrizieren kann,
auch wenn der Master eine logische "1" schreibt und der Slave aber
gleichzeitig eine logische "0".
Wir kennen das ja aus der TTL-Technik und auch aus der CMOS-Technik, das man nie zwei Ausgänge dirkt zusammenschalten darf, sondern immer ein Oder-Gatter dazu nehmen muss. Hier ist das anders, hier werden die bidirektionalen Ein- und Ausgänge direkt auf je eine Leitung gelegt. Überlege einmal alle Kombinationen der Transisotren T1 bis T4 durch. Zeichne dir dazu eine Wahrheitstabelle mit den 16 logischen Kombinationsmöglichkeiten. Dieses ist also erst einmal die Grundüberlegung. Ich überlegte hin und her, welches System wohl zum Lernen am einfachsten zu bedienen und zu überschauen ist. Klar, dass ich persönlich die Picaxe favorisiere. Nach einigem Probieren habe ich die Lösung erkannt. Ich nahm eine Picaxe 20M (man kann auch eine kleinere Picaxe nehmen, aber ich habe immer ein paar 20M liegen) und baute folgende Schaltung damit auf und verband sie mit der Platine von Horter & Kalb: Wie man hier sieht, muss man
die High- und Lowpegel umkehren, damit die Logik wieder stimmt. Hinzu
kommt, dass ich mir eine negierte Platine bei horter & Kalb
gewünscht hatte. Das IC PCF8574 hat nämlich auch
Open-Collector-Ausgänge, die intern mit einem Widerstand mit
Plus verbunden sind. Wenn also alle Ausgänge logisch Null
führen, also die OC-Ausgänge gesperrt sind, so haben wir es
an den Ausgängen mit High-Pegeln zu tun:
Horter & Kalb haben diese
Pegel mit PNP-Transistoren logich invertirert, so dass das IC auch
logisch Null führt, wenn es mit der Betriebsspannung verbunden
wird.
Aber warum hat das IC diese "doofen" OC-Ausgänge, die alles scheinbar so kompliziert machen ? Nun, man kann das selbe IC sowohl als Ausgang, als auch als Eingang benutzen. Dabei funktionieren die Datenpins genau so wie die oben schon beschriebenen SCL- und SDA-Pins. Man kann trotz High-Pegel gefahrlos eine Null schreiben, indem man den betreffenden Pin einfach mit einem NPN-Transistor auf Null zieht. Nach dem ich alles auf dem
Steckbrett zusammengesteckt hatte nahm ich als Hilfe den sehr guten und
erfreulich kurzen Text des genialen Elektronik-Ingenieurs Burkhard
Kainka als Anleitung zur Hand und übersetzte sein Programm in ein
Picaxe-Programm. Dabei musste ich sehr auf der Hut sein, denn alls SDA-
und SCL-Pegel mussten ja sauber umgedreht werden, denn ich hatte ja
jeweils einen NPN-Emitterfolger hinter die Picaxe-Ausgänge
geschaltet.
Den super Text darf ich ja leider nicht scannen und hier einstellen, deshalb mache ich hier einen ausführlichen Quellennachweis, damit Interessierte sich das betreffende Buch kaufen können: Titel des Buches: "Messen steuern und regeln mit dem C-Control BASIC System" Verfasser: Burkhard Kainka Verlag: Franzis` Verlag, GmbH 85586 Poing ISBN 3-7723-7635-6 Seite: 160 bis 165 Herausgekommen ist folgendes Picaxe-Programm:
Dieses Programm zählt die Ausgänge 8-Bit-binär von Null bis 255 hoch, ganz wie das Original von Burkhard Kainka. Anhand dieses Beispielprogramms sollte es dann auch möglich sein, andere Anwendungen in die Picaxe zu programmieren. =============================================
Inzwischen schreiben wir September 2013 und es sind ungefähr 2 Jahre vergangen. Wie es schon fast zu erwarten war, gibt es die Picaxe 20M nicht mehr und wurde durch das Nachfolgemodell 20M2 ausgetauscht. Natürlich war ich dadurch gezwungen, das von mir entwickelte Lernboard neu zu machen. Hier also eine Version des Programmcodes mit dem sich die Horter & Kalb Karte auch ohne die zusätzlichen Transistoren ansteuern lässt:
Die Adresse des PCF 8574P muss zum Probeprogamm passen. Dazu stecken wir die drei Jumper so, dass diese alle in Richtung Relais schauen. Beim Anschluss der Versogungsspannung dürfen wir die Polarität bei der Karte keineswegs vertauschen, denn sonst wird der PCF 8574 schnell beschädigt. Die zwei Leitungen SDA und SCL müssen wir richtig an die Klemmen B.0 und B.1 anschießen. Dann ergibt sich beispielsweise folgendes Bild: Auf
diese Weise ist es schonmal möglich, bis zu 16 Stück der Horter &
Kalb Karten an die Picaxe anschließen zu können. Das egäbe dann
schonmal 128 Ausgänge, die alle einzeln schaltbar wären. Das Tolle
daran ist, dass an der Picaxe nur 2 Portleitungen dazu belegt werden
müssen.
Es ist es also nun an der Zeit, das Lesen über den PCF 8574 zu studieren.
Es gibt also noch eine Fortstzung dieses Baublogs.
Ich bedanke mich, dass Du mich auf diesem kleinen "Lehrgang" begleitet hast, viele Grüße, Dieser Artikel wurd druch eine freundliche Spende von Horter & Kalb ermöglicht. Horter & Kalb, Bayreuth |