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??
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.
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
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.
Vielleicht ist der Senzor da nur den Xmega gegen hohe temperatur zu schützen?
Und wie soll der Code auf zu hohe Außentemperaturen reagieren?
> Und wie soll der Code auf zu hohe Außentemperaturen reagieren?
Einen Lüfter über einen Portpin einschalten. ^^
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.
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?
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...
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ö
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).
>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 ;-)
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.
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!
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.
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!?
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.
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
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
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.
> 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.
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.
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.
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
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.
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...
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...
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
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 ;-)
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.
> 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.
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...
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...
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.
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).
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
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.
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.