Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Genauigkeitstest bei der PTB: Luftdrucksensoren BMP180, BMP280 und BME680

Posted on 29. Mai 20245. Juni 2024 by Stefan Draeger

Im Rahmen von einem Genauigkeitstest der Luftdrucksensoren an der PTB habe ich die Modelle BMP180, BMP280 und BME680 untersucht. Diese Sensoren sind weit verbreitet und werden in verschiedenen Anwendungen wie Wetterstationen, Höhenmessern und IoT-Geräten eingesetzt. Um die Zuverlässigkeit und Präzision dieser Sensoren zu bewerten, habe ich die Messungen in den Räumlichkeiten der Physikalisch-Technischen Bundesanstalt (PTB) in Braunschweig durchgeführt. Durch die Verwendung eines hochpräzisen Referenzsensors der PTB konnte ich die Messergebnisse validieren und eine fundierte Analyse der Leistungsfähigkeit der Sensoren durchführen. In diesem Beitrag stelle ich die Testergebnisse vor.

Für den Beitrag Vergleich von Temperatursensoren für den Arduino & Raspberry PI war ich bereits an der TU-Braunschweig und konnte dort in einem Klimaschrank diverse Temperatursensoren testen.

Hinweis: Als begeisterter Hobbyschrauber und beruflich im Bereich Informatik tätig, ist mir die Arbeit mit Luftdrucksensoren vertraut. Jedoch ist die wissenschaftliche Herangehensweise an den Vergleich dieser Sensoren für mich neu. Für diesen Beitrag habe ich intensiv recherchiert und Unterstützung aus verschiedenen Quellen genutzt, darunter das Internet, ChatGPT sowie Freunde und Bekannte mit entsprechendem Fachwissen. Mein Ziel ist es, diesen Beitrag so präzise und informativ wie möglich zu gestalten. Ich hoffe, dass meine Ausführungen hilfreich und interessant für dich sind.

Inhaltsverzeichnis

  • Warum dieser Test der Luftdrucksensoren?
  • Welche Luftdrucksensoren sollen getestet werden?
    • Technische Daten der verwendeten Sensoren
  • Testaufbau bei der PTB – Braunschweig
  • Ergebnisse und Analyse der gesammelten Messdaten
  • Wie werden die Druckmessgeräte kalibriert?
  • Fazit
  • Danksagung
  • Anhang 1 – Aufbau der Schaltung
  • Anhang 2 – Programmieren der Sensoren mit MicroPython
    • Aufzeichnen der Daten mit Putty

Warum dieser Test der Luftdrucksensoren?

In vielen Anwendungen verwenden wir Luftdrucksensoren, um präzise Daten zu erfassen und in verschiedenen Schaltungen einzusetzen. Diese Daten können dann in weiterführenden Systemen für verschiedene Zwecke genutzt werden. Es ist von entscheidender Bedeutung, dass wir uns auf die Genauigkeit und Zuverlässigkeit dieser Sensoren verlassen können. Daher ist es mein Ziel, die Leistung der Sensoren zu prüfen und festzustellen, inwieweit sie unseren Anforderungen entsprechen.

Besonders in Betracht der vergleichsweise günstigen Preise dieser Sensoren ist es wichtig, ihre Qualität kritisch zu hinterfragen. Auch wenn sie kostengünstig sind, sollten sie dennoch zuverlässige und präzise Messungen liefern. Durch diesen Test können wir herausfinden, ob die Sensoren ihren Preis wert sind und ob sie für unsere Anwendungen geeignet sind.

Welche Luftdrucksensoren sollen getestet werden?

Es sollen die Sensoren BMP180, BMP280 sowie BME680 getestet werden.

BME680 Sensor
BME680 Sensor
BMP280 Sensor
BMP280 Sensor
BMP180 Sensor
BMP180 Sensor

Technische Daten der verwendeten Sensoren

Schauen wir uns zunächst die technischen Daten der Sensoren an, man kann der Tabelle recht gut entnehmen, dass der Messbereich identisch ist, lediglich die Auflösung der Daten ist unterschiedlich.

EigenschaftBMP180BMP280BME680
Versorgungsspannung1.8 – 5V DC1.8 – 5V DC1.2 – 3.6V DC
SchnittstelleI2C, SPII2C, SPII2C, SPI
Temperaturbereich-40 bis +85 °C-40 bis +85 °C-40 bis +85 °C
Druckbereich300-1100 hPa300-1100 hPa300-1100 hPa
Auflösung Druck0,02 – 0,06 hPa0,01 hPa0,01 hPa
Genauigkeit Druck±0,12 hPa±0,12 hPa±0,12 hPa
Messzeit––< 1 s

Nachfolgend die Links zu den Quellen, von wo ich diese Daten entnommen habe:

  • Bosch BMP180
  • Bosch BMP280
  • Bosch BME680

Testaufbau bei der PTB – Braunschweig

Für meinen Testaufbau wurde mir ein Prüfmittel bereitgestellt welches zuletzt am 09.01.2024 kalibriert wurde und eine negativen Korrekturwert von -0,24 mbar ausweist. Diese -0,24 mbar sind zufälligerweise auch der Höhenkorrektur eines weiteren per Netzwerk ausgelesenen Referenzsensors, welcher sich einen Raum darunter befindet.

Prüfmittel von der PTB und Schaltung am Raspberry Pi Pico
Prüfmittel von der PTB und Schaltung am Raspberry Pi Pico
Prüfmittel von der PTB zum Messen von Luftdruck, Temperatur und rel. Luftfeuchte
Prüfmittel von der PTB zum Messen von Luftdruck, Temperatur und rel. Luftfeuchte
Testaufbau - prüfen von Luftdrucksensoren an der PTB Braunschweig
Testaufbau – prüfen von Luftdrucksensoren an der PTB Braunschweig

Auf der Internetseite https://www.ptb.de/cms/nc/ptb/fachabteilungen/abt3/fb-33/ag-333/luftdruckdaten.html findest du die aktuellen Daten (im 15 Minuten Takt) des Luftdrucksensors welcher als Luftdruckreferenz für sämtliche Aufbauten genutzt wird. Ebenso wird dieser Sensor auch für das Messen von Gewichten verwendet.

Genaues Prüfmittel in einem klimatisiertem, Labor der PTB
Genaues Prüfmittel in einem klimatisiertem, Labor der PTB

Ergebnisse und Analyse der gesammelten Messdaten

In diesem Abschnitt möchte ich die Ergebnisse aus diesem Test aufzeigen. Meine Herangehensweise ist hier das zunächst die Rohdaten (>1000 Datenreihen) gegenübergestellt werden.

Die Rohdaten der Messungen am Raspberry Pi Pico:

Messdaten – Luftdrucksensoren BMP180, BMP280 und BME680Herunterladen

Die Messdaten vom Referenzsensor können unter https://www.ptb.de/cms/nc/ptb/fachabteilungen/abt3/fb-33/ag-333/luftdruckdaten.html abgerufen werden. Der Zeitraum sollte hier auf das Datum 27.05.2024 eingeschränkt werden. (Es wird jedoch lediglich alle 15 Minuten ein Messwert veröffentlicht.) Von diesen Messwerten müssen nun durch den ca. 2m Höhenunterschied ein Wert von 0,24 mbar abgezogen werden.

ZeitstempelMesswertEinheit
2024-05-27 15:301008.4mbar
2024-05-27 15:451008.9mbar
2024-05-27 16:001008.7mbar

Ich habe vom Referenzsensor mehrere Werte erfasst und diese waren zumeist zwischen 1008,36 mbar & 1008,47 mbar.

Darstellung der aufgezeichneten Messwerte
Darstellung der aufgezeichneten Messwerte

Es ist jetzt schon erkennbar das der BMP280 Sensor deutlich näher am Referenzsensor der PTB ist als die anderen beiden. Der Sensor BME680 (ca. 16 €) ist nach dem BMP280 noch näher an dem Referenzsensor und der günstige BMP180 ist als ausreicher weit außerhalb der Werte.

Messwerte als Microsoft Excel MappeHerunterladen

Hier die Ansicht der Daten in Boxplotes:

Vergleich der Drucksensoren in Boxplotes
Vergleich der Drucksensoren in Boxplotes

Wie werden die Druckmessgeräte kalibriert?

Schauen wir uns die Pyramide im Bild 1 etwas genauer an (von unten nach oben), wir haben zunächst ein einfaches Prüfmittel, dieses wird gegen ein höherwertiges Messgerät kalibriert, dieses wiederum wird gegen ebenso ein höherwertiges Prüfmittel kalibriert. Bis man eben an der Spitze der Pyramide angekommen ist und es keine weitere Ebene gibt. Nur, wie werden die nationalen Prüfmittel kalibriert?

Um ein Prüfmittel sehr genau zu kalibrieren, nutzt man zwei Systeme ein Normal Flüssigkeitsmanometer und ein Normal Kolbenmanometer. In der Vergangenheit waren die Flüssigkeitsmanometer verbreitet und das genaueste Prüfmittel. Die Flüssigkeitsmanometer werden jedoch durch verbesserte Fertigungsprozesse bei Kolbenmanometer (Verringerung der Spaltmaße) immer mehr verdrängt. Das PTB hat noch so ein Flüssigkeitsmanometer, welches mit Quecksilber arbeitet.

Das Prinzip der Kalibrierung von Messgeräten ist recht einfach bzw. wurde mir von Herrn E. erläutert und danach war das Ganze auch mehr als einleuchtend. Die Formel ist p=F/A, wobei p der Druck, F die Kraft und A die Fläche ist.

Die Funktionsweise ist sehr simple, auf einem Kolben von welchem die Masse auf wenige tausenstel bekannt sind werden hochgenaue Gewichte gelegt, unterhalb von diesem Kolben bildet sich dann ein Druck welchen man mit der oben genannten Formel berechnen kann.

Tafel - Kalibrierung von Messgeräten
Tafel – Kalibrierung von Messgeräten
spezielle Gewichte zum Kalibrieren von Druckmessgeräten
spezielle Gewichte zum Kalibrieren von Druckmessgeräten

Rechts im Bild siehst du eine Apparatur zum Messen von Druck bis 10000 Bar. Daher sind die Dimensionen der meisten BauteileDruck so klein, dass bei einem Bersten der Apparatur nur ein kleines Klacken zu hören wäre.

Aufbau von Drucktest bis 10000 Bar
Aufbau von Drucktest bis 10000 Bar
Hochgenaues / Nationales Prüfmittel
Hochgenaues / Nationales Prüfmittel

An der Physikalisch-Technischen Bundesanstalt Braunschweig gibt es das genaueste Prüfmittel für Drücke welches auf sechs Stellen nach dem Komma messen kann.

Links im Bild siehst du einen Teil von diesem Prüfmittel mit der Seriennummer 2. Bei meinem Besuch war dieses zerlegt und daher fehlen hier einige Anbauteile.

Das Prinzip des Flüssigkeitsbarometer wird jedoch weiterhin verwendet und mit Lasermessgeräten wird dieses umso genauer. Als Flüssigkeit wird hier ein spezielles Öl verwendet.

experimentelles Flüssigkeitsmanometer in der PTB Braunschweig
experimentelles Flüssigkeitsmanometer in der PTB Braunschweig

Fazit

Als Fazit aus diesem Test der Luftdrucksensoren an der PTB ziehe ich das der Luftdrucksensor BMP280 welcher sich im mittleren Preissegment befindet eine gute Wahl ist wenn es um die Messung von Drucken geht. Der deutlich günstige Sensor BMP180 währe eine alternative wenn es um nicht kritische Werte geht.

Einzig der BME680 Sensor welcher noch viele weitere Messgrößen liefert (Luftqualität, Temperatur, rel. Luftfeuchtigkeit) liegt hier noch etwas näher am Referenzsensor der PTB.

Danksagung

Ich möchte mich herzlich bei der Physikalisch-Technischen Bundesanstalt (PTB) in Braunschweig bedanken, dass ich die Möglichkeit erhalten habe, die Räumlichkeiten für meinen Genauigkeitstest der Luftdrucksensoren BMP180, BMP280 und BME680 zu nutzen. Besonders dankbar bin ich für die Bereitstellung eines hochpräzisen Referenzsensors, der es mir ermöglicht hat, die Messergebnisse meiner Testsensoren zu validieren und sicherzustellen, dass die durchgeführten Messungen höchst zuverlässig sind. Diese Unterstützung war von unschätzbarem Wert für die Durchführung und die Qualität meines Tests.

Anhang 1 – Aufbau der Schaltung

Die Luftdrucksensoren werden via I2C angeschlossen, der verwendete Raspberry Pi Pico hat davon zwei zur Verfügung. Diese beiden I2C Schnittstellen werden auch benötigt, da die Sensoren gleiche I2C Adressen haben. (Selbst wenn man eine alternative I2C Adresse über Lötpunkte setzt, hat man dieses Problem.)

Sensordefault I2C Adressealternative I2C Adresse
BMP180 0x77–
BMP280 0x760x77
BME680 0x770x76

Hier die Schaltung auf dem Breadboard:

Schaltung - Luftdrucksensoren BMP180, BMP280 und BME680 am Raspberry Pi Pico
Schaltung – Luftdrucksensoren BMP180, BMP280 und BME680 am Raspberry Pi Pico

Anhang 2 – Programmieren der Sensoren mit MicroPython

Für die Programmierung verwende ich das Tool Thonny welches unter https://thonny.org/ kostenfrei heruntergeladen werden kann. Zusätzlich für die Sensoren benötigen wir noch drei Module, welche von den entsprechenden GitHub Repositorys heruntergeladen werden können.

  • Sensor BMP180 – robert-hh / BMP085_BMP180 (ZIP-Datei)
  • Sensor BMP280 – flrrth / pico-bmp280 (ZIP-Datei)
  • Sensor BME680 – robert-hh / BME680-Micropython (ZIP-Datei)
#importieren der Bibliotheken
#für die Sensoren
from bme680 import *
from bmp280 import BMP280I2C
from bmp085 import BMP180
from machine import I2C, Pin
import machine
import time

#definieren der verwendeten I2C Schnittstellen
i2c0 = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)
i2c1 = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000)

#initialisieren des Sensors BME680
bme680 = BME680_I2C(i2c0)

#initialisieren des Sensors BMP280
bmp280 = BMP280I2C(0x76, i2c1)

#initialisieren des Sensors BMP180
bmp180 = BMP180(i2c1)
bmp180.oversample = 2
bmp180.sealevel = 101325

#Starten der Endlosschleife
while True:
    #auslesen der Sensorwerte vom BME680 Sensor
    bme680Temperatur = bme680.temperature
    bme680Luftfeuchtigkeit = bme680.humidity
    bme680Luftdruck = bme680.pressure
    bme680Hoehe = bme680.altitude
    
    #auslesen der Sensorwerte vom BMP280 Sensor
    bmp280Values = bmp280.measurements
    bmp280Temperatur = bmp280Values['t']
    bmp280Luftdruck = bmp280Values['p']
        
    #auslesen der Sensorwerte vom BMP180 Sensor
    bmp180Temperatur = bmp180.temperature
    bmp180Luftdruck = bmp180.pressure
    bmp180Hoehe = bmp180.altitude
    
    #ermitteln des aktuellen Zeitstempels
    rtc = machine.RTC()
    #die Funktion datetime() liefert ein Tupel
    #mit den Werten für Datum und Uhrzeit
    #Beispiel: (2024, 5, 23, 3, 6, 43, 7, 0)
    currentDateTime = rtc.datetime()
    year = currentDateTime[0]
    month = currentDateTime[1]
    day = currentDateTime[2]
    unknown = currentDateTime[3]
    hour = currentDateTime[4]
    minutes = currentDateTime[5]
    seconds = currentDateTime[6]
    #formatieren der Zeitwerte
    textFormat = "{0}.{1}.{2} {3}:{4}:{5}"
    formatedDateTime = textFormat.format(day, month, year, hour, minutes, seconds)
    
    currentTimestamp = time.time()
    
    #ausgeben der Daten auf der seriellen Schnittstelle,
    #als Separator wird ein Semikolon verwendet,
    #somit können diese Daten als CSV eingelesen werden
    #Spalten:
    # 1 - aktueller Zeitstempel (lesbar)
    # 2 - aktueller Zeitstempe (Unix Timestamp)
    # 3 - BMP180 - Luftdruck
    # 4 - BMP180 - Temperatur
    # 5 - BMP180 - Höhe über Null
    # 6 - BMP280 - Luftdruck
    # 7 - BMP280 - Temperatur
    # 8 - BME680 - Luftdruck
    # 9 - BMP680 - Temperatur
    # 10 - BME680 - Luftfeuchtigkeit
    # 11 - BMP680 - Höhe über Null
    print(formatedDateTime, currentTimestamp, bmp180Luftdruck,bmp180Temperatur, bmp180Hoehe, bmp280Luftdruck,bmp280Temperatur,bme680Luftdruck, bme680Temperatur, bme680Luftfeuchtigkeit,bme680Hoehe, sep=";")
    
    #eine Pause von 1 Sekunde
    time.sleep(1)      

Auf der Kommandozeile können wir nun die Daten ablesen.

Aufzeichnen der Daten mit Putty

Die Daten der seriellen Schnittstelle können recht simple mit Putty aufgezeichnet werden. Das Tool Putty ist eigentlich ein Terminal Programm, mit welchem weit entfernte Rechner / Server gesteuert und bedient werden können. Jedoch können wir sämtliche Eingaben in einer Logdatei mitschreiben lassen, dieses Feature nutze ich hier um die Daten der seriellen Schnittstelle aufzuzeichnen.

1 thought on “Genauigkeitstest bei der PTB: Luftdrucksensoren BMP180, BMP280 und BME680”

  1. Pingback: Kompakte Sensor-Platine mit AHT20 und BMP280: Vielseitig und platzsparend - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}