ich lese einen BME mit einem PIC18 über SPI aus.
Leider ist die Temperatur immer ca. 1,2K±0,6K zu hoch. Die Abweichung zu meinem Referenzthermometer ist nicht linear. Eigentlich dachte ich, dass der Sensor genauer ist.
Das Setup liegt aktuell offen auf meinem Tisch. Konvektion ist möglich.
Ich benutze den "Forced Mode", bei dem genau eine Messung gemacht wird, dazwischen schläft der Sensor. Die Messintervale sind 1 Minute. Ich will damit Eigenerwärmung auschließen.
Der BME hat eine recht komplizierte Kalibrierkurve. Ich befürchte, ich habe hier einen Fehler gemacht und kann ihn nicht finden.
Ich hatte vor ein paar Wochen auch mal ein paar Sensoren Verglichen 3x TMP117 2x SHT31 und eben BMP280/BME280 (von Digikey) je auf einer eigenen Platine. Während die Werte von TMP117 und SHT31 sehr eng zusammen lagen waren die Zwei BME280 um mindestens 0.5°C-1°C wärmer.
Das Bosch Datenblatt sagt dazu:
"Its output is used for temperature compensation of the pressure and humidity sensors and can also be used for estimation of the ambient temperature."
und
"Temperature measured by the internal temperature sensor. This temperature value depends on the PCB temperature, sensor element self-heating and ambient temperature and is typically above ambient temperature."
Fuer genaue Temperaturmessungen sind die Bosch absolut nicht zu
empfehlen.
Das ist bei dem Sensor auch nicht der Anspruch von Bosch - wer lesen kann, ist klar im Vorteil:
"... estimation of the ambient temperature"
estimation = (engl.) für Abschätzung
+-0.3K wären erträglich gewesen. Denn die zu messenden Temperaturen bewegen sich zwischen 19-24°C. Ich hatte auch einen Offset-Parameter vorgesehen, um Sensor-zu-Sensor-Abweichungen auszugleichen, aber so sind sie wirklich nicht zu verwenden.
Ich werde mir mal die genannten Alternativen anschauen.
Doch, der Temperaturwert aus dem BME280 ist exakt für einen Zweck zu verwenden:
Als Input für die Formeln um Luftdruck und -Feuchtigkeit zu berechnen. Dafür ist er da, und wenn du in die Formeln einen anderen (egal ob präziser) Temperaturwert von einem Fremd-Sensor einsetzt, erreicht der BME nicht mehr die Genauigkeit aus dem Datenblatt...
Das habe ich gar nicht gemeint.
Ich werde die Funktion des BME so lassen wie sie ist und zusätzlich einen geeigneten T-Sensor einzubauen.
Eigentlich sollte die Schaltung primär die Temperatur in den Räumen messen, Luftdruck und Feuchte waren eine nette Zugabe.
Wegen des Displays habe ich mich für SPI entschieden. Entweder ich ersetze den BME durch einen besseren T Sensor und verzichte auf die anderen Parameter oder ich finde einen, den ich noch dazu einbauen kann.
Die Dinger sind gut. Kommen meist auf 0.1 Grad Abweichung (jedenfalls, wenn sie richtig angesteuert werden. Da gibt es hier schon einige THreads dazu).
Ich muss keine weitere Platine mit mir fast unlötbaren Teilen machen.
Den gab es beim Chinamann auf einer kleinen Platine. Ich hatte mal ein
paar einzelne bestellt, aber nicht gelötet bekommen.
Ah, ok. Ich muß zugeben, bei diesen Dingern stoße ich auch ziemlich an meine Grenzen. Geht aber gerade noch so (T-962 mit handgeschmierter Paste ;-) ).
Es gibt von den SHTs auch Breakoutboards (die würde ich aber nicht in CN bestellen), z.B:
https://www.mouser.jp/ProductDetail/DFRobot/SEN0428?qs=Rp5uXu7WBW%252BVV8ZyuS6LxQ%3D%3D
Auch Sensirion selbst hat welche. Nur falls Du mal mit spielen möchtest (abgesehen von Deinem aktuellen Projekt).
Die Dinger sind gut. Kommen meist auf 0.1 Grad Abweichung (jedenfalls,
wenn sie richtig angesteuert werden.
Erzaehl mal wie das geht wenn das DAtenblatt auf Seite 1 sagt:
• ±0.5°C accuracy from –10°C to +85°C
Und der 1820 ist deshalb relativ teuer weil er vom Hersteller mit
dem Laser abgeglichen wird. Wenn man glaubhafte Messungen im Bereich 0.1Grad haben will dann wird das sehr aufwendig und teuer. Und dann kommen noch die ganzen Fehler vom Aufbau hinzu. Es macht eigentlich keinen Sinn bei den ueblichen Sensoren eine Nachkommastelle anzuzeigen. Ich weiss, ist doof weil man das irgendwie gewohnt ist. :)
Erzaehl mal wie das geht wenn das DAtenblatt auf Seite 1 sagt:
• ±0.5°C accuracy from –10°C to +85°C
Das ist die max Abweichung, die garantiert wird!
In der Praxis kommst Du meist auf 0.1°C.
Wenn man glaubhafte Messungen im Bereich
0.1Grad haben will dann wird das sehr aufwendig und teuer.
Das Problem ist generell die Messung in der Luft. Da ist es schon schwer 1° Abweichung einzuhalten (Konvektion/Wärmestrahlung).
Um die o.a. 0.1°C nachzuweisen, habe ich mal ein 10er Pack Sensoren in mehrere Lagen Luftpolsterfolie eingewickelt, in eine Box gestopft und 1h gewartet. Dann liegt man bei den meisten Sensoren (ich meine, 7 wären das gewesen) bei der gleichen T +/- 0.1°C.
Edit: Ah, ja, wirf mal einen Blick auf Fig. 17 im DB.
Edit 2: Sorry, beim aktuellen DB ist das Figure 1. Typical Performance Curve
Das ist das einzige was zaehlt. Wirf mal einen Blick auf die
heiligen Woerter von Bob Pease wie man Datenblaetter liesst. :-)
In der Praxis kommst Du meist auf 0.1°C.
Und ich gehoere zur Gruppe der Menschen die typisch 100m in 10s laufen koennen. Es gibt aber Absolutwerte die ich jetzt nicht definieren will. :-D
Aber wenn es nur um die Anzeige der Zimmertemperatur geht dann ist es ja egal.
BTW: Bei Sensoren wie den BME280 oder anderen ist schon das erste Problem das sie auf einer Platine geloetet werden. Die ist ja fuer gewohnlich dann auf einer Platine mit anderen Dingen und schlimmstenfalls auch noch in einem Gehaeuse. Danach misst man sowieso nur noch hausnummern. Aber wie ja schon jemand sagte, beim BME ist das vollkommen egal weil dessen Werte nur zur Berechnung des Luftducks gebraucht werden.
Das ist das einzige was zaehlt. Wirf mal einen Blick auf die
heiligen Woerter von Bob Pease wie man Datenblaetter liesst. :-)
Wenn Du was verkaufen willst, ja, da stimme ich Dir zu.
Hier geht es aber um Eigenbau und einer gewünschten Abweichung von 0.3°C Zimmertemperatur, die in der realen Messung eh nicht realisierbar ist, egal mit welchem Sensor.
Wenn Du Dir die Typical performance curve mal angeschaut hättest, würdest Du feststellen, daß innerhalb des vom TO gewünschten Temperaturbereiches die Abweichung (mit 3 sigma) etwa -0.45 + 0.05 beträgt. Jetzt noch 0.2 °C zu den gemessenen Wert addieren und Du bist auch lt. DB schon recht nahe an der 0.1 °C Abweichung dran.
Typisch ok und nicht garantiert. Das habe ich schon verstanden. Und wie ich oben festgestellt hatte, lagen 7 von 10 Sensoren auf der gleichen T +/- 0.1°C.
Bei Sensoren wie den BME280 oder anderen ist schon das erste
Problem das sie auf einer Platine geloetet werden.
Bosch nennt auch die Abweichungen/Drift nach 5 Reflow Zyklen im DB. Also so völlig zufällig sind die Ergebnisse dann nicht.
Und was den Montageort betrifft: Natürlich misst man die Chiptemperatur und nicht irgendeine gewünschte Aussentemperatur. Die spukhafte Fernwirkung gibt es hier wirklich nicht. ;-) Ich gehe mal davon aus, daß dies auch dem TO bekannt ist.
Eigentlich sind wir ja einer Meinung. Ich sehe es halt für diesen Anwendungfall aus o.g. Gründen etwas lockerer.
Ich habe jetzt einen DS1820 verbaut. Und ich habe wieder das Problem, dass er um 1-3K über meiner Referenz liegt. Und das nicht mit einem konstanten Offset.
Dabei habe ich ihn schon 10mm von der Leiterkarte abgesetzt. Er sitzt in einer Fassung unten in der Frontblende und hat ein 2mm Loch zum Raum hin.
Die Schaltung sitzt in der UP-Dose und braucht sicher nicht mehr als 100mW.
Wie kann denn das sein? Muss ich den Sensor immer von der Versorgung trennen damit er sich nicht erwärmt? Ich frage ihn nur einmal pro Minute ab.
Die Referenz thermisch mit dem Sensor koppeln. Du wirst naemlich feststellen, dass die Raumtemperatur sich ganz erheblich aendert, je nachdem wo Du misst. Und die T in irgendeiner Unterputzdose hat mit der RT nun mal recht wenig zu tun.
20cm Abstand koennen schon locker 1 Grad Differenz bringen. Nicht umsonst sind die Wetterstationen einheitlich aufgebaut, um die an verschiedenen Standorten gemessenen T vergleichen zu koennen.
Dabei habe ich ihn schon 10mm von der Leiterkarte abgesetzt. Er sitzt in
einer Fassung unten in der Frontblende und hat ein 2mm Loch zum Raum
hin.
Die Schaltung sitzt in der UP-Dose und braucht sicher nicht mehr als
100mW.
Wie kann denn das sein?
Deine Mauer speichert ja Wärme. Lange mal an eine Außenmauer in deinem Zimmer und dann an eine Innenmauer. Da wirst du momentan ganz schöne Unterschiede merken. Außer du hast so stark gedämmte Außenwände, dass kein Luftaustausch stattfindet. Oder du misst am Fußboden und an der Decke. Auch da gibt's beträchtliche Unterschiede, da warme Luft nach oben steigt.
Als Abhilfe könntest du hinter das Loch einen kleinen Lüfter setzen, der die Raumluft ANsaugt und auf den Fühler bläst.
Ich messe an einer Innenwand auf 1,5m, wo normalerweise die Thermostate angebracht sind. Ja, wir haben sehr gut gedämmte Wände und eine aktive Belüftung. Die Raumtemperatur schwankt um max. +-1K. Ich gehe davon aus, dass Wand und Raum nahe dem thermischen Gleichgewicht sind. Die Luftfeuchtigkeit ist aktuell auch niedrig.
Meine "Referenz" ist ein kleines Batteriethermometer. Wenn ich das in die UP-Dose stelle, ändert sich dessen Temperatur gar nicht (20.9°C). Die Schaltung hängt jetzt am Kabel vor der Dose und misst 22,1°C.
Wenn du sowas als Referenz nimmst, kannst du deine weiteren "Messungen"
vergessen.
Mag sein, aber kalibrierte Thermometer sind mir zu teuer. Die Absolutgenauigkeit muss ja nicht 0,1 sein. Es wäre doch aber schön, wenn sich beide Messungen annähernd gleich verhalten würden. Wir haben es sicher nicht 24-25°C zuhause, sondern eher die 21C.
. Es macht eigentlich keinen Sinn bei den ueblichen Sensoren eine
Nachkommastelle anzuzeigen. Ich weiss, ist doof weil man das irgendwie
gewohnt ist. :)
Das kommt immer noch drauf an, ob man am absoluten Wert oder an Änderungen interessiert ist.
Meine "Referenz" ist ein kleines Batteriethermometer.
Nimm einen SHT4x Sensor als Referenz. Einem unbekannten Batteriethermometer würde ich nicht trauen.
Und die Boschsensoren als Feuchtemesser sind auch nicht das wahre. Ich habe ein paar verglichen in einem geschlossenen Gehäuse mit Salzlösung. Nur die Boschsensoren Wochen ca. 7% von den anderen an. Ich habe mehrere probiert.
Und ähnliches haben auch schon andere Leute heraus gefunden.