Forum: Mikrocontroller und Digitale Elektronik Temperaturgenauigkeit bmp180 bzw. gy68


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von ich (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

vermutlich Eigenerwärmung der Schaltung.

von ich (Gast)


Bewertung
0 lesenswert
nicht 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:
import smbus
from time import sleep, gmtime, strftime

address = 0x77

bmp180 = smbus.SMBus(1)

# unsigned short
AC5 = bmp180.read_byte_data(address,0xb2)
AC5 = (AC5 << 8) + bmp180.read_byte_data(address,0xb3)

# unsigned short
AC6 = bmp180.read_byte_data(address,0xb4)
AC6 = (AC6 << 8) + bmp180.read_byte_data(address,0xb5)

# short
MC = bmp180.read_byte_data(address,0xbc)
MC = (MC << 8) + bmp180.read_byte_data(address,0xbd)
if(MC > 0x7fff):
        MC -= (1<<16)

# short
MD = bmp180.read_byte_data(address,0xbe)
MD = (MD << 8) + bmp180.read_byte_data(address,0xbf)
if(MD > 0x7fff):
        MD -= (1<<16)

while True:
        bmp180.write_byte_data(address,0xf4,0x2e)
        sleep(0.005)
        UT = bmp180.read_byte_data(address,0xf6)
        UT = (UT << 8) + bmp180.read_byte_data(address,0xf7)
#       print(UT)
        X1 = ((UT - AC6) * AC5) >> 15
        X2 = (MC << 11) // (X1 + MD)
        B5 = X1 + X2
        # temp are calculated in decGrad
        # / 10.0 to cast on float
        temp = ((B5 + 8) >> 4) / 10.0
        str_date = strftime('%a, %d %b %Y %H:%M:%S',gmtime())
        print(str_date + ' temp: {}C'.format(temp))
        sleep(10)

von ich (Gast)


Bewertung
0 lesenswert
nicht 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ürgen S. (avus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von omg (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Besorg dir einfach ein zweites Modul. Das gibts selbst aus D sehr 
billig:

Ebay-Artikel Nr. 392878966812

Dann weißt du wenigstens, ob es am Sensor liegt oder nicht.

von Jürgen S. (avus)


Bewertung
0 lesenswert
nicht 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 ;-)

: Bearbeitet durch User
von Helmut -. (dc3yc)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.