Gerade hatte ich ein Erfolgserlebnis, indem ich meinen Feinstaubsensor überredet habe, auch mal 'ne Pause einzulegen, da überrascht mich meine Sensebox mit absonderlichen Luftdruckwerten.
Von Anfang an:
Ich habe in meinen Sketch unter LOOP mehrere Zeilen eingebaut, welche die I2C- und Serial-Ports nur für die Messung mit Strom versorgen und nach Ende der Messung wieder ausschalten.
Beim Feinstaubsensor habe ich gelernt, dass er vor Messbeginn mindestens 20 sec Vorlauf braucht, um ein vernünftiges Ergebnis zu liefern.
Der Luftdrucksensor (BMP280) spinnt allerdings seitdem total.
Vor dem Scharfschalten des “Stromspar-Sketches” lag der Messwert bei m.E. korrekten 1014hPa. Danach sprang der Wert mehrfach zwischen 1014 und 827 (!) hPa hin und her.
Nun habe ich testweise die I2C-Ports wieder dauerhaft mit Strom versorgt und der BMP280 zeigt nun regelmäßig ca. 992 hPa (laut Wetterdienst haben wir aktuell ca. 1013 hPa).
Bei der Ersteinrichtung meiner Box im OpenSenseMap habe ich meinen Standort mit korrekten 200,5m Seehöhe angemeldet. Witzigerweise entsprächen die 992 hPa fast genau dem zu erwartenden Druck auf 200m Höhe, wenn wir 1013 hPa auf Seehöhe hätten.
Habe ich irgendetwas in der Konfiguration übersehen (muss man den Luftdruckwert, der an die Datenbank gemeldet wird, irgendwie auf die Höhe anpassen?) oder ist mein Sensor einfach kaputt?
Für richtigen Abgleich des Drucks Ihrer Messanlage soll man eigentlicht eine Kalibrierung durchführen.
Dass heisst, ein Vergleich gegen Werten einer ‘offizieller’ Wetterstation in Ihrer Nähe, und dann über die volle operationelle Reichweite des Drucksensors.
Beispiel-Ergebnis: http://www.vannwnhzn.nl/2017Vergelijkbaro.jpg
Wenn diese Kalibrierung in ‘Freiluft/ am Platz’ realisiert werden muss, dauert es ‘einige’ Zeit bis man alle Werten ausgefüllt hat, denn man ist wetter-abhängig.
Beobachte dabei dass Wetterdiensten Druck korrigiert auf Seehöhe melden.
…kalibrieren sollte man schon, wenn man vernünftige Werte haben will. Dein Problem ist damit aber nicht erklärt. Wenn Du I2C abschaltest, dann ist der BME stromlos. Nach wieder einschalten muss der BME neu initialisiert werden. Das wird i.d.R im Setup nur beim Start einmal gemacht.
Poste doch mal dein Sketch.
Ich habe meine Sensebox auch mit der Stromsparfunktion laufen. Mein Staubsensor läuft alle 15min für 30 sek.
Danke für den Tipp, das war tatsächlich die Ursache für die ominösen “827 hPa”-Werte.
Ich habe nach meinem Einschaltbefehl noch eine Zeile zur Initialisierung eingefügt und erhalte nun konstant die für meine Höhe korrekten (~ 990 hPa) Werte.
Warum und wie ich zu Anfang die Seehöhe-Werte bekam, kann ich nicht mehr rekonstruieren.
Hier die Teile, die ich in den Sketch unter .LOOP eingefügt habe:
// Einschaltprozedur
#ifdef Enable_SwitchOff
senseBoxIO.powerI2C(true); //schaltet I2C und LED an
senseBoxIO.powerUART(true); //schaltet UART und LED an
// die nächsten Zeilen habe ich aus dem Abschnitt “setup - Sensor initialization” hierher kopiert
SDS_UART_PORT.begin(9600); //SDS011
HDC.begin(); //HDC1080
BMP.begin(0x76); //BMP280
delay(20000); // 20s Wartezeit bis Messbeginn
#endif
… // Messvorgänge + Übertragung an den Server
// Ausschalten der Sensoren
#ifdef Enable_SwitchOff
senseBoxIO.powerI2C(false); //schaltet I2C und LED aus
//Serial.println(“UART/Serial”);
senseBoxIO.powerUART(false); //schaltet UART und LED aus
#endif
Danke für den Hinweis, dass die Wetterdienste den Druck korrigiert auf Seehöhe melden.
Das ist zwar logisch, wenn man darüber nachdenkt, war mir aber nicht bewußt.
Zu meiner Verwirrung hat meine SenseBox ja auch zu Anfang Werte für Seehöhe gemeldet.
Nun habe ich meinen Sketch so weit korrigiert, dass ich stabile und auch (für meine 200m Höhe) korrekte Werte erhalte.