Der Temperatursensor LM75

Mit dem IC LM75 wird eine komplette Temperaturüberwachung möglich. Auf dem IC ist ein Temperatursensor, eine Watchdog-Schaltung und ein I2C-Interface integriert. Externe Komponenten sind nicht erforderlich, damit ist der Anschluss sehr einfach. Wir benutzen nur die Temperaturfunktion. Die Auflösung beträgt 0,5Grad. In unserem Beispiel werden nur ganze Temperaturwerte übertragen.

Im ersten Programmteil wird die I2C-Schnittstelle und das LCD-Display initialisiert. Die Befehle für das LCD-Display werden hier nicht näher erläutert, weitere Infos sind hier zu finden.

Die I2C-Schnittstelle

Der Attiny2313 emuliert eine I2C-Schnittstelle softwaremäßig, daher muss dem Controller mitgeteilt werden, wie die Schnittstelleangeschlossen ist. Dazu dienen die Befehle

Config Scl = Portb.5
Config Sda = Portb.7
I2cinit


Mit I2cinit wird die Schnittstelle initialisiert, allerdings findet dann noch kein Datenausstausch statt. Dies muss nur ein mal erfolgen.

Wichtige Befehle der I2C-Schnittstelle
I2cstartStartet die Datenübertragung
I2cstopBeendet die Datenübertragung
I2cwbyteDer Attiny sendet ein Byte an den Sklaven
I2crbyteDer Attiny empfängt ein Byte vom Sklaven
ACKTeilt dem Sklaven mit, das er das nächste Byte übertragen soll
NACKTeilt dem Sklaven mit, das kein weiteres Byte übertragen werden soll

Temperatur auslesen
Das Programm sieht folgendermaßen aus:

 I2cstart
 I2cwbyte &B10010001
 I2crbyte Wert , Nack
 I2cstop
 
Mit I2cstart wird die Datenübertragung gestartet. Der Attiny sendet die Schreibadresse an den LM75. Dieser sendet die Temperatur an den Attiny. Durch den Befehl NACK wird die Übertragung beendet und mit I2cstop der Datenbus freigegeben.

Negative Temperaturen
Ein Byte kann nur die Werte 0 bis 255 annehmen. Negative Zahlen sind nicht vorgesehen. Deshalb muß eine negative Temperatur durch die Software erzeugt werden. Die Werte 0 bis 120 sind für die positiven Temperaturen reserviert. Die negativen Temperaturen durch die Werte 255 bis 200 . Der übertragene Wert 255 entspricht -1 Grad und der Wert 200 der Temperatur -55 Grad.