www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Temperaturmessung mit interner Diode


Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
   ADC10CTL0 |= ENC + ADC10SC;         // Sampling and conversion start
//    ADC10CTL0 |= ENC + ADC10SC;         // Sampling and conversion start
//    _BIS_SR(CPUOFF + GIE);              // LPM0 with interrupts enabled
    while ((ADC10CTL1 & ADC10BUSY)) ;   // ADC10BUSY?
    //  oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = x*423/1024 - 278 
    temp = ADC10MEM;
//    intDegC = ((temp - 673) * 423) / 1024;  ... * 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Stephan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe angefangen mit der Messreihe da der Fehler den ich festgestellt 
habe nicht linear ist. Somit fällt auch eine einfache Offsetkorrektur 
weg. Als Anhang habe ich mal den Fehler dargestellt.

Mfg

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@edit
Auf der X-Achse ist die reale Temperatur und auf der Y-Achse der Fehler 
dargestellt.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach meinen bisherigen Messungen sind genaue Messungen mit der 
Schätz-Diode kaum möglich. Da muss wirklich jeder MSP abgeglichen 
werden. 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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!

Ich wollte das nur nochmal unterstreichen.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei Bausteinen der 2xx Serie z.b. 2132 sind von TI im Infomation Memory 
A bereits Referenzmesswerte (30° und 80°)) vorhanden.

mfg

Autor: Bernd F. (derbernd)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.