Zurück zum Menü 5 5.5.2 RS232 zu I2C Umsetzter mit Gambas Erstellt ab 21.07.2010 |
||
Der Beitrag 5.3.4 hat den
entscheidenden Nachteil, dass die dort beschriebene Platine nicht
mit Gambas nutzbar ist.
Das liegt daran, dass man unter Gambas mit einfachen Mitteln nur 2 Ausgangsleitungen der RS232 ansprechen kann. Diesen Umstand bemerkte ich aber zu spät, so dass die Platine bereits fertig war und ich sie nicht mehr so einfach ändern konnte. Ich überlegte hin und her, wie ich aus dieser Misere herauskommen würde und da fiel mir ein, dass es ja inzwischen Picaxe-Chips mit i2c-Interface gibt. Außerdem sind ja hunderte, wenn nicht tausende anderer i2c-ICs am Markt erhältlich. i2c-Bus-Logo, © fremd Ich habe auch schon lange einige Bücher liegen, in denen die i2C-Spezifikationen beschrieben sind. Zunächst überflog ich diese Bücher nur, aber nun werde ich sie einmal richtig lesen, um dann mit den 2 Ausgangsleitungen der RS232 und zwei weiteren Eingangspins eine eigene i2C-Schnittstelle zu ersinnen. Zunächst einmal kann man in die Wikipedia schauen und sich schlau machen, was ein i2c-Bus eigentlich ist und wie er ungefähr arbeitet. i2c bei
Wikipedia
Ich musste aber auch herausfinden,
wie
ich die beiden Ausgangspins an meiner RS232-Schnittstelle vom Ubuntu
Linux aus mit Gambas ansprechen kann.
Dazu habe ich mir eine kleine Schaltung gesteckt, die ich mit einem kleinen Batteriekasten und vier NiMh-Akkus betrieben habe: Nach einigem Blättern in den Online-Unterlagen habe ich es dann auch geschafft, diese Pins mit einem minimalistischen Gambas-Code zu aktivieren, bzw, einzulesen: Download Quellcode und Programm für Gambas (Ubuntu, ZIP) Dein Test-Programm läuft nicht richtig, oder lässt sich nicht starten ? ==> Gambas muss installiert sein ==> am besten Du installierst alle Zusätze für das Gambas über die Synaptic-Paketverwaltung Hans-Joachim Lehmann vom Gambas-Buch.de
hat sich von mir ein wenig inspirieren lassen und das
gleiche Programm einmal aus seiner Sichtweise interpretiert.
Die Oberfläche ist etwas anders
gestaltet ...
... und der Code ist gewiss viel besser als meiner ... Download Quellcode und Programm "Hans" für Gambas (Ubuntu, ZIP) Hier sieht man, dass Hans noch eine Schnittstellenauswahl mit eingebaut hat. Auch das Foto der minimalistischen
Steckschaltung möchte ich nicht vermissen lassen:
(Hmmm, wie sieht dieses Gebilde
aus ? Welcher Kontinent könnte das wohl sein ... hmm ... ?)
Nun müssen wir uns Gedanken machen, wie die konkrete elektronische Umsetzung der beiden Signalleitungen eines i2c-Busses mit der RS232 des PC umzusetzen sind. Zunächst sagt die Wikipedia Folgendes dazu:
Aha, wir müssen also überlegen, wie wir unsere kleine Probeschaltung so umbauen können, dass wir diese beiden Datenleitungen ständig auf plus 5 Volt liegen haben und so gestalten, dass wir diese Datenleitungen mit unserem Testprogramm (siehe oben) auf Masse ziehen können. Gleichzeitig wäre es schön, dies mit den LEDs visualisieren zu können. Heute Nacht ist es mir gelungen, zumindest die Bedingungen so einzuhalten, dass der PC die beiden Datenleitungen erkennt. Dies habe ich nach der berühmten "Try-And-Error-Methode" herausgefunden. Man sagt auch, ich habe das "empirisch im Versuch ermittelt". Daraus ergibt sich erstmal folgende Probe-Schaltung, die ich auf dem Steckbrett erst einmal gesteckt habe: Wenn wir diese Schaltung nun wieder "an
unser Gambas-Programm anklemmen", so werden wir sehen, dass die beiden
LEDs in Ruhestellung leuchten. Das soll ja auch so sein, laut
i2c-Spezifikationen.
Wenn wir nun eine logische "1" auf einen der Pins geben, erlischt die entsprechende LED. Auch ist in der Programmoberfläche zu sehen, dass die RS232-Eingänge in der Ruhestellung ständig auf logisch "1" sind. Auch das soll so sein.
Wenn wir nun einen der beiden Taster drücken, sehen wir sowohl an den LEDs als auch in der Programmoberfläche die entsprechende Änderung ==> Die betreffende Datenleitung wird auf logisch "0" gezogen. Mit den beiden Tastern haben wir nichts weiter gemacht, als den Open-Collektor-Ausgang (OC) eines Slaves simuliert. Man kann sich gut vorstellen, wie die Kollektoren der beiden Slave-Ausgänge an den beiden Datenleitungen hängen: Jetzt müssen wir nur noch sehen, ob wir die elektrischen Spezifikationen einhalten, um mit dieser Schaltung weiter arbeiten zu können.
Nun, das lässt sich ja leicht mit einem
Multimeter ausmessen:
Betätigung der probeweisen SCL- und SDA-Leitungen per Software ==> Ergebnis: Der gemessene Highpegel betrug: 4,27 Volt ==> i.O. Der gemessene Lowpegel betrug: 0,0204 Volt ==> i.O Also sollte unsere Schaltung wohl mit einem
i2c-Chip zusammenarbeiten können.
Was mir noch dazu auffällt, ist ein Überschwingen auf ca. 8 Volt. Das sollte aber kein großes Problem sein, denn die Pins an den i2c-Chips sind ja Open-Collektor-Ausführungen (Open-Drain-Ausführungen, was vom Prinzip das Gleiche ist) und diese sind im Allgemeinen doch recht robust. So ging der erste i2c-Abend ins Land ... Um nun die Spezifikationen ein wenig zu
lernen, ist es gewiss sehr gut, ein IC vom Erfinder des Busses
"Phillips" zu kaufen und dessen Datenblatt schon einmal zu studieren.
Ich habe hier einmal ein Datenblatt für dieses IC herausgesucht
und
stelle es hier schon einmal zum Download bereit:
Download
Datenblatt PCF 8574 (PDF)
Dieses IC stellt 8 Ausgangspins und 8
Eingangspins am i2c-Bus bereit. Ich habe es ausgewählt, weil man
damit
die ersten Versuche gewiss schön nachvollziehen kann.
Hierzu können wir einen
kleinen Exkurs machen:
Artikel 4.0.10 "i2c-Bus erkunden" in einem neuen Tab öffnen. ==========================================
Bevor wir jetzt am PC weiter machen, müssen wir möglichst einfach die RS232-Signale in die i2c-Signale umsetzen. Nach einigen Wochen entschied
ich mich für folgende Variante:
Man könnte meinen "prima,
das mache ich jetzt so", aber ein Versuch ergab, dass
Eingangspins DSR und CTS der RS232 zu niederohmig sind.
Jedenfalls konnte ein PCF8574 mit dieser Schaltung NICHT angesteuert werden. Es müssen also die Pins DSR und CTS von den SDA und SCL Signalen noch entkoppelt werden. Damit das nicht zu viele Transistoren werden, kann man vielleicht auch zum IC ULN2803 greifen in dem 8 Stück Darlington-Stufen mit Open-Collector-Ausgängen verbaut sind. Hier einmal ein Eindruck von
diesem IC:
Links sehen wir die
Pinbelegeung und rechts sehen wir eine einzelne Stufe aufgelöst.
Wir erkennen darin sicherlich unsere Transistoren T1 oder T2 wieder.
Hier noch einmal das Datenblatt
zum Download: ULN2803.pdf
Jetzt wird unsere Schaltung sehr
übersichtlich und sehr leicht nachbaubar.
Hierzu gibt es eine kleine Anleitung im Bereich Digitaltechnik. 29.09.2012 ==> Ja, man hat so seine Last mit
dem Linux, insbesondere mit dem Ubunu, denn inzwischen haben sich die
Programmierer vom "Ur-Ubuntu" gedacht, die "Unity-Oberfläche" zu
kreieren. Damit aber kommt man sehr schlecht zurecht, wie ich finde.
Also suchte ich und suchte und suchte ...
Schließlich fand ich eine wunderbare Lösung, die als vollwertiger Ersatz für das "Ur-Ubuntu" dient:
Linux MINT Users [DE]
Linux MINT Homepage [EN] Ich installierte also dieses
Ubuntu, das noch die alte Oberfläche hat, aber dennoch auf dem neuesten
Stand ist. Die neue Oberfläche heißt hier "MATE" und ist einem Gnome
nachempfunden. Erst jetzt kann es mit der Gambas-Programmiererei
weitergehen. Um die nachfolgenden Experimente auszuführen empfehle ich
also nun Linux MINT ab der Version 13.
Fortsetzung folgt, Stand 29.09.2012
|
||
|