Forum: Mikrocontroller und Digitale Elektronik interne Temperaturmessung beim Xmega


von Xmega Rookie (Gast)


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??

von Simon K. (simon) Benutzerseite


Lesenswert?

Ja, das würde mich auch mal interessieren.

von Horst H. (horha)


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.

von Xmega Rookie (Gast)


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

von Simon K. (simon) Benutzerseite


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.

von Xmega Rookie (Gast)


Lesenswert?

meine Rede ;)

von budruz (Gast)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


Lesenswert?

Und wie soll der Code auf zu hohe Außentemperaturen reagieren?

von Thomas (Gast)


Lesenswert?

> Und wie soll der Code auf zu hohe Außentemperaturen reagieren?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Xmega Rookie (Gast)


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?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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...

von Xmega Rookie (Gast)


Lesenswert?

na dann lass ich's lieber...schade eigentlich

von Xmega Rookie (Gast)


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ö

von Simon K. (simon) Benutzerseite


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).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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 ;-)

von Simon K. (simon) Benutzerseite


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.

von Xmega Rookie (Gast)


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!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Xmega Rookie (Gast)


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!?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Simon K. (simon) Benutzerseite


Lesenswert?

Danke noch mal für eure Bemühungen!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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

von Simon K. (simon) Benutzerseite


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Ollz (Gast)


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.

von Simon K. (simon) Benutzerseite


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Simon K. (simon) Benutzerseite


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

von Simon K. (simon) Benutzerseite


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:
1
  ANALOG_INT_TEMP_ADC.CTRLB = ADC_CONMODE_bm | ADC_RESOLUTION_12BIT_gc | ADC_FREERUN_bm;
2
  ANALOG_INT_TEMP_ADC.REFCTRL = ADC_REFSEL_INT1V_gc | ADC_TEMPREF_bm;
3
  ANALOG_INT_TEMP_ADC.EVCTRL = ADC_SWEEP_0_gc;
4
  ANALOG_INT_TEMP_ADC.PRESCALER = ADC_PRESCALER_DIV512_gc;
5
  ANALOG_INT_TEMP_ADC.CAL = 0x01FF; /* ADCACAL0 : ADCACAL1 */
6
  ANALOG_INT_TEMP_ADC.CH0.CTRL = ADC_CH_GAIN_1X_gc | ADC_CH_INPUTMODE_INTERNAL_gc;
7
  ANALOG_INT_TEMP_ADC.CH0.MUXCTRL = ADC_CH_MUXINT_TEMP_gc;
8
  ANALOG_INT_TEMP_ADC.CTRLA = ADC_ENABLE_bm;
9
  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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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...

von Xmega Rookie (Gast)


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...

von Peter D. (peda)


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

von Horst H. (horha)


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 ;-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Ollz (Gast)


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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...

von Xmega Rookie (Gast)


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...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Jens G. (jensig)


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).

von Fabian B. (fabs)


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

von Jens G. (jensig)


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.

von Fabian B. (fabs)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hier mal eine Umrechnungsroutine in ASM:
1
;--------------------------------
2
;temperature calculation routine
3
;inputs: TempSense0/TempSense1 // TempAdj0/TempAdj1 // TemperH/TemperL
4
;results are placed in Temp/TempH
5
Calc_Temp:
6
 lds  XL, TempSens0        ;calibration value read from calibration row
7
 lds  XH, TempSens1
8
 
9
 lds  Temp, TempAdj0        ;manually stored adjust values
10
 lds  TempH, TempAdj1
11
 add  XL, Temp
12
 adc  XH, TempH
13
 andi  XH, $0F
14
15
 lsl  XL              ;multiplicate with 4
16
 rol  XH
17
 lsl  XL
18
 rol  XH
19
 
20
 ldi  Temp, 179          ;factory test temperature 85°C -> 358K/2
21
 clr  Temp3
22
 
23
_CT1:
24
 sub  XL, Temp          ;calculate divisor (steps per °K)
25
 sbc  XH, Null
26
 brcs  _CT2
27
 inc  Temp3
28
 rjmp  _CT1
29
30
_CT2:
31
 lds  XH, TemperH         ;read ADC values from temp sensor
32
 lds  XL, TemperL 
33
 lsl  XL              ;multiplicate with 16
34
 rol  XH
35
 lsl  XL
36
 rol  XH
37
 lsl  XL
38
 rol  XH    
39
 lsl  XL
40
 rol  XH
41
42
 ldi  Temp,1
43
 mov  Di0, Temp
44
 clr  Temp
45
 clr  TempH
46
 
47
_CT3:
48
 sub  XL, Temp3          ;divide with steps/K
49
 sbc  XH, Null
50
 brcs  _CT4
51
 add  Temp, Di0
52
 adc  TempH, Null
53
 rjmp  _CT3
54
 
55
_CT4:
56
 ldi  XL, low(273)        ;transform °K -> °C
57
 ldi  XH, high(273)
58
 sub  Temp, XL
59
 sbc  TempH, XH
60
 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.

von Alexx (Gast)


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

von herr ober (Gast)


Lesenswert?

Ob das nach über einem Jahr noch jemanden interessiert?

von Alexx (Gast)


Lesenswert?

PPS:

habe auf http://de.wikipedia.org/wiki/Diode#Temperaturabh.C3.A4ngigkeit
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

von Alexx (Gast)


Lesenswert?

PPPS:

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.