Präzise Temperaturmessung mit 12Bit-ADC und NTC

OP #6505043
Hallo,

ich habe einen NTC (100k, 0,5%, 4250K) an einem Spannungsteiler mit 
R2=100k (0,05%, 10ppm) und messe in 10-Minuten Abständen die Temperatur 
über den 12-Bit ADC eines STM32L010K8 Controllers. Dabei verwende ich um 
möglichst genaue ergebnisse zu erhalten das Hardwareoversampling mit 
einer Oversampling Rate von 128.

Wie im Bild gezeigt, schwankt die gemessene Temperatur zwischen 12,1 und 
12,5°C und pendelt immer hin-und her. Die Temperatur ist aber bei 12,7°C 
konstant.

Kann mir jemand einen Tip geben woher diese Schwankungen kommen könnten?
Angehängte Dateien:
Gast
M. G. schrieb:
> Kann mir jemand einen Tip geben woher diese Schwankungen kommen könnten?

Ersetze den NTC durch eine 1.5V Batterie. Dessen Spannung bleibt bei 
gleichbleibender Temperatur kostant bei den 100k und Minuten.
Gast
Der µC hat keinen Aref, vermutlich misst du deine Referenz und führst 
damit einen Vergleich durch? Da der ADC aber gegen seine VCC misst, kann 
das u.U. zu Schankungen im Messwert führen, wenn VCC etwas wackelt. 
Besser wäre hier eine ratiometrische Messung gegen VCC über eine 
Messbrücke. Die ADCs in den STM32 sind m.E. nicht sonderlich gut...
Gast
Bedenke auch, dass das Oversampling wegen der sehr hohen Quellimpedanz 
die Pufferkondensatoren entlädt. Wage mal einen Versuch ohne 
Oversampling ggf. spiel etwas mit der Samplinggeschwindigkeit rum, falls 
der µC das untertützt.
OP
Ingo Less schrieb:
> Der µC hat keinen Aref, vermutlich misst du deine Referenz und führst
> damit einen Vergleich durch? Da der ADC aber gegen seine VCC misst, kann
> das u.U. zu Schankungen im Messwert führen, wenn VCC etwas wackelt.
> Besser wäre hier eine ratiometrische Messung gegen VCC über eine
> Messbrücke. Die ADCs in den STM32 sind m.E. nicht sonderlich gut...

Ich messe im Verhältnis zur interne Vref und rechne mit dem ausgelesenen 
Kalibrierwert auf 3V hoch. Der Spannungsteiler wird mit einer 2,048V 
Präzisionsspannungsquelle gespeist.

Mit dem Oversampling und Samplingtime habe ich schon herumgespielt und 
erhalte mit der aktuellen Einstellung bis jetzt die besten Ergebnisse.
MaWin schrieb:
> Ersetze den NTC durch eine 1.5V Batterie. Dessen Spannung bleibt bei
> gleichbleibender Temperatur kostant bei den 100k und Minuten.

@ M. G.
Du solltest auf MaWin hören. Nur so kannst Du Dein Problem einkreisen.
Statt einer 1,5 V Batterie genügt ja für das erste auch ein 100 k 
Widerstand.
mfg Klaus
Moderator (Firma: Titel) Persönliche Seite
M. G. schrieb:
> Kann mir jemand einen Tip geben woher diese Schwankungen kommen könnten?
Wie lang ist die Leitung zum NTC und wie oft tastest du den Eingangswert 
ab?
Zeichne mal die Zeitbasis in die x-Achse.
Ich könnte mir vorstellen, dass du da Störungen aus dem Netz mitmis(s)t.

> Dabei verwende ich um möglichst genaue ergebnisse zu erhalten das
> Hardwareoversampling mit einer Oversampling Rate von 128.
Das bringt zur Unterdrückung von Netzstörungen nichts, wenn der diese 
128 Messungen innerhalb von 5ms macht. Denn schlauerweise müsstest du 
die 128 Messungen auf 20ms = 1 Vollwelle der Netzfrequenz verteilen, 
damit sich Netzstörungen von selbst "herausfiltern".

>  messe in 10-Minuten Abständen die Temperatur
Ich würde an deiner Stelle einfach pro Sekunde 10 Analogwerte einlesen 
und über 4096 Messwerte mitteln (dann wird die Mittelwertbildung 
/Filterung für die CPU ziemlich einfach).

BTW: verbinde die Messpunkte nicht mit "Pseudodaten", sondern einfach 
mit geraden Linien. Denn  nur die Daten für die Punkte sind echt. Alles 
andere ist geraten. Und in geratenen Werten Fehler zu suchen, ist 
fehlerträchtig.
OP
Klaus R. schrieb:
> MaWin schrieb:
>> Ersetze den NTC durch eine 1.5V Batterie. Dessen Spannung bleibt bei
>> gleichbleibender Temperatur kostant bei den 100k und Minuten.
>
> @ M. G.
> Du solltest auf MaWin hören. Nur so kannst Du Dein Problem einkreisen.
> Statt einer 1,5 V Batterie genügt ja für das erste auch ein 100 k
> Widerstand.
> mfg Klaus

Ich habe nun den NTC mit einem 100k (0,05%, 10ppm) Widerstand 
ausgetauscht. Als Ergebnis erhalte ich einen stabilen Wert von 100107 
Ohm - konstant über die letzten Stunden. Den NTC habe ich auch mit einem 
anderen Typ ausgetauscht. Auch hier der selbe Effekt. Also müssen diese 
alternierenden und regelmäßigen Schwankungen vom NTC kommen.

Der ADC wird mit 8MHz getaktet, Prescaler = 4, ADC Sampletime = 160,5 
cycles.
Das ergibt bei 128-fachem Oversampling eine gesamte Samplingtime von 
rund 10ms.
M. G. schrieb:
> Wie im Bild gezeigt, schwankt die gemessene Temperatur zwischen 12,1 und
> 12,5°C und pendelt immer hin-und her. Die Temperatur ist aber bei 12,7°C
> konstant.

Wie sieht den der Sensor aus? Ist das so ne kleine 0,1g Pille auf zwei 
Beinen?
Wenn ja, gugst du regelmäßig nach wie die Meßwerte stehen?!
(Wenn du dich solchen Pillen, auf unter einen Meter näherst, steigt 
deren Temp. um bis zu 1°!)
Gast
Schon erstaunlich, dass bei soviel wirr zusammengestoppelten
Schaltungskonzepten nur eine Unsicherheit von +/-1,65% rauskommt.

Was soll es bewirken, wenn eine interne UND eine externe
Referenz bemüht werden.

Widerstandsverhältnisse bestimmt man ratiometrisch - dazu muss
die Ref-Spannung = Versorgungsspannung nur kurzzeitig (während
der einzelnen Messung) stabil sein.

ADCs wollen fast immer eine Quellimpedanz <= 10 kOhm.
Ja klar, den Sample-Kondensator kann man auch niederohmig aus
dem 1 µF aufladen. Aber was ist mit Leckströmen? Bei 100 kOhm
bewirken 10 nA (auch mit 1 µF) schon mal 1 mV.
Dafür braucht man keinen 12-Bit-ADC.

Was verstehst du unter Hardware-Oversampling?
Wird dabei die maximale Samplerate / der maximale ADC-Takt
eingehalten?
Gast
also, für genauere Temperaturmessungen benutze ich TMP117.
Bei Temperaturdiffernzmessungen unter 1K spielt schon der Messaufbau 
eine gewaltige Rolle.
Wie ist die Verbindung von dem NTC zum Präzisionsthermometer ( wann 
zuletzt kalibriert mit welcher Fehlerangabe? ) gestaltet?
Angehängte Dateien:
Gast
M. G. schrieb:
> Nein, da ist nichts in der Nähe. Die Temperatur mit mit einem
> Präzisionsthermometer kontrolliert und die liegt bei exakt 12,7°C.

Was ist "die Temperatur"?
Hast du ein passendes Kalibrierbad mit ausreichender Homogenität?
Gast
Teo D. schrieb:
> noreply@noreply.com schrieb:
>> Jetzt wird es esoterisch.
>>
>> Über den Sensor eine Metallkappe drüber.
>>
>> Powered by teoderix.
>
> Was hat deine Körpertemperatur, von hoffentlich annähernd 37°C und der
> dementsprechenden Wärmestrahlung, mit Esoterik zu tun?
> ...
> Und wenn schon Esoterik, dann schon bitte ein Aluhütchen !

Bitte nicht falsch verstehen. Ich meine den Vorschlag ernst und der 
Threadstarter würde mit der Metallkappe die Wärmestrahlung auf eine 
größere Masse verteilen.

Aber das Wissen um Wärmestrahlung ist in Deutschland abhanden gekommen.
Gast
Ich habe in meinen Geräten immer viele Temperatursensoren, sowohl analog 
als auch digital. Und die messen eigentlich recht zuverlässig und genau.

Mein Vorschlag: Messe öfter uns verzichte auf das Oversampling. Nur 
Rohwerte bringen dich jetzt weiter weiter.
Setze einen 2ten identischen Sensor direkt daneben und verleiche beide 
Messungen.
Traue nicht dem Präzisionsthermometer. Auch darin können Fehler 
enthalten sein.
M. G. schrieb:
> Ich habe nun den NTC mit einem 100k (0,05%, 10ppm) Widerstand
> ausgetauscht. Als Ergebnis erhalte ich einen stabilen Wert von 100107
> Ohm - konstant über die letzten Stunden.

Na das sieht doch schonmal gut aus.

Ich würde aber den Sensor und Referenzwiderstand vertauschen, d.h. den 
Sensor an GND anschließen und auch über ein geschirmtes Kabel.
Rechnerisch sollte das ja kein Problem sein.
Gast
M. G. schrieb:
> Wie im Bild gezeigt, schwankt die gemessene Temperatur zwischen 12,1 und
> 12,5°C und pendelt immer hin-und her. Die Temperatur ist aber bei 12,7°C
> konstant.
>
> Kann mir jemand einen Tip geben woher diese Schwankungen kommen könnten?

Leider fehlt bei deinem Graphen oben die Zeiteinteilung. Aber meine 
Vermutung ist folgende: Im Normalzustand fliest ein relativ konstanter 
Strom über den NTC und den 100k Widerstand. Dadurch erwärmt sich der NTC 
ein wenig. Durch die Messung mit dem STM wird nun der interne Widerstand 
dessen ADC-Eingang parallel zum 100k Widerstand geschalten. Zwar puffern 
die Kondensatoren und könnten so einen Spannungsabfall verhindern. 
Allerdings steigt der Stromfluss und damit die Erwärmung am NTC. Bei so 
genauen Messungen könnte das schon eine große Auswirkung haben. 
Alternativ gleich was integriertes nutzen, z.B. MAX31725?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.