Hier ein kleines Beispielprogramm wie einfach man mit dem Sensor IC lm75 und einer RN-Control die Temperatur messen und anzeigen kann. Vielleicht braucht jemand mal sowas.
Der Sensor lm75 belegt dabei keinerlei Port da er einfach über 2 Drähte am I2C-Bus angeschlossen wird. Ansonsten benötigt das IC nur noch +5V und GND, sonst nix.
Dieses kleine Programm liest die Temperatur aus und zeigt diese über die RS232 Schnittstelle an.
Das Programm ist für RN-Control mit 16 Mhz und Mega 16 konfiguriert, kann jedoch auch durch andere Include-Datei für Mega 32 compiliert werden.
Die Unterroutine verwendet eine Integer-Variable Temperatur um auch das Vorzeichen bei negativen Temperaturen einfach mit Print ausgeben zu können. Man könnte natürlich auch eine Gleitkommazahl verwenden.
Code:
'###################################################
' rncontrol_lm75.BAS
'für
'RoboterNetz Board RN-Control ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren
'
'Aufgabe:
' Temperatur messen mit IC LM75 über den I2C Bus
' Das Beispiel zeigt wie einfach es ist in Basic
' mit RN-Control die Temperatur zu messen
' Benötigt wird nur das IC LM75
' Das IC wird am I2C-Bus angeschlossen und belegt keinen Port
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'Eigene Programmbeispiele sind im Roboternetz gerne willkommen!
'##############################################################
Declare Sub Showtemperatur()
$regfile = "m16def.dat"
Const Lm75slavewrite = &H90
Const Lm75slaveread = &H91
Dim Lm75high As Byte
Dim Lm75low As Byte
Dim Temperatur As Integer
Dim Nachkommastelle As String * 2
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
I2cinit
Start:
Showtemperatur
Wait 2
Goto Start
Sub Showtemperatur()
I2cstart
I2cwbyte Lm75slaveread
I2crbyte Lm75high , Ack
I2crbyte Lm75low , Nack
I2cstop
If Lm75high > 127 Then
Temperatur = Lm75high And 127
Temperatur = Not Temperatur
Incr Temperatur
Else
Temperatur = Lm75high
End If
Lm75low = Lm75low And 128
If Lm75low > 0 Then
Nachkommastelle = ",5"
Else
Nachkommastelle = ""
End If
Print "Die Temperatur beträgt: " ; Temperatur ; Nachkommastelle ; " Grad"
End Sub
Der Sensor wird hier sehr gut beschrieben:
http://www.goblack.de/desy/digitalt/i2c/lm75.html
Lesezeichen