Der Temperatursensor LM75Mit
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 I
2C-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
I2cinitMit
I2cinit wird die Schnittstelle initialisiert, allerdings findet dann
noch kein Datenausstausch statt. Dies muss nur ein mal erfolgen.
Wichtige Befehle der I2C-Schnittstelle
I2cstart | Startet die Datenübertragung |
I2cstop | Beendet die Datenübertragung |
I2cwbyte | Der Attiny sendet ein Byte an den Sklaven |
I2crbyte | Der Attiny empfängt ein Byte vom Sklaven |
ACK | Teilt dem Sklaven mit, das er das nächste Byte übertragen soll |
NACK | Teilt 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.