Mich würde interessieren, wie die Erfahrung bezüglich der Genauigkeit vom BMP180 bw. GY68 bei der Temperatur ist. Ich habe den Sensor an einen Raspi 1 angeschlossen und die Berechnung (Auslesen der Kalibrierung + Verrechnung) gemäß Datenblatt durchgeführt. Erhalte beim Einschalten in einem Raum mit ca. 24°C eine Temperaur von 29°C, die dann Richtung 33,0°C steigt, innerhalb von 20 Minuten. Die Temperatur ist definitiv viel zu hoch. Auch der Anstieg macht mir Sorgen. Als Check, ob meine Berechnung korrekt ist, habe ich das Beispiel im Datenblatt durch die gleiche Berechnung gejagt und der Wert ist korrekt. Welche Erfahrungen habt Ihr mit dem Sensor gemacht?
ich schrieb: > Mich würde interessieren, wie die Erfahrung bezüglich der > Genauigkeit > vom BMP180 bw. GY68 bei der Temperatur ist. Ich habe den Sensor an einen > Raspi 1 angeschlossen und die Berechnung (Auslesen der Kalibrierung + > Verrechnung) gemäß Datenblatt durchgeführt. Erhalte beim Einschalten in > einem Raum mit ca. 24°C eine Temperaur von 29°C, die dann Richtung > 33,0°C steigt, innerhalb von 20 Minuten. Die Temperatur ist definitiv > viel zu hoch. Auch der Anstieg macht mir Sorgen. > Als Check, ob meine Berechnung korrekt ist, habe ich das Beispiel im > Datenblatt durch die gleiche Berechnung gejagt und der Wert ist korrekt. > > Welche Erfahrungen habt Ihr mit dem Sensor gemacht? https://thingspeak.com/channels/560741 Ich würde sagen bei mir passen die Temperaturen. Man sieht dass wenn die Sonne hoch ist, dann wir auf mein Balkon auch wärmer. Kannst du bitte einen Foto von deinem Aufbau machen? Es kann sein dass du den Sensor zu nah an dem Raspi hast. Der gibt ja auch wärme ab. Dann eventuell noch den Code Posten. Es könnte sich da etwas versteckt haben.
ich schrieb: > die dann Richtung 33,0°C steigt, innerhalb von 20 Minuten. vermutlich Eigenerwärmung der Schaltung.
Ok, den Anstieg kann ich verhindern, in dem ich das Mini-Breadboard nicht auf den Pi lege. Durch die jumper wire kann ich es max 20cm neben den Pi legen. Das Resultat ist dann 29.4C, also -4K durchs Umplatzieren. Jedoch immer noch zu hoch (ca. 5-7K). Die verwendeten Pins vom Pi sind : 1 (3.3), 3 (SDA), 5 (SCL), 14 (GND) Der Code ist:
1 | import smbus |
2 | from time import sleep, gmtime, strftime |
3 | |
4 | address = 0x77 |
5 | |
6 | bmp180 = smbus.SMBus(1) |
7 | |
8 | # unsigned short |
9 | AC5 = bmp180.read_byte_data(address,0xb2) |
10 | AC5 = (AC5 << 8) + bmp180.read_byte_data(address,0xb3) |
11 | |
12 | # unsigned short |
13 | AC6 = bmp180.read_byte_data(address,0xb4) |
14 | AC6 = (AC6 << 8) + bmp180.read_byte_data(address,0xb5) |
15 | |
16 | # short |
17 | MC = bmp180.read_byte_data(address,0xbc) |
18 | MC = (MC << 8) + bmp180.read_byte_data(address,0xbd) |
19 | if(MC > 0x7fff): |
20 | MC -= (1<<16) |
21 | |
22 | # short |
23 | MD = bmp180.read_byte_data(address,0xbe) |
24 | MD = (MD << 8) + bmp180.read_byte_data(address,0xbf) |
25 | if(MD > 0x7fff): |
26 | MD -= (1<<16) |
27 | |
28 | while True: |
29 | bmp180.write_byte_data(address,0xf4,0x2e) |
30 | sleep(0.005) |
31 | UT = bmp180.read_byte_data(address,0xf6) |
32 | UT = (UT << 8) + bmp180.read_byte_data(address,0xf7) |
33 | # print(UT) |
34 | X1 = ((UT - AC6) * AC5) >> 15 |
35 | X2 = (MC << 11) // (X1 + MD) |
36 | B5 = X1 + X2 |
37 | # temp are calculated in decGrad |
38 | # / 10.0 to cast on float |
39 | temp = ((B5 + 8) >> 4) / 10.0 |
40 | str_date = strftime('%a, %d %b %Y %H:%M:%S',gmtime()) |
41 | print(str_date + ' temp: {}C'.format(temp)) |
42 | sleep(10) |
Noch ein Nachtrag. Kabel wurden verlängert und ich habe den Sensor in den Kühlschrank gelegt, den Pi nicht. Nach 1h, 11.2°C. Naja, da habe ich gewisse Zweifel. Aus meiner Sicht hat der Sensor einen Offset von ca. 7K, wonach die Kalibrierdaten Käse sind.
ich schrieb: > Aus meiner Sicht hat der Sensor einen Offset von ca. 7K, wonach die > Kalibrierdaten Käse sind. BMP180 habe ich nicht, aber mehrere BME280, und da passen die Temperaturen sehr gut mit parallel gemessenen DS18B20. 7K Abweichung ist undenkbar. - Vielleicht hast Du ein 5V-Modul erwischt, was Du an 3.3V betreibst. - Oder die Wärmeleitung der Drähte vom PI zum BMP ist noch immer zu hoch. - Hast Du Abfrage-Totzeiten/Intervalle eingehalten? Auch beim Reset? - Deine Software habe ich nicht gecheckt, im Datenblatt findet man sicher Testzahlen und Beispielkalibrierungsdaten, womit man Deine Rechnung prüfen kann. Stutzig macht mich die Zeile > X2 = (MC << 11) // (X1 + MD) wegen des Doppelslashs. Aber vielleicht ist das auch eine Besonderheit Deiner Programmiersprache und bedeutet modulo oder so.
ich schrieb: > Ok, den Anstieg kann ich verhindern, in dem ich das Mini-Breadboard > nicht auf den Pi lege. Seehr gute Idee. Die Raumtemperatur direkt über der Heizung zu messen, geht meist schief.
Zu den Punkten: - Beim Thema Spannngsversorgung zeigen alle Raspi - bmp180 "Aufbauanleitungen" die Verbindung mit den 3.3V. An für sich ist auf dem Bord ein 662k Spannngsregler für 3.3V (da der bmp selber nur 3.6V verträgt), wodurch als externe Versorgung fürs Bord auch mehr möglich wäre (max 6.5V laut ds). An den I2C-Leitungen liegen durch die pull-ups 3.3V an, wurde nachgemessen. - Wärmeleitung über 40cm Kabel mit einem Temperaturdelta von 7K auf dem Chip, schwer vorzustellen. Muss ich mal schauen. - Totzeit laut Datenblatt 4.5ms ich habe 5ms gewählt, wurde auch schon erhöht mit identischen Resultat - Der // in python ist eine Division mit cast auf int
Besorg dir einfach ein zweites Modul. Das gibts selbst aus D sehr billig: https://www.ebay.de/itm/BMP180-Digitaler-Luftdruck-Sensor-GY-68-BMP085-Arduino-Raspberry-Barometer-Modul/392878966812?hash=item5b7969481c:g:ugAAAOSwl5ZfFLEj Dann weißt du wenigstens, ob es am Sensor liegt oder nicht.
ich schrieb: > - Der // in python ist eine Division mit cast auf int Ah, ok, wußte ich nicht - bin Pythonlegastheniker. Ansonsten hast Du ja wohl das Meiste erledigt, die Wärmeleitung würde ich nicht unterschätzen, aber das läßt sich leicht über eine Wärmefalle (gekühlten Alublock auf die 40cm Kabel legen oder ähnlich) checken. Für den BMP180 gibt es im Bosch-Datenblatt Testroutinen (page 15), ob die Software richtig rechnet. Wenn Du das auch schon gemacht hast, ok, dann kauf Dir am besten einen neuen Sensor ;-)
Wie oft misst du? Die Bosch-Sensoren haben eine grottig grosse Selbsterwärmung. Die Werte sind eigentlich nur sinnvoll zu gebrauchen, um den Luftdruck umzurechnen.
Helmut -. schrieb: > Wie oft misst du? Die Bosch-Sensoren haben eine grottig grosse > Selbsterwärmung. Laut Datenblatt ist die Stromaufnahme (und damit die Verlustleistung, die zur Selbsterwärmung führt) bei 1 Messung/Sekunde spezifiziert. Der Spitzenstrom bei der Messung (during conversion) ist um Größenordnungen höher. Daher ist die Frage "Wie oft misst du?" schon sehr interessant.
Wenn ich das Datenblatt von Bosch ansehe steht nichts drin wo die gemessene Temperatur herkommt. Nur dass sie zur Berechnung der Druckwerte benötigt wird. Meiner Meinung nach ist der BMP180 ein Drucksensor und damit basta. Dass eine Temperatur ausgelesen werden kann wird von 'schlauen' Verkäufern wohl als Temperaturmessung vermarktet.
corrado schrieb: > Wenn ich das Datenblatt von Bosch ansehe steht nichts drin wo die > gemessene Temperatur herkommt. Wo wird sie wohl herkommen - bestimmt nicht vom Mond. Die Temperatur wird auf dem Chip gemessen und ist gut an das MEMS für die Druckmessung angekoppelt. Wenn man den Sensor so betreibt, dass kräftige Eigenerwärmung auftritt, darf man sich nicht wundern, wenn man als Ergebnis nicht die Umgebungstemperatur erhält.
Ihr seht schon den roten Text unter dem Eingabefeld? Da steht dass ihr ein fast 3 Jahre altes totes Pferd reitet!
N. M. schrieb: > Da steht dass ihr ein fast 3 Jahre altes totes Pferd reitet! Stimmt, aber auch der aktuelle Nachfolger (BMP390) wird als reiner Drucksensor vermarktet. https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp390/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.