www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik interne Temperaturmessung beim Xmega


Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

hat jemand eine Ahnung wie die Auflösung bzw. die Interprätation der 
internen Temperaturwandlung ist beim Xmega ist?? Hab weder einen Beitrag 
hier im Forum finden können, noch was brauchbares aus'm Datasheet.

Hab die Wandlung am laufen, aber ob das was ich auslese brauchbar ist, 
weiss ich nicht... kann somit auch nix umrechnen ;)

Danke vorab schon mal!
ADC ist im 12-Bit signed Mode (also 11 Bit Auflösung)

Modesetting:
// Controller Interne Temperaturmessung
ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,
                                 ADC_CH_INPUTMODE_INTERNAL_gc,
                                 ADC_CH_GAIN_1X_gc);

Muxer:
ADC_Ch_InputMux_Config( &ADCA.CH1, ADC_CH_MUXINT_TEMP_gc, 
ADC_CH_MUXNEG_PIN0_gc );

Auslesen des CH1 bringt 620 ... und nu??

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das würde mich auch mal interessieren.

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

steht im Daten blatt nicht etwas von
[quote]
  TEMPSENSE0 - Temperature Sensor Calibration Register 0
TEMPSENSE0 and TEMPSENSE1 contains the 12-bit ADCA value from a 
temperature measurements done with the internal temperature sensor. The 
measurements is done in production
test at 85C and can be used for single- or multi-point temperature 
sensor calibration.
...

25.3.4       Internal inputs
Four internal analog signals can be selected as input and measured by 
the ADC.
• Temperature sensor
• Bandgap voltage
• VCC scaled
• DAC output
The voltage output from an internal temperature reference can be 
measured with the ADC and
the voltage output will give an ADC result representing the current 
temperature in the microcon-
troller. During production test, the ADC measures a fixed temperature 
using the internaltemperature sensor, and the value is store in the 
production calibration row and can be used for
temperature sensor calibration.[/quote]

Also der Wert für 85 Grad Celsius ist bekannt.
Wenn Du also einen Kaltstart bei 20 Grad machst und sofort mißt, 
könntest Du vielleicht etwas sinnvolles hinbekommen.

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm, irgendwie bringt mir das nicht sehr viel....

Der 85°C-Wert den die atmel fab da reinschreibt, bringt mir doch 
eigentlich nur was, wenn "ich" weiss das ich jetzt 85°C Tu habe, dann 
seh ich evtl. eine Abweichung und kann somit mein Ergebnis Offset 
kompensieren.

Mit dem 85°C Wert und einer unbekannten Tu kommt man nicht wirklich 
weiter, oder? Eine Differenzbildung ist dann ja immer noch ein 
unbekanntes Delta, bzw. Digit/°C, ganz zu schweigen das es sowieso nicht 
linear sein wird...

Ich bräuchte einen formellen Zusammenhang oder eine Tabelle um 
weiterzukommen...

trotzdem danke für die Info

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man von einem Linearen Zusammenhang ausgeht, braucht man zwei 
Punkte um die zwei unbekannten der Kennlinie (Steigung, Offset) zu 
berechnen. Man hat aber nur einen, das heißt man müsste, wie schon 
gesagt, einen zweiten Punkt aufnehmen (was dann wieder mit 
Ungenauigkeiten verbunden wäre) oder Atmel gibt entweder Offset oder 
Steigung der Gerade im Datenblatt vor (was ich aber noch nicht entdecken 
konnte).

Soweit zur Problematik.

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine Rede ;)

Autor: budruz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist der Senzor da nur den Xmega gegen hohe temperatur zu 
schützen?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie soll der Code auf zu hohe Außentemperaturen reagieren?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und wie soll der Code auf zu hohe Außentemperaturen reagieren?

Einen Lüfter über einen Portpin einschalten. ^^

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Temperatursensor ist sicher nur als extremwertgeber gedacht und 
keinesfalls als hochauflösendes Thermometer, sonst stünden die Daten und 
Formeln zur Berechnung mit Sicherheit im Datenblatt. Auch wird der 
Sensor in seinen Werten von Chip zu Chip streuen.

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn er nur als Extremwertgeber nutzbar ist, dann kann man wohl nix 
anderes machen, als den in der Signature Row in TEMPSENSE0 / TEMPSENSE1 
abgelegten Wert mit dem aktuell gemessenen Wert vergleichen und weiss 
somit das 85°C vorhanden sind, mehr ist dann wohl nicht möglich!? Seh 
ich das richtig?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Najaa - so extrem nun auch nicht. Es wird wohl möglich sein, über 
manuelle Kalibrierung von 2 Punkten eine Temperatur in Grad Celsius zu 
messen, aber das muß bei jedem Chip wieder neu vermessen werden. Wer´s 
mag...

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na dann lass ich's lieber...schade eigentlich

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso falls doch jemand Interesse an dem Schätzeisen hat!
In der Application Note AVR122: Calibration of the AVR's internal 
temperature reference
Ist die prinzipielle Vorgehensweise erklärt.

Dank geht an Travel Rec. für die guten Hinweise!

Tschö

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht interessant aus. Ich frage mich aber warum TravelRec sich so 
sicher ist, dass das beim ATxmega genau so sein sollte. Denn immerhin 
bekommt man hier einen (augenscheinlich sehr genauen 16 Bit-) 
Kalibrationswert im Chip mitgeliefert.
Muss also gar nicht sein, dass das Ding so ein Schätzeisen ist, wie bei 
anderen AVRs.
Vielleicht ist der Temperatursensor ja (wie viele andere Sachen) noch 
TBD (To be determined).

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich frage mich aber warum TravelRec sich so
>sicher ist, dass das beim ATxmega genau so sein sollte.

Moment: ich habe keinen Vergleich mit den Temp-Sensoren der Tinys 
angestellt. Ich gehe nur davon aus, daß der Sensor im XMega sooo genau 
nicht sein kann, sonst wäre er direkt in der Feature-Liste und mit 
separatem Beschreibungstext im Manual aufgetaucht. Es gibt auch keine 
Appnote, wie bei allen anderen wichtigen Peripherien.

Ich nehme mich morgen der Sache mal an. Schreibe sowieso gerade an einem 
Projekt mit XMega und ADC herum. Also dann bis morgen ;-)

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. schrieb:
>>Ich frage mich aber warum TravelRec sich so
>>sicher ist, dass das beim ATxmega genau so sein sollte.
>
> Moment: ich habe keinen Vergleich mit den Temp-Sensoren der Tinys
> angestellt. Ich gehe nur davon aus, daß der Sensor im XMega sooo genau
> nicht sein kann, sonst wäre er direkt in der Feature-Liste und mit
> separatem Beschreibungstext im Manual aufgetaucht.
Ok, stimmt ;)

> Es gibt auch keine
> Appnote, wie bei allen anderen wichtigen Peripherien.
Noch nicht. Naja, wahrscheinlich kommt da auch nichts mehr.

> Ich nehme mich morgen der Sache mal an. Schreibe sowieso gerade an einem
> Projekt mit XMega und ADC herum. Also dann bis morgen ;-)
Bin gespannt.

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also die ganzen Vermutungen könnt ihr euch ersparen, habe den Hinweis 
auf die App Note und den Hinweis das die Vorgehensweise die gleiche ist 
vom Atmel Support bekommen...

Der Kalibrierte Wert mag hochgenau sein, aber die Aufnahme eines zweiten 
Punkts ist immer noch nötig.. und dann kann es sogar sein, das es 
relativ genau ist das Ganze... aber ich kann mir in meiner Applikation 
keine "Ich erfasse jetzt einen zweiten definierten Temperaturwert 
Algorithmus" erlauben, da es kein Einzel-Projekt ist, sondern eine 
Serienfertigung in hohen Stückzahlen geplant ist, da wäre es einfach 
viel zu aufwendig!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe mal eine Wandlung gestartet mit interner Referenz 1.00V 
und im signed mode, Gain1, das Ergebnis bei Zimmertemperatur (etwa 24°C) 
liegt bei dezimal 1670, mit einer kleinen Glühlampe aufgeheizt brachte 
der Sensor 1720, ich schätze mal, daß es 35-40 Grad waren. Die 
Kalibrierdaten dieses Controllers sagen 3769 bei 85°C, das könnte ja 
hinkommen. Für genauere Messungen müßte ich mal einen Temperatursensor 
auf den XMega kleben und mitloggen. Das packe ich aber momentan zeitlich 
nicht. ich habe auch mal an den Atmel-Support geschrieben.

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nur mal so in den Raum geworfen, warum machen die Hersteller (Atmel) 
nicht die zweite Referenzmessung und erfreuen den Anwender mit zwei 
kalibrierten Werten, die zwei Register müssten doch noch zu finden sein, 
wo man die abspeichern kann ;) Wenn man bei 85°C einen Referenzwert 
erfasst muss das doch theoretisch auch bei 25°C möglich sein. Für den 
Anwender ist es ja immer mit Aufwand verbunden den zweiten Punkt zu 
definieren!?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Najaa - Der Atmel-Support hat sich schon gemeldet und ebenfalls noch 
keine Antwort auf unsere Fragen gefunden. Der Herr will sich nun mit der 
IC-Entwicklung bei Atmel kurzschließen. Das sollte uns sicher 
weiterbringen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke noch mal für eure Bemühungen!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier die neuesten Informationen:

Atmel schrieb:

I now have some more information regarding the temperature sensing.

1) The 1.00 V reference is used for all calibration measurements.

2) As for temperature sensitivity, the assumption is that a value of 
0x0000 represents 0 Kelvin,
while a reading equal to the calibration value represents 358 Kelvin 
(85C, as you mentioned).

Of course, with only this one calibration point, the accuracy is not 
very good.
We suggest using a two-point calibration scheme to improve on this.

I hope this is all you need.

Best Regards,
Martin Etnestad Johansen
Atmel Technical Support Team

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, dachte ich mir doch sowas! Die angedachte Kalibrierung ist also 
eine lineare Interpolation, wobei die gerade durch den 
Kalibrierungspunkt und durch (0x0000|0 K) bzw (0x0000|-273,15°C) geht

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe ich das jezt auch verstanden ;-). Die Sache ist nur die, daß die 
Kalibrierung im Unsigned-Single-Ended Modus vorgenommen wurde. Mißt man 
differenziell, muß man die Werte erst wieder uminterpretieren.

Autor: Ollz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> nur mal so in den Raum geworfen, warum machen die Hersteller (Atmel)
> nicht die zweite Referenzmessung und erfreuen den Anwender mit zwei
> kalibrierten Werten, die zwei Register müssten doch noch zu finden sein,
> wo man die abspeichern kann ;)

Weil die Messung so dein Geld und nicht Atmels Geld kostet.

> Wenn man bei 85°C einen Referenzwert erfasst muss das doch theoretisch
> auch bei 25°C möglich sein.

Sicher ist das auch praktisch möglich. Ich vermute mal, dass Atmel die 
Bausteine aus anderen Gründen sowieso kontrolliert auf 85°C aufheizt 
(Überprüfung des Temperaturbereiches?) und sich die Messung des 85°C 
Referenzwerts dabei für Atmel kostengünstig nebenbei erledigen lässt.

Zusammen mit der Annahme einer linearen Kurve und dass der Wert 0 der 
Temperatur 0 Kelvin entspricht sieht Atmel das vermutlich als "gut 
genug" für den Verkauf an.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ollz schrieb:
>> Wenn man bei 85°C einen Referenzwert erfasst muss das doch theoretisch
>> auch bei 25°C möglich sein.
>
> Sicher ist das auch praktisch möglich. Ich vermute mal, dass Atmel die
> Bausteine aus anderen Gründen sowieso kontrolliert auf 85°C aufheizt
> (Überprüfung des Temperaturbereiches?) und sich die Messung des 85°C
> Referenzwerts dabei für Atmel kostengünstig nebenbei erledigen lässt.
>
> Zusammen mit der Annahme einer linearen Kurve und dass der Wert 0 der
> Temperatur 0 Kelvin entspricht sieht Atmel das vermutlich als "gut
> genug" für den Verkauf an.

So vermute ich das auch mal.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon, könntest Du mal ´ne Messung machen, signed 12bit mit interner 
Referenz bei Raumtemperatur, was da hex oder dezimal bei Dir ´rauskommt 
- ich würde gerne mal die Werte vergleichen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. schrieb:
> Simon, könntest Du mal ´ne Messung machen, signed 12bit mit interner
> Referenz bei Raumtemperatur, was da hex oder dezimal bei Dir ´rauskommt
> - ich würde gerne mal die Werte vergleichen.

Ja, kann ich machen. Muss aber erst noch den Teil im ADC Kapitel 
durchlesen, hab da noch nix mit gemacht. Hab allerdings die erste Chip 
Revision. Kann das sein, dass da der ADC nicht funktioniert?

Warum eigentlich im signed Modus? Unsigned macht doch viel mehr Sinn 
dabei. Vielleicht weil es die Rechnung vereinfacht? :D

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, interessant.
Kalibrationsdaten für beide ADCs sind irgendwie gleich (0x1FF). Aber 
egal. Hab die trotzdem benutzt.
85°C hat 0x0A44 (2628 dez.) nach Kalibrationsdaten.

Init:
  ANALOG_INT_TEMP_ADC.CTRLB = ADC_CONMODE_bm | ADC_RESOLUTION_12BIT_gc | ADC_FREERUN_bm;
  ANALOG_INT_TEMP_ADC.REFCTRL = ADC_REFSEL_INT1V_gc | ADC_TEMPREF_bm;
  ANALOG_INT_TEMP_ADC.EVCTRL = ADC_SWEEP_0_gc;
  ANALOG_INT_TEMP_ADC.PRESCALER = ADC_PRESCALER_DIV512_gc;
  ANALOG_INT_TEMP_ADC.CAL = 0x01FF; /* ADCACAL0 : ADCACAL1 */
  ANALOG_INT_TEMP_ADC.CH0.CTRL = ADC_CH_GAIN_1X_gc | ADC_CH_INPUTMODE_INTERNAL_gc;
  ANALOG_INT_TEMP_ADC.CH0.MUXCTRL = ADC_CH_MUXINT_TEMP_gc;
  ANALOG_INT_TEMP_ADC.CTRLA = ADC_ENABLE_bm;
  ANALOG_INT_TEMP_ADC.CH0.CTRL = ADC_CH_START_bm;

Und dann zyklisch abgefragt.

Der Chip hat vielleicht 40°C (da ist direkt ein Spannungsregler neben, 
der gut ackert). Außerdem ist es in dem kleinen Zimmer hier ziemlich 
warm.
Ich lese 0x050A (1290 dez.) als Temperaturwert.

Aber irgendwie kann das mit den 0 K = 0x00 nicht stimmen. 0 °C = 0x00 
schon eher.

0 K = 0x00, okay Achsenabschnitt ist 0, Steigung laut Kalibrationsdaten 
des Temperatursensors ist (273,16 + 85) K / 2628 = 0,1363 K / LSB.
Für 1290 gibt das aber 175,81K, das wären immerhin irgendwas um die 
-100°C.

0 °C = 0x00, Steigung ist dann 85/2628 = 0,0323. Für 1290 gibt das 41,67 
°C.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das ist ja interessant. Das sind nämlich die Werte, die ich in etwa 
auch heraus bekomme. Allerdings könnte man dann nicht unter 0°C messen 
und das wiederum kann ich mir auch nicht vorstellen. Zumal bei der 
Messung 'Unsigned Single ended internal mode' die Masse einem Meßwert 
von etwa dezimal 200 entspricht.  Rätsel über Rätsel...

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ollz schrieb:
> Zusammen mit der Annahme einer linearen Kurve und dass der Wert 0 der
> Temperatur 0 Kelvin entspricht sieht Atmel das vermutlich als "gut
> genug" für den Verkauf an.

und schon hat man ein Feature mehr auf'm Datenblatt stehen... ;)
Also ich hab's abgehakt, +/-10% geben sie an, evtl. auch +/-2% "depends 
on chip"... lassen wir mal lieber die Finger davon...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe die ganze Aufregung nicht.
Temperatursensoren, die über 1mW verbraten, sind eh nur Schätzeisen, da 
dann die Eigenerwärmung zur Fehlerquelle wird.

Und man wird ja nicht nen Xmega nehmen, um ihn dann zu 99% im Power-down 
laufen zu lassen, nur damit die Temperaturmessung stimmt.

Ich hab das sogar beim DS18B20 gemerkt, daß der sich deutlich aufheizt, 
wenn man öfter als 5s wandelt.


Peter

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

was will man denn auch mehr erwarten.
Es ist doch wirklich nur eine Art Überlastunsensor.
Ich würde ja auch nicht mit einem Pentium oder Athlon onChip 
Temperatursensor die Raumtemperatur messen, wenn ich es genau haben 
möchte ;-)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nix Aufregung. Es geht nur darum, die Gradzahl aus den Eichwerten 
errechnen zu können und da scheint in der Tat etwas nicht zu stimmen. 
Ich habe jetzt hier noch eine Weile herumgerechnet, aber so richtig 
schlau werde ich aus der Angabe der Daten in Verbindung mit der 
Meßmethode des ADC nicht.

Autor: Ollz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich verstehe die ganze Aufregung nicht.

Ich sehe hier auch keine Aufregung, nur den Versuch ein Feature zu 
verstehen und die Grenzen auszuloten damit man entscheiden kann, ob's 
sich lohnt.

Wenn man den Sensor zur Temperaturüberwachung der Schaltung einsetzen 
möchte, sind 85 C als einziger bekannter Referenzpunkt ungünstig.  Erst 
bei 85 Grad XMEGA-Temperatur den Lüfter einzuschalten ist etwas spät. 
Also braucht man einen anderen Referenzpunkt. Den zu bekommen scheint 
nicht einfach zu sein.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man Zeit und Lust hat, kann man einen externen Sensor direkt auf 
den XMega bappen und selber eine 2-Punkt-Kennlinie aufnehmen. 
Einigermaßen linear scheint der Sensor zu sein. Schöner wäre aber eine 
klare Formel...

Autor: Xmega Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem "Feature" lässt sich doch ohnehin nur die interne Chip 
Temperatur messen.... wie soll man da gross auf die Umgebungstemperatur 
schliessen können!?

Wenn der Chip für 85°C laut Datenblatt einsetzbar ist, kann man doch 
eigentlich nur die Info erhalten, dass die Chip Temperatur mittlerweile 
einen Bereich erreicht hat, wo dem Teil evtl. bald die Lichter ausgehen 
oder er zu spinnen anfangen kann.... Frequenz läuft weg, Leckströme etc. 
was halt so passieren kann wenn eine Halbleiter seine Grenztemperatur 
erreicht...

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja schon, aber bislang habe ich mit keiner Messmethode den eingetragenen 
Kalibrierwert erreicht, trotzdem ich, mit einem SHT11 und einem 
Heißluftfön bewaffnet, den XMega mal bis auf 85°C aufgeheizt habe. Ich 
habe den Support nochmal angetriggert, mal sehen, was kommt.

Autor: Jens G. (jensig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn ich so Eure Meßergebnisse interpretiere, dann zeigt er wohl 
0x0000 bei 0°C an, und 0x0A44 (2628 dez.) bei 85°C. Also hat der 
Atmelsupport °C mit K vermatscht.
Negative temperaturen werden vermutlich mit neg. Zahlen (signed) 
angezeigt ?

Übrigens habe ich immer so meine Zweifel, ob ein aufgeflanschter Sensor 
wirklich die Temp. eines Teils einigermaßen akurat mißt. Schließlich 
entstehen doch schon gewisse Differenzen, wenn der Chip von open (mit 
Sensor vielleicht noch huckepack) geheizt wird, während er untenrum 
auskühlt.

Ich hatte mir mal folgendes ausgedacht, was ich bei meinem jetzigen 
Projektchen mal so machen werde, um zu testen, ob die vorgesehene 
Kühlung ausreicht:
- 1 Draht an Masse (oder Udd), und ein Draht an einen freien I/O-Pin 
(zumindest darf er nicht niederohmig beschaltet sein)
- Meßgerät im Diodenmeßbereich ran (oder R-Meßbereich, wenn Meßspannung 
> Uf einer Diode) - viele Meßgeräte zeigen ja dabei die Spannung an den 
Meßleitungen an (bzw. ist proportional dazu)
- Platine in einen Wassertopf mit destilliertem (!!!) Wasser
- Wasser-Temp. messen, und Uf der dahinterliegenden Schutzdiode messen
- Wasser heizen auf sagen wir mal 85°C
- wieder Uf messen

Die Platine bleibt beim Messen im Topf, so daß das temperierte Wasser 
mit Sicherheit für gleichmäßige Temp. im/um den Chip herum sorgt (ist ja 
destilliertes Wasser, also keine Probleme mit möglicher Eeigenleitung).

Damit hat man seine Temp Kennlinie via Uf einer Eingangsschutzdiode, die 
man sicherlich auch während des Betriebs später dann als OnDie-Sensor 
verwenden kann (solange der Pin als Input ohne Pullup und ohne störende 
Ausenbeschaltung genutzt wird). Bzw. damit kann man dann den inneren 
Sensor eichen (man sollte natürlich immer dieselbe Schutzdiode des Chips 
nehmen).

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Destilliertes Wasser ist nicht sonderlich gut dafür. Durch die Platine 
kannst du schon genug Verunreinigung reinbringen, dass die Eigentleitung 
wieder ausreicht. Andererseits sind das ja Kleinstspannungen...und die 
Modellbauer hängen ihre Motoren bei 14V auch ins Wasserglas 
(Leitungswasser) zum einlaufen.

Wenn Du sicher gehen willst nimm Öl (Sonnenblumenöl z.B.) oder flüssiges 
Silikon. Das leitet auch die Wärme gut und ich hab sogar schonmal 
gesehn, dass einer seinen ganzen PC zur Kühlung in ein Silikonbad 
gehängt hat.

Gruß
Fabian

Autor: Jens G. (jensig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
iiiihhhh - Öl - und wie kriege ich das Ding wieder sauber ohne 
irgendwelche zusätzliche Chemikalie?

Hast zwar recht, daß wenige Verunreinigungen wieder die Eigenleitung 
erhöhen, aber was ist auf einer Leiterplatte denn so alles drauf auser 
das halbverbrannte Flußmittel, was das Wasser wieder signifikant 
leitfähig machen sollte (oder ist Flußmittel wasserlöslich?)? Ich meine, 
die Uf-Messung wird ja nicht im unteren µA-Bereich gemacht, sondern im 
oberen oder gar mA - da stören paar nA/µA zusätzlich durchs Wasser nicht 
so sehr.

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es reicht schon der Staub auf der Platine und schon isses nimmer 
destilliertes Wasser. Zumal du vermutlich kein destilliertes sondern nur 
entmineralisiertes Wasser hast (das von der Tankstelle z.B.)

Aber probiers doch mit ner kleinen Platine mit nem billigen Atmel mal 
aus.
Wie gesagt, bei den Modellbauern klappts auch...

Gruß
Fabian

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal eine Umrechnungsroutine in ASM:
;--------------------------------
;temperature calculation routine
;inputs: TempSense0/TempSense1 // TempAdj0/TempAdj1 // TemperH/TemperL
;results are placed in Temp/TempH
Calc_Temp:
 lds  XL, TempSens0        ;calibration value read from calibration row
 lds  XH, TempSens1
 
 lds  Temp, TempAdj0        ;manually stored adjust values
 lds  TempH, TempAdj1
 add  XL, Temp
 adc  XH, TempH
 andi  XH, $0F

 lsl  XL              ;multiplicate with 4
 rol  XH
 lsl  XL
 rol  XH
 
 ldi  Temp, 179          ;factory test temperature 85°C -> 358K/2
 clr  Temp3
 
_CT1:
 sub  XL, Temp          ;calculate divisor (steps per °K)
 sbc  XH, Null
 brcs  _CT2
 inc  Temp3
 rjmp  _CT1

_CT2:
 lds  XH, TemperH         ;read ADC values from temp sensor
 lds  XL, TemperL 
 lsl  XL              ;multiplicate with 16
 rol  XH
 lsl  XL
 rol  XH
 lsl  XL
 rol  XH    
 lsl  XL
 rol  XH

 ldi  Temp,1
 mov  Di0, Temp
 clr  Temp
 clr  TempH
 
_CT3:
 sub  XL, Temp3          ;divide with steps/K
 sbc  XH, Null
 brcs  _CT4
 add  Temp, Di0
 adc  TempH, Null
 rjmp  _CT3
 
_CT4:
 ldi  XL, low(273)        ;transform °K -> °C
 ldi  XH, high(273)
 sub  Temp, XL
 sbc  TempH, XH
 ret


Sie funktioniert mit allen getesteten XMegas, abgesehen von einem 
Exemplar, welches ich anfangs zum Testen verwendete und deshalb nichts 
stimmte :-0 Der "TempAdj0/1" Korrekturwert gibt eine Abweichung vom 
programmierten Kalibrierwert an, um den Controller nachzueichen.

Autor: Alexx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich würde mal vermuten, dass zur internen Temperaturmessung die 
Durchlassspannung einer Si-Diode genutzt wird (und die streut!).
Dann wäre der 0°C-Wert aber nicht Null!
Wenn der ADC-Wert bei steigender Temperatur kleiner wird, wäre dies ein 
Beleg für meine Annahme. Außerdem sollte dann der 85°C-Wert ca.

Der Temperaturkoeffizient wäre dann aber ca.(streut auch!) -3mV/°C - was 
man mit der verwendeten Referenzspannung (1,00V wäre geeignet) umrechnen 
müsste:

Temperaturfaktor= 1V / -3mV/°C = -333,33.../ ADC-Fullscale-Wert 
[°C/delta-ADC].

Temperatur= 85°C + (ADC-Wert - Scale-Wert(12 Bit - nicht 16 Bit!)) * 
Temperaturfaktor

Da die Messung onehin nur die interne Temperatur misst - die man selbst 
nicht messen kann, bleibt einem (ohne Angaben im Datenblatt) nur die 
Möglichkeit, mit zwei externen Temperaturen (z.B. die Gehäusetemperatur) 
die Kennlinie selbst zu bestimmen.

Falls man einigermaßen genau eine externe Temperatur messen will, 
braucht man einen externen Sensor! Dafür gibt es verschieden genaue: 
Si-Diode (ungenau), KTYxx (ziemlich genau) und PT100 / PT1000 (sehr 
genau, sehr großer Temperaturbereich, aber winziger 
Temperaturkoeffizient => Auswerte-Verstärker!).

PS: Habe gerade den ADC-Wert für die Tempsense ausgelesen - es kommt 
eine errechnete Spannung von 0,6V (= Diodenspannung) heraus! Q.E.D   ;-)

Alexxx

Autor: herr ober (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob das nach über einem Jahr noch jemanden interessiert?

Autor: Alexx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PPS:

habe auf http://de.wikipedia.org/wiki/Diode#Temperaturabh.C...
einen (theoretischen) Wert von -1,7mV/K gesehen (dachte immer -3mV/°C).
Der Temperaturfaktor wäre dann -588,2 / ADC-Fullscale-Wert
[°C/delta-ADC]
=> d.h. ca. -0,144

Alexxx

Autor: Alexx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PPPS:

"Bei kleinem Messstrom ist UD = 0,5...0,6 V, Dann sind's um -2 mV/K."
Temperaturfaktor ~ -0,1221

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.