Die eigene Klasse LM75Für den komfortablen Zugriff auf den Temperatursensor vom Typ LM75 wird als nächstes eine eigene Klasse mit dem Namen Der nachfolgende Quelltext zeigt die Implementierung der Klasse
Wie in Listing 1 zu sehen ist, kapselt die Methode Zeile 32 zeigt den eigentlichen Funktionsaufruf, der den Temperaturwert aus dem Sensor ausliest. Dabei ist zu sehen, dass das Kommando-Byte 0x00 (für Details: s.u.) gesendet wird, um dem LM75 mitzuteilen, dass er nun seinen Temperaturwert über den I²C-Bus senden soll. Der Wert wird dann in das Byte-Array Der Temperaturwert besteht aus insgesamt 9 Bits und muß daher in zwei einzelnen Bytes ausgelesen werden. Im ersten Byte steht der ganzzahlige Anteil der aktuellen Temperatur (in °C). Dabei fungiert das oberste Bit 7 des ersten Bytes als Vorzeichen-Bit: Eine logische "1" bedeutet, daß es sich um einen negativen Temperaturwert handelt. Für die Umrechnungsformel, die den Temperaturwert zurückgibt, können wir das jedoch vernachlässigen, da das bei JControl genauso ist. Im zweiten Byte steht nun der (restliche) Bruchteil eines Grades. Hiervon wird beim LM75 jedoch nur das oberste Bit verwendet und mit 1/256°C auflöst. Das heißt: Ist das zweite Byte 0x00, so beträgt der Rest 0°C. Ist es 0x80, so beträgt der Rest 0,5°C. Hier noch einmal die Formel, die die beiden Bytes in einen Temperaturwert umwandeln:
Der Ganzzahlige Anteil wird hierbei mit 10 multipliziert, da die kleinen JControl-Varianten keine Fließkomma-Zahlen unterstützen. Auch der Bruchteil des Grades wird dabei gleich mit 5 multipliziert. Die Methode Wenn die Anschlüsse des LM75 beschaltet wurden so wie es im Abschnitt "Der Versuchsaufbau" gezeigt ist, gilt für den LM75 die Sensor-Adresse 144 (Hexadezimal: 0x90). Diese Adresse wird daher im folgenden Abschnitt Ein kleines Testprogramm auch für die Ansteuerung des LM75-Temperatursensors verwendet. Details zum Kommando-Byte: Das Kommando-Byte teilt dem Sensor mit, auf welches interne Register zugegriffen werden soll. Da der Temperaturwert im LM75 in Register 0 steht, ergibt sich das Kommando-Byte auch zu 0, bzw. zu 0x00 in hexadezimaler Darstellung. Alle hier aufgeführten Informationen bezüglich des LM75 sowie weitere Details sind in dessen Datenblatt aufgeführt. |