Arduino Lektion 10: BMP180 digitaler Luftdruck Sensor

Nach langer Zeit möchte ich gerne einen weiteren Sensor vorstellen, es ist der
„BMP180 digitaler Luftdruck Sensor“. Dieser Sensor enthält unter anderem auch einen Temperatursensor welcher hier aber nicht weiter betrachtet wird.

BMP180 digitaler Luftdruck Sensor
BMP180 digitaler Luftdruck Sensor

Diesen Sensor habe ich bei Ebay für 1,99 € per Sofort-Kauf bei einen Händler aus Singapur (wiedermal lange Lieferzeiten).

Hier nun ein paar Technische Daten:

  • Spannung 1,8 V bis 3,6V
  • Leistungsaufnahme 0,5µA bei 1Hz
  • Genauigkeit 0.02hPa
  • Messbereich 300hPa bis 1100hPa
    Entspricht einer Höhe bzw Tiefe von +9000m bis – 500m.

Der Schaltplan

Es ist darauf zu achten das die PIN’s an den richtigen Analogen Buchsen des Microcontrollers angeschlossen werden. Leider gibt die Bibliothek keine Möglichkeit die zu bestimmen. (Außer natürlich man ändert die *.h Datei.)

VCC  -> 3.3 V
GNG -> GND
SDA  -> A4
SCL  -> A5

Anschlussplan des BMP180 an den Sunfounder UNO R3
Anschlussplan des BMP180 an den Sunfounder UNO R3

Bei dem Anschlussplan habe ich keinen originalen Maßstab verwendet da der Sensor BMP180 sehr klein ist.

Benötigte Bibliothek

Für den Betrieb des Sensors werden folgende Bibliotheken benötigt:

Wie man eine Bibliothek der Arduino IDE hinzufügt habe ich im Tutorial Arduino IDE, Einbinden einer Bibliothek erläutert.

Der Quellcode

#include <Wire.h>
#include <BMP180.h>


BMP180 barometer; //Die Instanzvariable eines BMP180 Sensors.

void setup()
{
  Serial.begin(9600); // Baudrate auf 9600 setzen.
  Wire.begin(); //Adafruit Wire Bibliothek für die I2C Kommunikation mit dem BMP180 Sensor.
  barometer = BMP180(); //setzen einer Instanz des BMP180 Sensors.
  //Prüfen ob ein BMP180 Sensor gefunden wurde.
  if(!barometer.EnsureConnected()){ 
    Serial.println("Es wurde kein BMP180 Sensor gefunden.");
  }
}

void loop()
{
  //Nur wenn ein BMP180 Sensor gefunden wurde dann soll eine Ausgabe erfolgen.
  if(barometer.IsConnected)
  {
    //Lesen des Wertes für den Luftdruck aus dem Sensor.
    long currentPressure = barometer.GetPressure();
    
    //Schreiben des gelesenen Wertes auf den Serielenausgang
    Serial.print("Luftdruck: ");
    Serial.print(currentPressure / 100);
    Serial.print(" hPa");
   
    Serial.println(); //Eine neue Zeile einfügen.
    delay(1000);  //Kurze Pause von 1 sek.
  }
}

Der Aufbau

Sunfounder Uno R3 mit BMP180 Sensor
Sunfounder Uno R3 mit BMP180 Sensor

Screenshot der Ausgabe auf dem Seriellen Monitor

Ausgabe auf dem Seriellen Monitor der Arduino IDE
Ausgabe auf dem Seriellen Monitor der Arduino IDE

Der Quellcode zum Download

 

Nachtrag (05.12.2019)

Wenn du nicht die Adafruit Bibliothek herunterladen kannst oder möchtest, so kannst du diese auch über den Bibliotheksverwalter installieren.
Den Bibliotheksverwalter öffnest du diesen über „Sketch“ > „Bibliothek einbinden“ >“Bibliotheken verwalten…“.

Adafruit Bibliothek BMP180 über den Bibliotheksverwalter installieren
Adafruit Bibliothek BMP180 über den Bibliotheksverwalter installieren

Nachdem diese Bibliothek installiert wurde, kannst du das Beispiel über „Datei“ > „Beispiele“ >“Adafruit BMP085 Library“ > „BMP085test“ öffnen und auf den Microcontroller schreiben.

Oder du nutzt dieses kleine, modifizierte Beispiel:

#include <Wire.h>
#include <Adafruit_BMP085.h>

//Instanz eines Sensors
Adafruit_BMP085 bmp;

void setup(){
  //beginn der seriellen Kommunikation mit 9600 Baud
  Serial.begin(9600); 
  //Wenn kein Sensor gefunden wurde dann...
  if (!bmp.begin()) {
  Serial.println("Es wurde kein Sensor gefunden, bitte prüfe die Verkabelung!");
  //eine Endlosschleife
  //Dieses sorgt dafür das die Loop nicht erreicht wird!
  while (1) {}
  }
}

void loop(){
  //Ausgabe des Luftdrucks auf der seriellen Schnittstelle
  Serial.print("Luftdruck = ");
  Serial.print(bmp.readPressure());
  Serial.println(" Pa");

  delay(1000);  //Kurze Pause von 1 sek.
}

Du solltest nun, wenn du alles so wie oben beschrieben angeschlossen hast, nachfolgende Ausgabe im Seriellen Monitor finden.

Konsolenausgabe des Beispieles zum BMP180 Sensor
Konsolenausgabe des Beispieles zum BMP180 Sensor

15 Gedanken zu „Arduino Lektion 10: BMP180 digitaler Luftdruck Sensor

  • Pingback:Sensorik – BMP180 – Luftdurck – Adrian's Blog

    • 5. Dezember 2019 um 14:13
      Permalink

      LOL als ob bei dir irgendwas funktioniert hat, das ist doch fake. Bei mir hat gar nichts funktioniert

      Antwort
      • 5. Dezember 2019 um 14:23
        Permalink

        Hi Werner,

        was ist denn dein Fehler?
        Gerne kann ich das ganze neu aufbauen und den Beitrag um ein kleines Video ergänzen.

        Gruß,

        Stefan Draeger

        Antwort
  • Pingback:Wemos D1 mini Shield: BMP180 Shield - Technik Blog

  • 5. Dezember 2019 um 14:07
    Permalink

    Diese seite bringt nichts. Da dieser skatch einfach nicht klapt.

    Antwort
    • 5. Dezember 2019 um 14:09
      Permalink

      Beim mir hat es auch nicht geklappt. Es kam die ganze zeit der gleiche Fehler.

      Antwort
      • 5. Dezember 2019 um 14:23
        Permalink

        Hi,

        welcher Fehler kommt denn bei dir?

        Gruß,

        Stefan Draeger

        Antwort
    • 5. Dezember 2019 um 20:42
      Permalink

      Hallo,

      ich habe soeben den Sketch ausprobiert und er klappt bei mir.
      Aber ich habe den Beitrag um eine „zweite Lösung“ erweitert, ich hoffe das wird dir weiterhelfen.
      Ansonsten empfehle ich dir gerne eine Kontaktaufnahme über das Kontaktformular und dort kannst du mir dann ausführlich dein Problem beschreiben.

      Gruß,

      Stefan Draeger

      Antwort
  • 6. Mai 2020 um 13:42
    Permalink

    Super Toll beschrieben!
    Danke für Deine Bemühungen!

    Gruß
    Ralf

    Antwort
  • 8. Mai 2020 um 01:06
    Permalink

    Hallo,
    ich habe eben den Sketch ausprobiert und er funktioniert.
    Aber : Die Konsolenausgabe, ich nehme an, das ist die Ausgabe über den seriellen Monitor, erhalte ich nicht.
    Wo ist denn da überhaupt die barometrische Höhenformel hinterlegt? Zumindest müsste man doch irgendwo die lokale Höhe eingeben, oder?
    Vielen Dank vorab!
    Gruß Josef

    Antwort
    • 8. Mai 2020 um 18:04
      Permalink

      Hallo Josef,

      danke für dein Kommentar, ich freue mich das du dich auf mein Blog verirrt hast.
      Wenn du die Ausgabe auf dem seriellen Monitor nicht erhältst, wie kommst du dann zu der Annahme das der Sketch funktioniert?
      Erhältst du eine Fehlermeldung?
      Ist die Baudzahl im seriellen Monitor korrekt eingestellt?

      Gruß,

      Stefan

      Antwort
      • 9. Mai 2020 um 22:20
        Permalink

        Hallo Stefan,
        der Sketch funktioniert in sofern, dass dass der Druck angezeigt wird.
        Aber alle anderen Daten aus Deinem obigen Beispiel „Konsolenausgabe des Beispieles zum BMP180 Sensor“ erhalte ich nicht. Naja, die stehen in dem Sketch ja auch nicht drin. Wo kommen diese her?
        Wobei Du allerdings darauf hinweist, dass die Daten auf dem Seriellen Monitor zu finden sein sollten.
        Gruß Josef

        Antwort
        • 10. Mai 2020 um 07:26
          Permalink

          Hi Josef,

          danke für deinen Hinweis.
          Diese Ausgabe auf der Konsole erhältst du, wenn du das Beispiel verwendest welches der Bibliothek „Adafruit BMP085 Library“ beiliegt.
          Wenn du dieses nutzt erhälst du genau die Ausgabe wie gezeigt.

          Gruß,

          Stefan

          Antwort
          • 11. Mai 2020 um 16:22
            Permalink

            Hallo,
            oh, sorry wer lesen kann ist wie immer klar im Vorteil….:)
            Ich hatte vermutet, dass das auch so mit dem modifizierten Beispiel funktionieren soll. Mein Fehler! Mit dem Beispiel aus der Arduino funktioniert es nun auch
            Vielen Dank!
            Gruß Josef

Schreibe einen Kommentar

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