Forum: Mikrocontroller und Digitale Elektronik Temperaturgenauigkeit bmp180 bzw. gy68


von ich (Gast)


Lesenswert?

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?

von kyrk.5 (Gast)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

ich schrieb:
> die dann Richtung 33,0°C steigt, innerhalb von 20 Minuten.

vermutlich Eigenerwärmung der Schaltung.

von ich (Gast)


Lesenswert?

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)

von ich (Gast)


Lesenswert?

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.

von J. -. (Gast)


Lesenswert?

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.

von omg (Gast)


Lesenswert?

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.

von ich (Gast)


Lesenswert?

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

von Mein Senf (Gast)


Lesenswert?

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.

von J. -. (Gast)


Lesenswert?

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 ;-)

von Helmut -. (dc3yc)


Lesenswert?

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.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von corrado (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von N. M. (mani)


Lesenswert?

Ihr seht schon den roten Text unter dem Eingabefeld?
Da steht dass ihr ein fast 3 Jahre altes totes Pferd reitet!

von Wolfgang (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.