Rexroth Indracontrol L75


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Wetterstation mit BMP180


Wie man auf dem unten platzierten Schaltplan sehen kann, werden bei dieser Schaltung nur wenige Verbindungen gebraucht. Wenn man die Spannungsversorgung einmal wegdenkt, werden mit lediglich zwei Verbindungen drei Komponenten miteinander verknüpft. Das ist schon alles.
Der knappe Verdrahtungsaufwand ist auf die Tatsache zurückzuführen, dass die Gerätschaft über den I2C-Bus miteinander korrespondiert. An den I2C-Bus, der um zu funktionieren lediglich zwei Leitungen benötigt, können gleichzeitig mehrere Teilnehmer angeschlossen werden. Diese Zweidrahtverbindung ist für kurze Strecken konzipiert und wird in unserem Fall von Arduino Nano, der in der Schaltung als Master auftritt, verwaltet. Die zwei Verbindungsleitungen haben auch ihre eigenen Namen. Die erste Leitung, genannt SCL, ist die Taktleitung. Die zweite Leitung mit der Bezeichnung SDA ist für Datenübertragung zuständig.

BMP180

BMP180

Bei dem Bosch-Sensor BMP180 handelt es sich um einen barometrischen Luftdruck- und Temperatursensor. Er ist der Nachfolger des Luftdruck- und Temperatursensors BMP85, der nicht mehr hergestellt wird. BMP180 arbeitet deutlich präziser als sein Vorgänger BMP-85. Der Sensor kann neben Temperatur- und Luftdruckmessung auch daraus resultierenden Höhe über den Meeresspiegel und den dort herrschenden Luftdruck selbstständig berechnen.
Der Sensor verfügt über vier Anschlüsse. Die Anschlüsse Vin und GND beziehen sich auf Spannungsversorgung, mit SCL und SDA wird der Sensor an den I2C-Bus eingebunden.

BMP180 Anschlüsse

Spezifikation:

Betriebsspannung: 3,3 VDC
Schnittstelle: I2C - Bus
Temperatur-Messbereich: -40°C bis +85°C
Genauigkeit Temperaturmessung: 0,1 °C
Luftdruck-Messbereich: 300 – 1100 hPa
Genauigkeit Luftdruckmessung: 0,02 – 0,06 hPa
Abmessungen: 13 x 10 x 2,5 mm


Anzeige

Display

Das hier eingesetzte LCD-Display 20x4 ist auf seiner Rückseite mit dem Displaytreiber FC-113 verbunden. Dank dessen werden für den Betrieb des Displays nur vier Leitungen benötigt. Zwei davon werden für die Spannungsversorgung benötigt, zwei weitere für den I2C-Bus. Darüber hinaus befindet sich auf dem Treiber ein Poti, mit dem die Helligkeit des Displays eingestellt werden kann.

LCD Display 20x4


Microkontroller

Microkontroller

Die Regie in der Schaltung übernimmt Arduino Nano. Auch der Mikrocontroller kommt mit vier Verbindungen aus. Spannungsversorgung und I2C-Bus. Die Hauptaufgabe in der Schaltung konzentriert sich auf die Software. Doch auch das Programm, da wir hier mit fertigen Bibliotheken hantieren, ist alles andere als kompliziert.

Arduino Einführung


Schaltplan

Schaltplan


Testschaltung

Testschaltung


Programm

// **********************************************************************
// Mini-Wetterstation mt dem Sensor BMP180
// und Arduino Nano
// Temperatur- und Luftdruckmessung
// Arduino IDE 2.3.2
// **********************************************************************
#include <Adafruit_BMP085.h>                  // Bibliothek Sensor 
Adafruit_BMP085 bmp;

#include <LiquidCrystal_I2C.h>                // Bibliothek LCD 
LiquidCrystal_I2C lcd(0x27,20,4);             // Adresse, Zeichen, Zeilen

// **********************************************************************
void setup() {

    lcd.init();                               // Display initialisieren 
    lcd.backlight();                          // Hintergrundbeleuchtung
    if (!bmp.begin()) {                       // Sensor prüfen
        lcd.clear();
        lcd.setCursor(5,1);
        lcd.print("STOERUNG");
        lcd.setCursor(0,2);
        lcd.print("Sensor ausgefallen!");        
        while (1) {} 
    }
}

// **********************************************************************
void Titel() {

    lcd.clear();                              // Bildschirm löschen
    lcd.setCursor(1,0);                       // Cursor auf Position
    lcd.print("------------------");          // Text 1 Zeile
    lcd.setCursor(1,1);                       // Cursor auf Position
    lcd.print("Mini-Wetterstation");          // Text 2 Zeile
    lcd.setCursor(5,2);                       // Cursor auf Position
    lcd.print("mit BMP180");                  // Text 3 Zeile  
    lcd.setCursor(1,3);                       // Cursor auf Position
    lcd.print("------------------");          // Text 4 Zeile      
    delay (3000);                             // Wartezeit
}

// **********************************************************************
void Ausgabe_Temperatur() {

    lcd.clear();                              // Bildschirm löschen
    lcd.setCursor(0,0);                       // Cursor auf Position
    lcd.print("Temperatur: ");                // Text
    lcd.setCursor(6,2);                       // Cursor auf Position
    lcd.print(bmp.readTemperature());         // Wertausgabe °C
    lcd.print(" 'C ");                        // Text
    lcd.setCursor(6,3);                       // Cursor auf Position
                                              // Umrechnung °C in °F
    float Temperatur_in_F = (bmp.readTemperature() * 1.8) + 32;
    lcd.print(Temperatur_in_F);               // Wertausgabe °F         
    lcd.print(" 'F ");                        // Text
    delay (3000);                             // Wartezeit
}

// **********************************************************************
void Ausgabe_Luftdruck() {

    lcd.clear();                              // Bildschirm löschen
    lcd.setCursor(0,0);                       // Cursor auf Position
    lcd.print("Luftdruck: ");                 // Text
    lcd.setCursor(6,2);                       // Cursor auf Position
    lcd.print(bmp.readPressure());            // Wertausgabe Pa
    lcd.print(" Pa ");                        // Text
    lcd.setCursor(5,3);                       // Cursor auf Position
                                              // Umrechnung Pa in mbar
    float Luftdruck_in_mbar = bmp.readPressure() / 100;
    lcd.print(Luftdruck_in_mbar);             // Wertausgabe mbar
    lcd.print(" mbar ");                      // Text
    delay (3000);                             // Wartezeit
}

// **********************************************************************
void Ausgabe_Hoehe_ueber_Meersespiegel() {

    lcd.clear();                              // Bildschirm löschen
    lcd.setCursor(0,0);                       // Cursor auf Position
    lcd.print("Hoehe ueber dem ");            // Text
    lcd.setCursor(0,1);                       // Cursor auf Position
    lcd.print("Meeresspiegel: ");             // Text
    lcd.setCursor(4,3);                       // Cursor auf Position
    lcd.print(bmp.readAltitude(101500));      // Wertausgabe m
    lcd.print(" Meter ");                     // Text
    delay (3000);                             // Wartezeit
}
 
// **********************************************************************
void Ausgabe_Luftdruck_Meersespiegel() {

    lcd.clear();                              // Bildschirm löschen
    lcd.setCursor(0,0);                       // Cursor auf Position
    lcd.print("Luftdruck ");                  // Text
    lcd.setCursor(0,1);                       // Cursor auf Position
    lcd.print("Meeresspiegel: ");             // Text
    lcd.setCursor(6,3);                       // Cursor auf Position
    lcd.print(bmp.readSealevelPressure());    // Wertausgabe Pa
    lcd.print(" Pa ");                        // Text   
    delay (3000);                             // Wartezeit
}

// **********************************************************************
void loop() {

                                            // Aufruf von Unterprogrammen
    Titel();
    Ausgabe_Temperatur();
    Ausgabe_Luftdruck();
    Ausgabe_Hoehe_ueber_Meersespiegel();
    Ausgabe_Luftdruck_Meersespiegel();
}       
  

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz