Funktionen der Library MyBMP280


MyBMP280 MyBMP280(byte i2cAdd)

Funktion: Erzeugt eine neue Instanz mit der I2C-Schnittstelle

Parameter: i2cAdd: I2C-Adresse des Sensors


MyBMP280 MyBMP280(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)


bool isReady(void)

Funktion: Überprüft, ob der Sensor ansprechbar ist, indem die Chip-Identifikationsnummer (0x58) 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()

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
  • 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

bmp.setMode(BMP280_FORCED_MODE);

bmp.setPressOversampling(BMP280_P_OVERSAMPLING_x4);

//oder setzen eines Parametersatzes

bmp.setWeatherMonitoring();

bmp.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 Temperatur und Druck (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 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: BMP280_NORMAL_MODE

                            BMP280_FORCED_MODE -> BMP280_SLEEP MODUS

                            BMP280_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 setTempOversampling(byte osrs_t)

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

Parameter: osrs_t: BMP280_T_OVERSAMPLING_x0  : Temperaturmessung ausgeschaltet      

                             BMP280_T_OVERSAMPLING_x1   : Auflösung 16 Bit

  •                              BMP280_T_OVERSAMPLING_x2   : Auflösung 17 Bit

  •                              BMP280_T_OVERSAMPLING_x4   : Auflösung 18 Bit

  •                              BMP280_T_OVERSAMPLING_x8   : Auflösung 19 Bit

  •                              BMP280_T_OVERSAMPLING_x16 : Auflösung 20 Bit

  • Rückgabe: keine

    Bemerkung: 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: BMP280_P_OVERSAMPLING_x0   : Druckmessung ausgeschaltet

                                  BMP280_P_OVERSAMPLING_x1   : Auflösung 16 Bit -> Ultra geringe Stromaufn.

  •                               BMP280_P_OVERSAMPLING_x2   : Auflösung 17 Bit -> geringe Stromaufnahme

  •                               BMP280_P_OVERSAMPLING_x4   : Auflösung 18 Bit -> Standardauflösung

  •                               BMP280_P_OVERSAMPLING_x8   : Auflösung 19 Bit -> Hohe Auflösung

  •                               BMP280_P_OVERSAMPLING_x16 :  Auflösung 20 Bit -> Ultra hohe Auflösung

  • 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 durchführt werden:

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

  •                           BMP280_STANDBY_TIME_62p5  : Standby Zeit = 62,5 ms

  •                           BMP280_STANDBY_TIME_125    : Standby Zeit = 125 ms

  •                           BMP280_STANDBY_TIME_250    : Standby Zeit = 250 ms

  •                           BMP280_STANDBY_TIME_500    : Standby Zeit = 500 ms

  •                           BMP280_STANDBY_TIME_1000  : Standby Zeit = 1000 ms

  •                           BMP280_STANDBY_TIME_2000  : Standby Zeit = 2000 ms

  •                           BMP280_STANDBY_TIME_4000  : Standby Zeit = 4000 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: BMP280_FILTER_COEFF_0    : 1 Abtastung (Filter ausgeschaltet)

                               BMP280_FILTER_COEFF_2    : 2 Abtastungen

                               BMP280_FILTER_COEFF_4    : 5 Abtastungen

                               BMP280_FILTER_COEFF_8    : 11 Abtastungen

                               BMP280_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
    • FILTER_COEFF_0
    • STANDBY_TIME_nnnn (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 setHandheldLowPower(void)

    Funktion: Setzen des Parametersatzes für "Handheld Low Power"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Folgende Parameter werden gesetzt:

    • NORMAL_MODE
    • P_OVERSAMPLING_x16
    • T_OVERSAMPLING_X2
    • FILTER_COEFF_4
    • STANDBY_TIME_62p5

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


    void setHandheldDynamic(void)

    Funktion: Setzen des Parametersatzes für "Handheld Dynamic"

    Parameter: keine

    Rückgabe: keine

    Bemerkung: Folgende Parameter werden gesetzt:

    • NORMAL_MODE
    • P_OVERSAMPLING_x4
    • T_OVERSAMPLING_x1
    • FILTER_COEFF_16
    • STANDBY_TIME_0p5

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


    void reset(void)

    Funktion: Durchführung des Software-Reset. Der Sensor führt die komplette Prozedur des "power-on-reset" aus.

    Parameter: keine

    Rückgabe: keine


    Zur Library Luftdrucksensor BMP280