Allgemein
Der LM92 ist ein digitaler Temperatur-Sensor mit einer Genauigkeit von ±0,33°C. Die Kommunikation des Sensors findet über I2C (TWI) Interface statt.
Anschlüsse
Adresse
Der LM92 besitzt eine 7-Bit Slave Adresse. Die fünf MSB der Adresse sind Hardwaremäßig vorgegeben und haben den Wert: „10010“. Die zwei letzten Bits (LSB) sind mit den Pins A1-A0 verbunden und können mit GND oder +VS verbunden werden. (Datenblatt Seite: 9)
Das 8-Bit des Registers wird benötigt, um ein lesen oder schreiben zu signalisieren.
Register
Der LM92 besitzt folgende Register:
- Pointer Register
- Temperature Register
- Configuration Register
- THYST, TLOW, THIGH und T_CRIT_A Register
Um lediglich eine Temperatur auszulesen reicht das „Temperature Register“. Ein Zugriff auf das enthaltene Konfigurationsregister ist nicht notwendig. Das Zeigerregister legt fest, welches der 4 Register angesprochen wird.
Kommunikation
Sie startet wie immer beim I²C-Bus mit einem START. Danach folgt die Adresse des Slaves. Nun muss ein Byte gesendet werden, welches dem Zeigerregister mitteilt, auf welches Register zugegriffen werden soll. Der Zeiger auf das entsprechende Register wird intern gespeichert, so dass man nicht jedes Mal das Temperaturregister neu auswählen muss, auf welches man zweifelsohne am häufigsten zugreifen wird. Für das Temperaturregister muss als Pointerbyte (Zeigerbyte) 0x00 gesendet werden, für das Konfigurationsregister 0x01. Musste das Zeigerbyte gesetzt werden, so muss nach dem Beschreiben des Pointerregisters ein REPEATED START ausgeführt werden. Danach muss die Adresse des Sensors erneut gesendet werden. Dann kann auf die einzelnen Register zugegriffen werden. Steht der Zeiger bereits auf dem richtigen Register, so reicht ein normaler START gefolgt von der Adresse. Da der das Pointerregister nach dem Power-On automatisch auf das Temperaturregister zeigt, bleibt dem Anwender, der nur an der Temperatur interessiert ist, die obige Prozedur erspart.
Um die Temperatur zu erhalten, müssen Lesezyklen erzeugt werden. Dann müssen zwei Bytes ausgelesen werden, von denen der Master das erste mit ACK zu bestätigen hat. Die Temperatur wird mit dem MSB (most significant bit) voran übertragen.
BILD
Der Sensor braucht für eine Temperaturkonvertierung 100ms. Diese führt er selbständig aus, es sei denn man versetzt ihn in den hier nicht weiter erklärten Energiesparmodus. Man sollte das nur nach dem Einschalten beachten, da der Inhalt des Temperaturregisters in den ersten 100ms alles andere als die richtige Temperatur enthält.
Zu beachten ist, dass im Temperaturregister der Wert der Temperatur mit dem Bit 3 (D3) beginnt und mit dem Bit 15 (D15) endet, wobei das (D15) das Vorzeichen-Bit ist. Die Daten liegen im Zweierkomplement vor. (Datenblatt Seite: 13)
Beispiel
Am Temperatur-Register liegt folgender Binärwert an:
Schaltungsaufbau
BILD
Hardware
- ATMEL Evaluations-Board V2.0.1
- ATMEL Addon-Board V1.0
- ATMEL ATmega8 Mikrocontroller
- mySmartUSB light ISP-Programmer
Software
Main-Routine:
[file lang=“c“]wp-content/plugins/file-inliner/snippets/lm92-main.c[/file]