Funktionen der Library MyBME280


MyBME280 MyBME280(byte i2cAdd)

Funktion: Erzeugt eine neue Instanz mit der I2C-Schnittstelle

Parameter: i2cAdd: I2C-Adresse des Sensors


MyBME280 MyBME280(byte cs, byte interface)

Funktion: Erzeugt eine neue Instanz mit der Hardware-SPI-Schnittstelle (Uno-Pins: 11-13)

Parameter: cs: Chipselect-Pin (beim Uno: 1 <= cs <= 10)

                 interface: BMP280_SPI (nur zur Unterscheidung zur Instanz mit I2C-Schnittstelle)

Bemerkung: Anstelle über die I2C-Schnittstelle kann der Sensor von der Library auch über die (Hardware-)SPI-Schnittstelle angesprochen werden. Dabei wird bei der Erstellung einer neuen Instanz - anstelle der I2C-Adresse - der gewünschte CS-Pin (Chipselect-Pin) übergeben, sowie eine Variable namens BME280_SPI. Diese Variable dient nur dafür, dass die Library erkennt, dass mit der ersten Variablen ein Pin übergeben wird und nicht eine I2C-Adresse. Nicht für Attiny realisiert!

Beispiel:

#include <MyBME280.h>

MyBME280 BME(10, BME280_SPI);


bool isReady(void)

Funktion: Überprüft, ob der Sensor ansprechbar ist, indem die Chip-Identifikationsnummer (0x60) abgefragt wird

Parameter: keine

Rückgabe:  TRUE, wenn Sensor ansprechbar ist, sonst FALSE

Bemerkung: Die Funktion prüft nur, ob in einem I2C-Bus der Bauteil ansprechbar bzw. vorhanden ist. Es wird vorausgesetzt, dass der I2C-Bus technisch prinzipiell funktioniert (keine offenen Busleitungen, Pullup-Widerstände richtig, kein Kurzschluss oder Masseschluss, etc.).


void init(void)

Funktion: Auslesen der Kalibrierungskoeffizienten aus dem Sensor und Setzen der in der Library voreingestellten Standardparameter oder der vor der init()-Funktion gesetzten Parameter oder Parametersätze

Parameter: keine

Rückgabe: keine

Bemerkung: Wenn vor der init()-Funktion keine Parameter oder Parametersätze gesetzt wurden, werden folgende Standardparameter beim Aufruf der Funktion gesetzt:

  • NORMAL_MODE
  • P_OVERSAMPLING_x8
  • T_OVERSAMPLING_x2
  • H_OVERSAMPLING_x8
  • STANDBY_TIME_1000
  • FILTER_COEFF_4

Bemerkung: Vor der init()_Funktion können einzelne Parameter geändert oder ein neuer Parametersatz gesetzt werden!

Beispiel:

//Aendern einzelner Parameter

BME.setMode(BME280_FORCED_MODE);

BME.setPressOversampling(BME280_P_OVERSAMPLING_x4);

//oder setzen eines Parametersatzes

BME.setWeatherMonitoring();

BME.init();


void startSingleMeas(void)

Funktion: Startet eine Einzelmessung und wechselt dann in den Sleep-Modus

Parameter: keine

Rückgabe: keine


float readTemp(void)

Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten die Temperatur

Parameter: keine

Rückgabe: Umgebungstemperatur [°C]

Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!


float readPress(void)

Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten Druck und Temperatur (für die Berechnung des Drucks wird auch die Temperatur benötigt)

Parameter: keine

Rückgabe: Luftdruck [hPa] (Hektopascal) bzw. [mbar] (Millibar)

Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!


float readHumidity(void)

Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus und berechnet mit Hilfe der Kalibrierungskoeffizienten Luftfeuchte und Temperatur (für die Berechnung der Luftfeuchte wird auch die Temperatur benötigt)

Parameter: keine

Rückgabe: Luftfeuchte [%]

Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!


float readReducedPress(int hoehe)

Funktion: Liest die gemessenen Rohwerte aus dem Sensor aus, berechnet mit Hilfe der Kalibrierungskoeffizienten Temperatur und Druck (für die Berechnung des Drucks wird auch die Temperaturberechnung benötigt) und berechnet anschließend daraus den - auf Meereshöhe - reduzierten Luftdruck

Parameter: hoehe: Höhe des Standortes über Meeresspiegel [m]

Rückgabe: Reduzierter Luftdruck [hPa] (Hektopascal) bzw. [mbar] (Millibar)

Achtung: Beim Aufruf der Funktion wird keine neue Messung durchgeführt, es werden nur die Rohwerte aus dem Speicherbereich des Sensors neu ausgelesen. Messungen selbst werden im Normal-Modus im Hintergrund zyklisch in Abhängigkeit der Einstellung der Parameter und im Forced-Modus bei Aufruf der Funktion startSingleMeas() ausgeführt!


void setMode(byte mode)

Funktion: Setzen des Betriebsmodus des Sensors

Parameter: mode: BME280_NORMAL_MODE

                            BME280_FORCED_MODE -> SLEEP MODUS

                            BME280_SLEEP_MODE

Rückgabe: keine

Bemerkung:

Wird der Sensor in den Forced-Modus gesetzt, vebleibt er für genau eine Messung in diesem Modus und wechselt dann in den Sleep-Modus!

Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


void setPressOversampling(byte osrs_p)

Funktion: Setzen des Wertes für Druck-Oversampling oder ausschalten der Druckmessung

Parameter: osrs_p: BME280_P_OVERSAMPLING_x0       Druckmessung ausgeschaltet

                              BME280_P_OVERSAMPLING_x1       Auflösung 16 Bit

  •                               BME280_P_OVERSAMPLING_x2       Auflösung 17 Bit

  •                               BME280_P_OVERSAMPLING_x4       Auflösung 18 Bit

  •                               BME280_P_OVERSAMPLING_x8       Auflösung 19 Bit

  •                               BME280_P_OVERSAMPLING_x16     Auflösung 20 Bit

  • Rückgabe: keine

    Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


    void setTempOversampling(byte osrs_t)

    Funktion: Setzen des Wertes für Temperatur-Oversampling oder ausschalten der Temperaturmessung

    Parameter: osrs_t: BME280_T_OVERSAMPLING_x0      Temperaturmessung ausgeschaltet      

                                 BME280_T_OVERSAMPLING_x1       Auflösung 16 Bit

  •                              BME280_T_OVERSAMPLING_x2       Auflösung 17 Bit

  •                              BME280_T_OVERSAMPLING_x4       Auflösung 18 Bit

  •                              BME280_T_OVERSAMPLING_x8       Auflösung 19 Bit

  •                              BME280_T_OVERSAMPLING_x16     Auflösung 20 Bit

  • Rückgabe: keine

    Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


    void setHumidityOversampling(byte osrs_h)

    Funktion: Setzen des Wertes für Feuchte-Oversampling oder ausschalten der Feuchtemessung

    Parameter: osrs_h: BME280_H_OVERSAMPLING_x0       Feuchtemessung ausgeschaltet

                                  BME280_H_OVERSAMPLING_x1       Auflösung 16 Bit

  •                               BME280_H_OVERSAMPLING_x2       Auflösung 17 Bit

  •                               BME280_H_OVERSAMPLING_x4       Auflösung 18 Bit

  •                               BME280_H_OVERSAMPLING_x8       Auflösung 19 Bit

  •                               BME280_H_OVERSAMPLING_x16     Auflösung 20 Bit

  • Rückgabe: keine

    Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


    void setStandbyTime(byte t_sb)

    Funktion: Setzen des Wertes für die Standby-Zeit. Das ist jene Zeit, wo im Normal-Modus der Sensor nach einer Messung nicht aktiv ist, also keine Messungen durchgeführt werden:

    Parameter: t_sb: BME280_STANDBY_TIME_0p5       Standby Zeit = 0,5 ms

                              BME280_STANDBY_TIME_10         Standby Zeit = 10 ms

  •                           BME280_STANDBY_TIME_20         Standby Zeit = 20 ms

  •                           BME280_STANDBY_TIME_62p5     Standby Zeit = 62,5 ms

  •                           BME280_STANDBY_TIME_125       Standby Zeit = 125 ms

  •                           BME280_STANDBY_TIME_250       Standby Zeit = 250 ms

  •                           BME280_STANDBY_TIME_500       Standby Zeit = 500 ms

  •                           BME280_STANDBY_TIME_1000     Standby Zeit = 1000 ms

  • Rückgabe: keine

  • Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


    void setFilterCoeff(byte filter)

    Funktion: Setzen des Filter-Koeffizienten. Gibt an, wie viele Abtastungen (samples) erforderlich sind, bis - bei einer sprunghaften Änderung des Messwertes - die Datenausgabe mindestens 75 % der Änderung gefolgt ist:

    Parameter: filter: BME280_FILTER_COEFF_0         1 Abtastung (Filter ausgeschaltet)

                               BME280_FILTER_COEFF_2         2 Abtastungen

                               BME280_FILTER_COEFF_4         5 Abtastungen

                               BME280_FILTER_COEFF_8         11 Abtastungen

                               BME280_FILTER_COEFF_16       22 Abtastungen

    Rückgabe: keine

    Bemerkung: Das Setzen von einzelnen Parametern muss vor der init()-Funktion erfolgen!


    void setWeatherMonitoring(void)

    Funktion: Setzen des Parametersatzes für "Weather Monitoring"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Wird ein Parametersatz gesetzt, muss danach immer die init()-Funktion ausgeführt werden!

    Folgende Parameter werden gesetzt:

    • FORCED_MODE
    • P_OVERSAMPLING_x1
    • T_OVERSAMPLING_x1
    • H_OVERSAMPLING_x1
    • FILTER_COEFF_0
    • STANDBY_TIME_xxxx (Standby time im Forced Mode ohne Bedeutung)

    Bemerkung:

    Bei Aufruf der Funktion und Übernahme der Parameter mit init() im Forced-Modus, führt der Sensor eine Druck- und Temperatur-Messung aus und speichert die Ergebnisse als Rohwerte. Danach befindet sich der Sensor im Sleep-Modus. Im Anwenderprogramm muss dann mit der Funktion "startSingleMeas()" der Forced-Modus z.B. einmal pro Minute aktiviert werden, wobei dann wiederum jeweils genau eine Messung durchgeführt wird. Nach jeder Messung geht der Sensor wieder in den Sleep-Modus zurück.

    Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!


    void setHumiditySensing(void)

    Funktion: Setzen des Parametersatzes für "Humidity sensing"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Folgende Parameter werden gesetzt:

    • FORCED_MODE
    • P_OVERSAMPLING_x0 (Luftdruckmessung ausgeschaltet)
    • T_OVERSAMPLING_x1
    • H_OVERSAMPLING_x1
    • FILTER_COEFF_0
    • STANDBY_TIME_xxxx (Standby time im Forced Mode ohne Bedeutung)

    Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!


    void setIndoorNavigation(void)

    Funktion: Setzen des Parametersatzes für "Indoor Navigation"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Folgende Parameter werden gesetzt:

    • NORMAL_MODE
    • P_OVERSAMPLING_x16
    • T_OVERSAMPLING_x2
    • H_OVERSAMPLING_x1
    • FILTER_COEFF_16
    • STANDBY_TIME_0p5

    Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!


    void setGaming(void)

    Funktion: Setzen des Parametersatzes für "Gaming"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Folgende Parameter werden gesetzt:

    • NORMAL_MODE
    • P_OVERSAMPLING_x4
    • T_OVERSAMPLING_x1
    • H_OVERSAMPLING_x0
    • FILTER_COEFF_16
    • STANDBY_TIME_0p5

    Bemerkung: Das Setzen eines Parametersatzes muss vor der init()-Funktion erfolgen!


    byte readControlReg(void)

    Funktion: Liest den Wert des Kontrollregister des Sensors (Adresse: 0xF4) aus

    Parameter: keine

    Rückgabe: Inhalt des Kontrollregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)


    byte readConfigReg(void)

    Funktion: Liest den Wert des Konfigurationsregisters des Sensors (Adresse: 0xF5) aus

    Parameter: keine

    Rückgabe: Inhalt des Konfigurationsregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)


    byte readHumidityControlReg(void)

    Funktion: Liest den Wert des Humidity-Kontrollregisters des Sensors (Adresse: 0xF2) aus

    Parameter: keine

    Rückgabe: Inhalt des Humidity-Kontrollregisters (die Bedeutung der einzelnen Bits sind hier zu sehen oder dem Sensor-Datenblatt zu entnehmen)



    Zur Library Luftdrucksensor BME280