Hallo,
Ich benutze einen MSP430x1232 und versuche damit möglichst genau eine 
Temperaturmessung durchzuführen. Da das ganze ein Transpondersystem 
werde soll ist der Stromverbrauch so niedrig wie möglich zu halten. 
Daher dachte ich kann die Temperatur einfach über die interne Diode 
erledigt werden. Das ganze funktioniert auch ganz gut und wurd wie folgt 
implementiert:
| 1 |    ADC10CTL0 |= ENC + ADC10SC;         // Sampling and conversion start
 | 
| 2 | //    ADC10CTL0 |= ENC + ADC10SC;         // Sampling and conversion start
 | 
| 3 | //    _BIS_SR(CPUOFF + GIE);              // LPM0 with interrupts enabled
 | 
| 4 |     while ((ADC10CTL1 & ADC10BUSY)) ;   // ADC10BUSY?
 | 
| 5 |     //  oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = x*423/1024 - 278 
 | 
| 6 |     temp = ADC10MEM;
 | 
| 7 | //    intDegC = ((temp - 673) * 423) / 1024;  ... * 8       
 | 
| 8 |     intDegC = ((temp - 673) * 423) / 128;
 | 
Das Ergebniss muss dann nur noch einmal mit 8 multipliziert werden und 
es kommt der Temperaturwert in °C raus. Allerdings stelle ich eine sehr 
große Abweichung allgemein und vor allem bei verschiedenen Sensoren 
fest. Um das zu kalibrieren habe ich eine Testreihe in einer 
Thermokammer gefahren. Dort habe ich von -10°C bis 60°C alle 5°C einen 
Wert aufgenommen. Daraus wollte ich mir dann eine Geradengleichung 
erstellen um den Fehler zu minimieren.
Allerdings komme ich jetzt nicht wirklich weiter. Wenn ich mir die 
DIfferenz vom gemessenen Wert zum realen Wert nehme, daraus eine 
quadratische Trendlinie ableite und dann den Wert auf die gemessen Wert 
addiere erhalte ich annähernd den realen Wert. Jetzt ist mein Problem 
daber das die Geradengleichung nur für diese Messreihe gilt. Ich brauche 
aber ja eine Gleichung die auf alle Messlinien angewendet werden kann.
Hoffe hier kann mir jemand dabei helfen. Wenn noch was unklar ist dann 
schreibt das einfach dann versuche ich das noch weiter zu erläutern.
Mfg
Stephan