DFM Temperatur
Hab in einer Arbeit gelesen, die DFM-06 habe als Temperatur-Sensor den
NTC-Thermistor EPCOS B57540G0502
(
https://www.imk-tro.kit.edu/download/Di ... tterer.pdf)
Genauere Kalibrierdaten sollen sich auf dem EEPROM befinden. (Der wird dann wohl vor dem Start ausgelesen.)
Der Widerstand des NTC-Thermistor verhaelt sich etwa so:
R/Ro = exp(B(1/T-1/To))
To = 25C = 273.15+25 Kelvin
Ro = 5k
Im Datenblatt von EPCOS/TDK findet man eine Tabelle in 5 Grad Abstaenden sowie Interpolationsformel.
Dazu gibt es fuer 0..100 Grad Celsius den B-Wert 3450 Kelvin.
Fuer -55..30 Grad Celsius passte ein etwas geringerer B-Wert zu den Tabellenwerten.
Den exponentiellen Verlauf kann man naturgemaess mit floats gut abbilden.
Wenn man sich Kanal 0xxxxxx (und auch 1..4) in den DFM-Daten anschaut, sieht es so aus, als waere von den 6 nibbles das erste der (negative) Exponent und die restlichen 5 nibbles die Mantisse, wobei bei den DFMs mit 8bit-NXP das letzte nibble Null ist. Bei Daten einer schnell absteigenden DFM sieht das schoen gleichmaessig aus und passt zum Temperaturverlauf der gemeldeten Temps.
Auf der Platine wird wohl folgendes durch den MUX weitergegeben bzw. gemessen (siehe auch
http://www.fingers-welt.de/phpBB/viewto ... 50#p131511):
f0=meas0: R_thermistor + Rs
f3=meas3: Rs
f4=meas4: 220k
Der serielle Rs ist glaube auf dfm6-platinen 10k und dfm9-platinen 20k. Hab einfach mal angenommen, dass der digitalisierte float-Messwert, der dem Widerstand (oder der gemessenen Spannung) entspricht, fuer alle drei mit demselben Faktor rauskommt, der sich dann spaeter eh rauskuerzt:
f0 = a*(R+Rs) , R: thermistor
f3 = a*Rs , Rs = 10k,20k
f4 = a*220k , a: A/D-faktor
Allerdings weicht das Verhaeltnis f4/f3 etwas ab, habe da etwa folgendes gefunden:
dfm06: f4/f3: 20.5942
dfm69: f4/f3: 10.8756 (dfm9-pcb mit NXP)
dfm09: f4/f3: 10.9616
(bei hohen Temperaturen etwas groesser)
Fuer die NTC-Thermistor-Approximation
1/T = 1/To + 1/B * log(R/Ro)
R/Ro = (f0-f3)/f4 * 220k/5k
bekomme ich eigentlich ganz gute Wert im Vergleich mit gemeldeten Temps oder Bodentemperaturen. Nehme dabei an, dass f4 220k entspricht, auch wenn dann f3 vielleicht nicht ganz dem seriellen Rs entspricht. Die Temp-Abweichungen sind gering, fuer mich erstmal ausreichend. Bin allerdings nicht so der Hardware-Spezialist, um abzuschaetzen, wo noch Abweichungen reinkommen.
Der einzelne Thermistor wird geringfuegig vom Datenblatt abweichen. Koennte mir aber vorstellen, dass sich die Kalibrierwerte von Graw auf die gesamte Messkonstruktion beziehen, wo man dann auch Abweichungen bei der Digitalisierung ueber den Widerstandswertebereich auffaengt.
Wenn ich das richtig sehe, dann wird bei der DFM-06 der Widerstand nicht einfach als Spannung gemessen und in einen ADC-Eingang gesteckt. Die DFMs mit STM32 messen von analog zu digital nach dem gleichen Prinzip wie die alten DFM-06. Vielleicht moechte jemand, der sich damit auskennt, dazu etwas schreiben, wie da die Umwandlung/Skalierung genau geschieht, welche Vorteile das hat (oder beim 8-bit NXP eben so noetig war), so den exponentiellen Verlauf zu messen. (Weiss nicht, ob auch fuer den STM32-ADC sonst nicht eher linearisiertere Daten besser waeren.)
Frage mich noch eine andere Sache, wird bei SM die DFM-09-Temperatur nicht falsch ermittelt? Weiss auch nicht, was dort gemacht wird und wie gut es eigentlich fuer die DFM-06 passt. (Glaube, die DFM-06 stimmt weiter oben auch immer weniger.)
Fuer mich funktioniert das oben beschreibene eigentlich fuer beide DFM-Modelle genauso. Komme auch ohne selbstgewaehlte zusaetzliche Konstanten aus.
Nachtrag:
Sehe gerade, vor einiger Zeit wurde die Diplomarbeit/Epcos hier schonmal erwaehnt:
http://www.fingers-welt.de/phpBB/viewto ... start=1000 bzw die Seite davor.
War zufaellig die "Einstiegsseite", die ich wohl nicht mehr richtig wahrgenommen habe.