matlen
31.10.2006, 18:39
Hallo. Ich versuche mich gerade so experimentierhalber mit dem aufbau eines Thermometers mit LCD Anzeige. Nun habe ich aber Probleme so einigermaßen genaue Ergebnisse zu bekommen.
Im Einsatz ist ein Atmega8, ein LCD und eben der KTY der per Spannungsteiler (2,2K) am Atmega hängt.
Ich habe einmal den Wert ermittelt den der ADC bei 0°C aus gibt und den Wert bei 100°C
Das Problem ist halt das der KTY wohl nicht ganz linear ist. Kann man das irgendwie Softwaremäßig so einigermaßen Kompensieren?
Halte ich den KTY in Eiswasser Zeigt mir mein Thermometer zwar 0°C an und bei Kochendem Wasser zeigt es auch 100°C an nur lasse ich ihn so im raum liegen kommt als ergebniss 32°C raus obwohl laut 2 anderen Raumthermomter hier 25,5°C sind (Der Kamin ist an)
Und kann man die auflösung auch .erhöhen? Wenn ich TLow von THigh abziehe bleiben ja nur 96 Werte für 100 Grad über oder verstehe ich das falsch?
Hier mal ein Programmauszug:
Tlow = 490 ' 0 °C
Thigh = 586 ' 100 °C
Do
Waitms 400
W = Getadc(0)
T1 = W - Tlow
T2 = Thigh - Tlow
Temp = T1 / T2
Temp = Temp * 100
Locate 2 , 1 ' Zeigt den aktuellen ADC Wert an
Lcd Str(w)
Locate 4 , 3 ' Temperaturanzeige
Lcd "Temp " ;
Locate 4 , 8
Lcd Fusing(temp , "##.#") ; " " ; Chr(223) ; "C "
Loop
PS: Bei 25,5 °C laut anderem Thermometer zeigt Adc 521 an.
Im Einsatz ist ein Atmega8, ein LCD und eben der KTY der per Spannungsteiler (2,2K) am Atmega hängt.
Ich habe einmal den Wert ermittelt den der ADC bei 0°C aus gibt und den Wert bei 100°C
Das Problem ist halt das der KTY wohl nicht ganz linear ist. Kann man das irgendwie Softwaremäßig so einigermaßen Kompensieren?
Halte ich den KTY in Eiswasser Zeigt mir mein Thermometer zwar 0°C an und bei Kochendem Wasser zeigt es auch 100°C an nur lasse ich ihn so im raum liegen kommt als ergebniss 32°C raus obwohl laut 2 anderen Raumthermomter hier 25,5°C sind (Der Kamin ist an)
Und kann man die auflösung auch .erhöhen? Wenn ich TLow von THigh abziehe bleiben ja nur 96 Werte für 100 Grad über oder verstehe ich das falsch?
Hier mal ein Programmauszug:
Tlow = 490 ' 0 °C
Thigh = 586 ' 100 °C
Do
Waitms 400
W = Getadc(0)
T1 = W - Tlow
T2 = Thigh - Tlow
Temp = T1 / T2
Temp = Temp * 100
Locate 2 , 1 ' Zeigt den aktuellen ADC Wert an
Lcd Str(w)
Locate 4 , 3 ' Temperaturanzeige
Lcd "Temp " ;
Locate 4 , 8
Lcd Fusing(temp , "##.#") ; " " ; Chr(223) ; "C "
Loop
PS: Bei 25,5 °C laut anderem Thermometer zeigt Adc 521 an.