NTC Wert unruhig (solved)

Hallo Gemeinde,

neben anderen Messungen möchte ich gern, zur Erfassung einer Temperatur bis 200°C, einen 100k-NTC einsetzen. Dazu benutze ich folgenden Sketch:

int aValue = analogRead(ANALOGPIN);
  //****************** Temperatur einlesen (NTC 100k bei 25°C, Materialkonstante 3950, Vorwiderstand 47,3 k)****************************
  Temp_NTC = (ABSZERO + 25) * 3950 / (3950 + (ABSZERO + 25) * log((47300 * ((aValue / MAXANALOGREAD))) / (1 - (aValue / MAXANALOGREAD)) / 100000)) - ABSZERO;
  Serial.print("NTCB: "); Serial.print(Temp_NTC); Serial.println(" C");
  delay(1000);
  Temperatur();

Das funktioniert gut aber: Ich lasse mir den Messwert, mit einer Stelle hinter dem Komma, auf einem Nextion anzeigen und dort "springt" der Wert etwas. (bei 21°C Zimmertemperatur geht das von 20,7 - 21,3 ) An der Aufbereitung der Daten liegt es scheinbar nicht denn auch im seriellen Monitor habe ich dieses Verhalten. Nun hatte ich da letztens hier etwas von "Aref" gelesen. Wie kann ich die interne Referenz richtig nutzen? Wenn ich nur "analogReference(INTERNAL);" im void setup nutze bekomme ich keinen vernünftigen Messwert mehr. Ein passendes Beispiel konnte ich leider nicht finden.

Gruß

Hannes

P.S. Sorry! Hatte vergessen zu erwähnen, das mein "Nano" nur vom USB-Port mit Spannung versorgt wird. Bitte nicht mit "Glaskugeln werfen" :)

Dein Schwanken sieht aus wie +- ein Bit Veränderung. Das ist schon durch Störungen auf der Leitung wenn die etwas länger ist möglich. Was sind den die genauen Analogwerte die du einliest.

Leider ist nicht so ganz genau sichtbar auf welchen Wertebereich du deine Temperatur abbildest. Du kannst am Analogeingang ja nur einen Wert von 0-1023 einlesen. Die musst du auf den Widerstandswert umlegen um daraus die Temperatur abzulesen. EIn NTC geht ja nicht von 100k auf Null Ohm sondern reduziert seinen Widerstand entsprechend seiner Kurve. 100K ist normalerweise dann als Null Grad definiert. Welchen Widerstand hat er bei 200Grad.

Und vermutlich wird deine externe Schaltung, von der wir leider auch nichts wissen, keine 5V bei 200Grad abfallen lassen. Also wird dein Analogwert nicht die vollen 1024 Werte ausnutzen die möglich sind. Somit kann ein leichtes Schwanken wegen Versorgungsspannung, Störeinstrahlung etc genau diesen Effekt hervorrufen. Willst du genau messen, solltest du mindestens doppelte Messauflösung haben. Du willst auf 0,1Grad genau, dann sollte deine Messgenauigkeit bei 0,05Grad sein. 1024 Werte können also zb von 0 bis 50 Grad gehen. Dann wird ein Schwanken des letzten Wertes fast verschwinden. Ebenso kannst du programmtechnisch mehrere abfragen zusammenrechnen und den Mittelwert bilden und den darstellen. Wenn dur Raumtemperatur messen willst, verändert der sich nicht stark in einer Sekunde. 10 Messungen/sec zusammen fassen und mittelwert bilden sollte ebenfalls den Messwert beruhigen.

Genaues Messen ist nicht ganz einfach. Deswegen nimmt man heute lieber digital angebundene Messsensoren, wo alles im Sensor fertig verbaut ist und die Werte rein digital übertragen werden. Mögliche Messfehler sind dann schon Sensorintern eliminiert. Mit einem NTC selbst alles ermitteln stösst halt auf Grenzen im Homebrew

Wenn es einen digitalen Sensor für diesen Bereich (0-200°C) gäbe würde das natürlich mein Problem lösen. Leider konnte ich aber nix finden. Es soll die Temperatur in einem Dampfkessel gemessen werden. Ich brauche diesen Temperaturwert um meine kapazitive Füllstandsmessung zu realisieren.

Momentan habe ich, an einem "fliegenden Aufbau" zum Testen, ca. 300mm Kabel am NTC. Bei 25°C hat der NTC 100 kOhm und bei 200°C 473,15 Ohm. (NTC Thermistor 3950 ) Die Externe Schaltung besteht nur aus einem Vorwiderstand von 47,3 kOhm. Ene Mittelwertbildung werde ich versuchen.

Danke und Gruß

Hannes

Ein k - Termoelement und ein MAX6675 oder MAX31855

Hannes54: Wenn es einen digitalen Sensor für diesen Bereich (0-200°C) gäbe würde das natürlich mein Problem lösen. Leider konnte ich aber nix finden.

Ein K - Termoelement und ein MAX6675 (nur Temperatur >0) oder MAX31855

Grüße Uwe

Uwe, das hört sich viel besser an.

100K zu 47K ist viel zu hochohmig. Da fehlt ein Impedanzwandler.

combie: 100K zu 47K ist viel zu hochohmig. Da fehlt ein Impedanzwandler.

Nicht ganz. Bei einer Meßspannungsquelle mit zu hoher Impedanz wird der Sample&Hold-Kondensator während der Ladephase der AD/Umwandlung nicht auf Endwert geladen. Bei einer stabilen Temperatur ist der S&H-Kondensator nach mehreren Meßzyklen dann auf Endwert aufgeladen und die Messung entspricht der Meßspannung. Das ist nicht der Grund einer instabilen A/D-Wandlung wie vom TO bemängeld.

Ich gebe Dir recht daß dieser Spannungsteiler ungünstig für die Messung ist, aber er ist nicht der Grund des "unruhigen" Wertes.

Grüße Uwe

Vielen Dank. Einen MAX6675 habe ich hier. Mich hatte die Größe des Fühlers gestört. Soviel Platz habe ich leider nicht. Es gibt natürlich andere TC Typ K - Fühler. Werde mal danach googeln.

Wenn die Impedanz nicht der Grund für die Schwankungen ist, was könnte das noch verursachen? Wie setzt man die interne Referenz (Aref) richtig ein? Auch wenn mich das nicht weiter bringt interessiert es mich wie man damit umgeht.

Gruß und Dank

Hannes

P.S. Von den 100k NTC`s habe ich reichlich. Die Dinger werden auch in meinem 3D-Drucker verwendet und sind schön klein.

Hannes54: Wie setzt man die interne Referenz (Aref) richtig ein?

Das interessiert mich auch, themenunabhängig. Wollen wir hierfür einen neuen Thread eröffnen? Lässt sich dann besser finden, und kann man evtl. "so" in einem How to" übernehmen.

Stefan

Wollen wir hierfür einen neuen Thread eröffnen?

Gute Idee! Mach mal. Ich lese interessiert mit.

Hannes54: Wenn die Impedanz nicht der Grund für die Schwankungen ist, was könnte das noch verursachen?

Das hat chefin ja in der ersten Antwort bereits gegeben. Du hat 10 Auflösung und da ist von einer ADC Zahl zur anderen ein Temperaturunterschied von 0,6°C . "(bei 21°C Zimmertemperatur geht das von 20,7 - 21,3 )" Laß dir mal die ADC ausgeben und du wirst sehen daß der wert um 1 Bit schwankt.

Das Schwanken um 1 Bit ist normal.

Grüße Uwe

Danke,

das hatte ich nicht richtig verstanden. Es erklärt genau das Verhalten. (0,6°C)

Hab mir jetzt einen Typ K - Fühler mit Ringöse bestellt und werde den MAX6675 verwenden.

Gruß

Hannes

Hallo, welcher GenauigkeitsKlasse gehört denn der NTC an? Du redest hier über eine Toleranz von 0,5°C! In Deiner BerechnungsFormel hast Du schon Rundungsfehler drin. Der AnalogPort Deines Arduino zappelt auch schon. Welche Toleranzen haben die Widerstände? Und noch viel wichtiger, wie- fragst Du den Port ab und wie wird das dann im Sketch verarbeitet? Ich würde den Port über eine logische Abfrage nur "einmal" auslesen. Das verarbeiten, und dann wieder auslesen. Dann steht der Wert auch. Du redest hier über 0,5°C... Also änder erst einmal das Umfeld so, das Du auch auf 0,5°C kommst. Mit Mittelwert- ist das schätzen. Dann kannst Du Deine 0.5°C auch in die Tonne klobben. Gruß und Spaß Andreas

Die Toleranzen haben sicher Einfluss auf das Messergebnis sind aber nicht für das "Zappeln" verantwortlich. Die Ursache ist doch schon gefunden.

Hannes54: Danke,

das hatte ich nicht richtig verstanden. Es erklärt genau das Verhalten. (0,6°C)

Hab mir jetzt einen Typ K - Fühler mit Ringöse bestellt und werde den MAX6675 verwenden.

Gruß

Hannes

Achtung Der MAX6675 erwartet ein Thermoelement bei dem T- geerdet ist bzw geerdet wird (mit Masse verbunden). Grüße Uwe

Meinst Du mit "T" = minus TC ? Das würde mich nicht stören.

Hab hier 2 MAX6675K die ich auch schon erfolgreich getestet habe.

Danke

Hannes

Mit T- meine ich den negativen Anschluß des Thermoelements wie im Datenblatt beschrieben. Grüße Uwe

Danke,

also T- wie ich vermutet hatte. Das stört mich nicht.

Gruß

Hannes