Hallo Zusammen
Ich habe eine Testschaltung (siehe Anhang, 5V)mit einem LM35 und Atmega8
aufgebaut. (später werde ich noch an AVCC eine 10uH Spule in das Plus
schalten)
Mein Programm sieht folgendermassen aus:
1 | 'Temperaturmessung mit LM35
|
2 | '
|
3 | '"Spannungsteiler" an ADC0
|
4 | '
|
5 | 'Display
|
6 | $regfile = "m8def.dat"
|
7 | $crystal = 1000000
|
8 | $swstack = 10
|
9 |
|
10 | Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
|
11 | Config Lcd = 16 * 2
|
12 | Cursor Off
|
13 | Cls
|
14 | Waitms 10
|
15 |
|
16 | Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analogwandler definieren
|
17 |
|
18 | Config Portc.0 = Input 'ADC
|
19 |
|
20 | Dim Analogwandler As Integer 'Variable zur Aufnahme des Wertes vom Analogwandler
|
21 | Dim Volt As Single
|
22 | Dim Lm35_temperatur As Single
|
23 |
|
24 | Locate 1 , 1
|
25 | Lcd "U: Volt"
|
26 |
|
27 | Locate 2 , 1
|
28 | Lcd "T: " ; Chr(223) ; "C"
|
29 |
|
30 |
|
31 | Do
|
32 | Analogwandler = Getadc(0) 'AD-Wandler einlesen. Werte zwischen 0 und 1023
|
33 |
|
34 | Volt = Analogwandler * 4.9 '0...1024 -> 0..5000
|
35 | Volt = Volt / 1000 '0..bis 5,..
|
36 | Locate 1 , 4
|
37 | Lcd Fusing(volt , "#.###")
|
38 |
|
39 | Lm35_temperatur = Volt * 100
|
40 | Locate 2 , 4
|
41 | Lcd Fusing(lm35_temperatur , "##.#")
|
42 |
|
43 | Waitms 100
|
44 | Loop
|
45 | End
|
Das Problem ist der Display zeigt mir 0.555Volt an und dementsprechend
auch die Temperatur 55.5C effektiv habe ich aber eine Raumtemperatur von
23C
Was mir aufgefallen ist der LM35 wird extrem heiss. Ich habe den LM35
kurze Zeit mal an einen anderen Testaufbau angeschlossen dort ist
allerdings das Plus an den LM35 mit einem 2,2k Widerstand vorgeschalten
und er wird nicht heiss.
Kann mir vielleicht jemand sagen wo meine Überlegung falsch ist.