MSP430 Temperaturmessung mit interner Diode

Gast #887227
Lesenswert?

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
Gast #887283
Lesenswert?

>benutze einen MSP430x1232 und versuche damit möglichst genau eine
>Temperaturmessung durchzuführen.
Hab ich auch schon probiert. Wenn man keine allzu hohen Anforderungen 
stellt, ist das auch OK. Aber genauer als +/-1°C wird das nicht werden. 
Allein der Unterschied der Chip-Temperatur zwischen LPM0 und 
Normalbetrieb hat bei mir -glaub ich- fast 1°C Unterschied ergeben!

>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.
???
Warum nicht einfach Excel (Trendlinie linear) zu Hilfe nehmen?
Oder selber rechnen? -> Stichwort "kleinstes Fehlerquadrat":
http://de.wikipedia.org/wiki/Methode_der_kleinsten_Quadrate

P.S.:
Der Offsetfehler ist meist wesentlich größer als der Steigungsfehler.
Es kann u.U. also ausreichen nur den Offset zu kalibrieren (mit nur 
einer Temperatur und keiner aufwändigen Messreihe)
Gast #887429
Lesenswert?

Mit Offsetkorrektur wäre Dein Fehler +/- 1°C.
Wie ich schon sagte, sehr viel genauer geht es mit dem internen 
Temp-Sensor nicht. Wenn Du's genauer haben musst, würde ich mal über 
einen externen Sensor nachdenken, allein schon deshalb, weil Du mit dem 
internen eigentlich ja die Chip-Temperatur misst und die variiert je 
nach Belastung Deines MSP430!
Gast #887444
Lesenswert?

Mmmmh vielleicht versteh ich dich falsch aber kannst du mir eventuell 
mal Offsetkorrektur etwas genauer erklären. +-1°C reicht mir aber auch 
aus aber ich bekomme unterschiede bei verschiedenen MSP von bis zu 10°C!
Gast #887453
Lesenswert?

Im Datenblatt ist doch die lineare Funktion der Temp-Spannung in 
Abhängigkeit der Temp dargestellt (mit Steigung und Offset)
Diese Werte benutzt Du doch, um umgekehrt aus der gemessenen 
Temp-Spannung die Temp zurückzurechnen. Und genau den Offset-Wert musst 
Du durch eine Messung bei einer bekannten Temp ermitteln... und zwar 
separat für jeden MSP!
Gast #887719
Lesenswert?

Christian schrieb:
>Nach meinen bisherigen Messungen sind genaue Messungen mit der
>Schätz-Diode kaum möglich. Da muss wirklich jeder MSP abgeglichen
>werden.
Das steht oben schon alles!

>Außerdem geht die Temp-Diode nur mit der internen
>Referenz-Spannung, und sonderlich genau ist die auch nicht, die hat auch
>einen Temp-Drift.
Ja, aber wieviel?
100ppm/°C !
Das fällt gegenüber dem Steigungs-/Offsetfehler nicht ins Gewicht!
#898577
Lesenswert?

Stefan wrote:
> Christian schrieb:
>>Nach meinen bisherigen Messungen sind genaue Messungen mit der
>>Schätz-Diode kaum möglich. Da muss wirklich jeder MSP abgeglichen
>>werden.
> Das steht oben schon alles!
>
>>Außerdem geht die Temp-Diode nur mit der internen
>>Referenz-Spannung, und sonderlich genau ist die auch nicht, die hat auch
>>einen Temp-Drift.
> Ja, aber wieviel?
> 100ppm/°C !
> Das fällt gegenüber dem Steigungs-/Offsetfehler nicht ins Gewicht!

Hmm ... ich denke das bei dir 2 Effekte eintreffen.

1.) Die Grundgenauigkeit der Referenz, die ja doch ganz schön variiert! 
(2,35 - 2,65 V)

2.) Der Temperaturdrift der Referenz. Dieser darf auch nicht 
vernachlässigt werden. Wenn ich mich jetzt nicht verrechnet habe sind 
das über den Temperaturbereich von -10 bis +60°C 17,5 mV und damit ca. 
5°C.

Also hier gilt es beides zu beachten.

Bei der Sache mit der "Initial Accuracy" bin ich selbst aus allen Wolken 
gefallen als ich die Chips schon im Layout verbaut hatte.... Naja next 
time  do it better :-)

Hoffe das hilft dir!
Gast #898663
Lesenswert?

Bernd F. wrote:

>Hoffe das hilft dir!
Wem? Mir oder Stephan? ;-)

>1.) Die Grundgenauigkeit der Referenz, die ja doch ganz schön variiert!
>(2,35 - 2,65 V)
Wird durch Offsetkorrektur beseitigt (sofern Referenz langzeitstabil 
ist)

>2.) Der Temperaturdrift der Referenz. Dieser darf auch nicht
>vernachlässigt werden. Wenn ich mich jetzt nicht verrechnet habe sind
>das über den Temperaturbereich von -10 bis +60°C 17,5 mV und damit ca.
>5°C.
Jein...
Für die Temp-Messung reicht VRef = 1,5V
Dann wären's nur noch 10,5mV entsprechend 3°C (was meinen selbst 
beobachteten +/-1°C doch sehr nahe kommt).
Aber selbst das könnte man noch verbessern, indem man auch die Steigung 
der Temp-Kennlinie kalibriert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren