Hallo,
ich würde erstmal als Temperatursensor den Dallas-One-Wire Chip DS 1820
oder DS18S20 einsetzen, ein Digitales Thermometer, welches man einfach
an den I/O-Port anschliesst und auslesen kann, die Werte können dann von
Binär in z.B. Dezimal angezeigt werden. (Dieses Bauteil kostenlos
bestellen / siehe Beitrag im Forum unter www.AR-Online.de) Bauteil
kostet sonst 4,00 EUR bei mit zu bestellen plus Porto 1,53 EUR aber man
spart sich viel Arbeit mit dem Auswerten mit z.B. Tabellen.
Datenblatt übrigens auch unter www.Ar-Online.de !
Das Auslesen geht z.B. mit FAST-AVR problemlos durch fertige
Assistenten, bei FASTAVR (Basic-Compiler) liegt schon ein fertiges
Programm mit dem 18S20 bei.
Hier mal das Listing :
'////////////////////////////////////////////////////////////////
'/// FastAVR Basic Compiler by MICRODESIGN, www.FastAVR.com ///
'/// Temperature measurement program, 0.1C res, ///
'/// 1820.bas ///
'////////////////////////////////////////////////////////////////
$Device= 2313
$Stack = 32
$Clock = 3.6864
$Lcd = PORTD.4, rs=PORTB.4, en=PORTB.5, 16, 4
$1Wire = PORTD.3
$Source= On
Dim T As Word
Dim d0 As Byte, d1 As Byte, d2 As Byte, d3 As Byte
Dim d4 As Byte, d5 As Byte, d6 As Byte, d7 As Byte
Dim crc As Byte
Declare Sub Read1820()
Declare Sub CalcTmp()
Lcd "DS1820 T="
Do
If 1Wreset Then
1Wwrite &hcc; &h44
WaitMs 250
1Wreset
1Wwrite &hcc; &hbe
Read1820()
Else
Locate 1,10: Lcd "---"
End If
WaitMs 200
Loop
'/////////////////////////////////////////////////////
Sub Read1820()
1Wread d0,9 ' read all 9bytes
If Crc8(d0,9)=0 Then ' check Crc, if OK
CalcTmp() ' calc temp
Else
Locate 1,10: Lcd "CRC"
End If
End Sub
'/////////////////////////////////////////////////////
Sub CalcTmp() ' calc for 0.1C resolution
' T is 10 times greater (integer)
If d0.1 Then Decr d0 ' if odd decrement
T=(50*d0-25+(100*(d7-d6))/d7)/10
Locate 1,10: Lcd T
End Sub
Das wars.
Prüfe doch erstmal, ob Du das Display in Gang bekommst, zeigt es schon
mal Zahlenwerte richtig an, z.B. einen Zähler ?
Gibt es Fehlermeldungen usw. ?
Gruss
A. Arndt