Home    Impressum / Datenschutz    Shop    Download    Links     Blog  

Der I2C-Temperatursensor mit LM75

Temperaturen digital erfassen zwischen -55°C und +125°C

 

Mit dem I2C-Temperatursensor können Sie folgende Geräte erweitern:

- AVR-Microcontroller
- Arduino
- Raspberry Pi
- BASIC-Matchbox
- C-Control
- Mit dem I2C-RS232-Koppler oder
  dem I2C-Modem Temperaturen zum PC einlesen

Mit dem I2C-Temperaturmodul lassen sich Raum- oder Oberflächentemperaturen zwischen -55 °C und +125 °C in 0,5 °C Schritten erfassen. Als Sensor dient der I2C-Baustein LM75 von National Semiconductor

Aufbau:
Das nachfolgende Blockschaltbild zeigt den Aufbau des Chips sowie die Pin-Belegung.


Pin Bezeichnung Bedeutung
1 SDA

 Datenleitung

2 SCL  Taktleitung
3 O.S.  Schaltausgang
4 GND  Masse
5 A2  Über die Adress-Eingänge lassen sich bis
 zu 8 Bausteine adressieren
6 A1
7 A0
8 +Vs  Versorgungsspannung (+5V)

Programmierung:
Der Baustein hat vier Register welche über ein Zeiger (Pointer) angesprochen werden. Die folgende Tabelle zeigt den Aufbau des Zeigers

7 6 5 4 3 2 1 0 Register
0 0 0 0 0 0 0 0

 Temperaturregister

0 0 0 0 0 0 0 1  Konfigurationsregister
0 0 0 0 0 0 1 0  THYST - Register
0 0 0 0 0 0 1 1  TOS - Register

 

0 = Temperatur-Register - 2 Byte (nur Lesen)
In diesem Register steht der gemessene Temperaturwert. Das Register hat 2 Byte mit folgendem Aufbau

High-Byte (1. Byte)   Low Byte (2. Byte)
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Temperatur Vorkommastelle   NK  

Im ersten Byte steht der Vorkomma-Wert der Temperatur.
Im zweiten Byte steht entweder "0" bei z.B. 20,0 °C oder 128 bei z.B. 20,5 °C.

Lesen der Ist-Temperatur:
Will man die Temperatur über den I2C-Bus auslesen braucht man den Zeiger eigentlich gar nicht setzen, da dieser bei Spannung EIN "0" ist. Es genügen also folgende Anweisungen:

START Adresse +1 ACK
vom LM75
1. Byte lesen
Temperatur VK
ACK
vom Master
2. Byte lesen
Temperatur VK
NO ACK
vom Master
STOP

Wurde der Zeiger verstellt muss er vorher mit "0" belegt werden. Die Anweisungen lauten in diesem Fall so:

START Adresse ACK
vom LM75
"0" schreiben
(Zeiger auf 0 stellen)
ACK
vom LM75
STOP
 
START Adresse +1 ACK
vom LM75
1. Byte lesen
Temperatur VK
ACK
vom Master
2. Byte lesen
Temperatur VK
NO ACK
vom Master
STOP

 

1 = Konfigurations-Register - 1 Byte (lesen / schreiben)
Über das Konfigurationsregister lassen sich Eigenschaften des LM75 einstellen. Bei Spannung EIN sind  alle Bits "0".

7 6 5 4 3 2 1 0
0 0 0 Anzahl Zyklen bis
zum Umschaltung
OS-Pin
0/1 aktiv
Interrupt
Modus
Spar-
-modus

Bit 0 - Stromsparmodus 1 = EIN  0 = AUS:
1 = Aktivierung des Stromspar-Modus (unter 1yA). Der OS-Ausgang wird zurückgesetzt.

Bit 1 - Interrupt - Modus:
0 = Compare-Modus
Der Ausgang "OS" folgt den eingestellten Temperaturschwellen. In der Grundstellung schaltet der Ausgang bei 80°C EIN und bei 75°C wieder aus.
1 = Interrupt-Modus
Der Ausgang "OS" wird "1" wenn die Schaltschwelle über- oder unterschritten wird. Der Ausgang wird durch einen Lesevorgang des Registers zurückgesetzt.

Bit 2 - OS-Pin:
Über dieses Bit kann die "Schaltrichtung" des OS-Ausganges umgekehrt (invertiert) werden

Bit 3, 4 - Messzyklen bis zur Umschaltung:
Über die beiden Bits kann eingestellt werden wie viele Messzyklen der Temperaturwert über- oder unterschritten sein muss bis der OS-Ausgang geschaltet wird. Man kann damit ein "flattern" des Ausganges vermeiden.

Bit 5, 6, 7 - nicht belegt:
Müssen mit "0" belegt bleiben.

Schreiben des Konfigurationsbytes:
Mit den nachfolgenden Anweisungen wird das Konfigurationsbyte zum LM75 geschrieben:

START Adresse ACK
vom LM75
"1" schreiben
(Zeiger auf 1 stellen)
ACK
vom LM75
Konfigurationsbyte
schreiben
ACK
vom LM75
STOP

Lesen des Konfigurationsbytes:

START Adresse ACK
vom LM75
"1" schreiben
(Zeiger auf 1 stellen)
ACK
vom LM75
STOP
 
START Adresse +1 ACK
vom LM75
Konfigurationsbyte
lesen
NO ACK
vom Master
STOP

 

2 = THYST - Register unterer Schaltpunkt - 2 Byte (lesen / schreiben)
Dieses Register enthält den unteren Schaltpunkt des OS-Ausganges also die Temperatur bei dem der OS-Ausgang wieder ausgeschaltet wird.
Der Aufbau des Register ist identisch mit dem Temperaturregister. (Siehe oben)

Schreiben des THYST-Registers:
Mit den nachfolgenden Anweisungen wird das THYST-Register geschrieben:

START Adresse ACK
vom LM75
"2" schreiben
(Zeiger auf 2 stellen)
ACK
vom LM75
 
1. Byte schreiben
THYS Temperatur VK
ACK
vom LM75
2. Byte schreiben
THYS Temperatur NK
ACK
vom LM75
STOP

Lesen des THYST-Registers:

START Adresse ACK
vom LM75
"2" schreiben
(Zeiger auf 2 stellen)
ACK
vom LM75
STOP
 
START Adresse +1 ACK
vom LM75
1. Byte lesen
THYS Temp. VK
ACK
vom Master
2. Byte lesen
THYS Temp. NK
NO ACK
vom Master
STOP

 

3 = TOS - Register oberer Schaltpunkt - 2 Byte (lesen / schreiben)
Dieses Register enthält den oberen Schaltpunkt des OS-Ausganges also die Temperatur bei dem der OS-Ausgang eingeschaltet wird.
Der Aufbau des Register ist identisch mit dem Temperaturregister. (Siehe oben)

Schreiben des TOS-Registers:
Mit den nachfolgenden Anweisungen wird das THYST-Register geschrieben:

START Adresse ACK
vom LM75
"3" schreiben
(Zeiger auf 3 stellen)
ACK
vom LM75
 
1. Byte schreiben
TOS Temperatur VK
ACK
vom LM75
2. Byte schreiben
TOS Temperatur NK
ACK
vom LM75
STOP

Lesen des TOS-Registers:

START Adresse ACK
vom LM75
"3" schreiben
(Zeiger auf 3 stellen)
ACK
vom LM75
STOP
 
START Adresse +1 ACK
vom LM75
1. Byte lesen
TOS Temp. VK
ACK
vom Master
2. Byte lesen
TOS Temp. NK
NO ACK
vom Master
STOP

 

Beispiele als Excel Makro
I2C-Ps-LM75-Test.xls und port.dll als ZIP-Datei (68 kB)
Excel-Makro mit dem die Funktion des I2C-Temperatursensors mit dem I2C-Koppler getestet werden kann.
I2C-Modem-Test.zip (83 kB)
Excel-Makro
mit je einem Beispiel zur Ansteuerung der I2C-Ausgabekarte,
I2C-Eingabekarte und dem Temperatursensor LM75 mit dem I2C-Modem und der port.dll
vba-makros.pdf (528 kB)
Bei den Makros kann es je nach Sicherheitseinstellungen zu Fehlermeldungen kommen. Eine Anleitung wie Sie die Makros ausführen können finden Sie in diesem Dokument

 

Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen.