kann mir jemand erklären wie die Daten von meinem MAX31855 Board zu meinem Arduino kommen? Ich habe das MAX31855 an den Digitalen Pins 4,5 und 6 angeschlossen.
Ich denke die Antwort steckt in der Libary:
Warum ich das wissen will, bei mir machen die Messwerte (rote Kurve) immer Sprünge von ca. 0,25 Grad. Wo kommt das her? Der andere Sensor (graue Kurve) ist ein anderer Sensor und kein Arduino, dieser verläuft schön gleichmäßig und springt nicht immer mal wieder 0,25 Grad nach oben oder unten.
Also Typ 0,25 bedeutet, dass immer in 0,25 Schritten gemessen wird?
Warum springt der dann immer mal wieder nach oben und nimmt nicht konstant ab so wie die graue Messekurve?
Kann mir jemand erklären, wie die Daten übertragen werden? Also ich habe meine Anschlüsse an den 3 Digitalen Pins. Digitale Pins messen eigentlich nur Bits oder? Wie funktioniert das, dass mir eine gemessene Zahl angezeigt wird. Wäre Hammer, wenn mir das jemand erklären könnte.
Störungen?
Ein 14Bit Wandler ist schon sehr empfindlich.
Ein Messverstärker verstärkt nicht nur die Störungen, sondern hat auch immer ein Eigenrauschen.
Den Chip teilen sich analog und digital Schaltungen.
Damit sitzt eine schreiende Störquelle nur wenige µm vom empfindlichen Digitalteil entfernt.
Ein Test:
Nimm mal das K-Dingen ab, und schließe den Eingang kurz.
Dann siehst du das Gezappel, was ganz alleine im, oder um den MAX herum, erzeugt wird.
Ich rate zu:
Schirmen und blocken, mit allen Tricks!
Gleitenden Mittelwert.
Meine Kristallkugel sagt, der "2 Punkte Plan" ist genau das, was die anderes geheime Schaltung ebenfalls tut.
Du musst die Messwerte glätten. Das machst du in einer eigens dafür geschriebenen Funktion.
Oder du suchst hier im Forum nach "Messwerte glätten" und schaust ob es für dein Projekt geeignet ist.
Am Anfang noch einmal eine wichtige Frage. Das im Datenblatt gezeigte TYP 0.25, bedeutet, dass nur in Schritten von 0,25 Grad gemessen werden kann oder?
Ich habe jetzt einmal einen 10-nF Kondensator zwischen den Eingängen T+ und T- gesteckt.
Hat jetzt nicht viel Unterschied gemacht. Muss ich diesen eigentlich noch iwo im Code aktivieren?
Dann habe ich noch meine Messdaten geglättet, mit der Funktion die Tommy56 mir gegeben hast.
Ich denke über drei Werte zu Glätten macht Sinn oder was denkt ihr?
Ich habe es mal mit 5 und 8 ausprobiert, da wurde dann die eigentliche Temperatur um fast ein Grad überschritten.
Bei den Graphen hier sind Anfangs und Endtemperatur identisch, auch wenn es nicht so aussieht.
Bei Graph 2 wars etwas windiger
ein K Thermoelement produziert ca 42µV pro °C bzw K Temperaturdifferenz zwischen Meßstelle (Hot Junction) und interner (im MAX31855) Referenzpunkt (Cold Junktion)
diese Spannung wird verstärkt und dann A/D gewandelt.
der A/D Wandler im MAX31855 hat eine Auflösung von 0,25°C bzw K, das heißt eine Änderung um1 der Einerstelle entspricht 0,25°C. Darum kann der
Aus dem Datenblatt: https://datasheets.maximintegrated.com/en/ds/MAX31855.pdf
"The data is output in a signed 14-bit, SPI-compatible, read-only format. This converter resolves temperatures to 0.25°C, allows readings as high as +1800°C and as low as -270°C, and exhibits
thermocouple accuracy of ±2°C for temperatures ranging from -200°C to +700°C for K-type thermocouples."
ein Zappeln von 1 bis 2 Digits ist bei einem A/D Wandler schon fast normal.
Die Frage ist wie schnell eine Temperaturänderung gemessen werden soll bzw wie schnell der Sensor auf die temperaturänderung reagiert.
Wenn die Temperaturmessung nicht so schnell sein muß dann kannst Du ja einen Mittelwert über eine gewisse Anzahl von Messungen machen (0 Tiefpass).
Wenn Du eine genauere Messung brauchst, dann brauchst Du ein anderen Sensor (zB PT100) und eine weit kompliziertere und darum teurere Sensorauswertung. Auch muß dann der Sensor und die Auswerteelektronik kalibriert werden.
Welche Temperaturen und welche Meßgeschwindigkeit brauchst Du?
Ist denn diese Moving Average Methode, die ich angewendet habe etwas gängiges oder ist das dann einfach nicht mehr richtig?
Ich habe vorher schon viele Sensoren ausprobiert wie BME680,NTC Thermistor, ds18b20 Sensor, alle hatten eine zu langsame Ansprechzeit.
Ich möchte die Temperaturveränderung beim Stoßlüften aufzeichnen und das gelingt eigentlich mit dem MAX31855 ganz gut, aber leider halt mit diesem Zappeln.
Thermoelemente decken einen Temperaturbereich von weit über 2000°C ab. Und dich stören 0.5°C Abweichung....
Das sind Hochtemperaturmessungen, da vorgesehen, wo alle anderen Sensoren verdampfen.
Und du möchtest sie im Zimmertemperaturbereich anwenden?
Es ist das falsche Werkzeug dafür!
Bedenke auch:
Du misst eigentlich nur die Kompensation, denn der Max hat ja die gleiche Temperatur wie das Element. Beide sind ja im gleichen Raum.
Dieser Satz sagt mir ja eigentlich schon, dass gezappelt wird oder?
Because all thermocouples exhibit some level of nonlinearity, apply appropriate correction to
the device’s output data
Ich benutze einen sehr dünnen Draht, messe aber nur diese eine Temperatur mit dem Arduino, also soll Arduino und Messplatz nah beieinander sein, oder?
If a small wire is required, use it only in the region of the measurement, and use extension wire for the region with no temperature gradient.
Edit: die Antwort zur Frage zwei habe schon im Datenblatt gefunden:
Optimal performance from the device is achieved when the thermocouple cold junction and the device are at the same temperature.
Edit 2:
Überträgt der Digitale Controller am Ende eigentlich die Daten schon umgewandelt als Zahl oder als Bits und die Umwandlung findet erst in der Libary statt?
Zuerst ist der MAX31855 (normalerweise) in ein Gehäuse eingebaut und dadurch Thermisch ein wenig isoliert. Dazu kommt noch daß der MAX31855 eine gewisse Masse hat die neben der MAsse des Meßgerätes die Temperatur ändern muß und dazu kommt noch daß der MAX31855 eine Kompansation der Cold Junktin hat. Darum waage ich zu sagen daß in 5 bis 10 minuten der MAX31855 nicht wegen Temperaturänderung des ICs falsch mißt.
Zu schnellen Temperatursensoren.
Es gint PT100 für Gastemperaturmessungen die schnell ansprechen.