150 lines
5.6 KiB
Markdown
150 lines
5.6 KiB
Markdown
# BME280_math module
|
||
| Since | Origin / Contributor | Maintainer | Source |
|
||
| :----- | :-------------------- | :---------- | :------ |
|
||
| 2016-02-21 | [vsky279](https://github.com/vsky279) | [vsky279](https://github.com/vsky279) | [bme280_math.c](../../app/modules/bme280_math.c)|
|
||
|
||
This module provides calculation routines for [BME280/BMP280 temperature/air presssure/humidity sensors](http://www.bosch-sensortec.com/bst/products/all_products/bme280) (Bosch Sensortec). Communication with the sensor is ensured by Lua code through I2C or SPI interface. Read registers are passed to the module to calculate measured values.
|
||
|
||
See [bme280](../lua-modules/bme280.md) Lua module for examples.
|
||
|
||
## bme280_math.altitude()
|
||
|
||
For given air pressure (called QFE in aviation - see [wiki QNH article](https://en.wikipedia.org/wiki/QNH)) and sea level air pressure returns the altitude in meters, i.e. altimeter function.
|
||
|
||
#### Syntax
|
||
`bme280_math.altitude([self], P, QNH)`
|
||
|
||
#### Parameters
|
||
- (optional) `self` userdata or table structure so that the function can be directly called as object method, parameter is ignored in the calculation
|
||
- `P` measured pressure
|
||
- `QNH` current sea level pressure
|
||
|
||
#### Returns
|
||
altitude in meters of measurement point
|
||
|
||
## bme280_math.dewpoint()
|
||
|
||
For given temperature and relative humidity returns the dew point in celsius.
|
||
|
||
#### Syntax
|
||
`bme280_math.dewpoint([self], H, T)`
|
||
|
||
#### Parameters
|
||
- (optional) `self` userdata or table structure so that the function can be directly called as object method, parameter is ignored in the calculation
|
||
- `H` relative humidity in percent (100 means 100%)
|
||
- `T` temperate in celsius
|
||
|
||
#### Returns
|
||
dew point in celsisus
|
||
|
||
## bme280_math.qfe2qnh()
|
||
|
||
For given altitude converts the air pressure to sea level air pressure ([QNH](https://en.wikipedia.org/wiki/QNH)).
|
||
|
||
#### Syntax
|
||
`bme280_math.qfe2qnh([self], P, altitude)`
|
||
|
||
#### Parameters
|
||
- (optional) `self` userdata or table structure so that the function can be directly called as object method, parameter is ignored in the calculation
|
||
- `P` measured pressure
|
||
- `altitude` altitude in meters of measurement point
|
||
|
||
#### Returns
|
||
sea level pressure
|
||
|
||
|
||
## bme280_math.read()
|
||
|
||
Reads the sensor and returns the temperature, the air pressure, the air relative humidity and see level air pressure when `altitude` is specified.
|
||
|
||
#### Syntax
|
||
`bme280_math.read(bme280sensor, registers, [altitude])`
|
||
|
||
#### Parameters
|
||
- `bme280sensor` - BME280 sensor user data returned by `bme280_math.setup()`
|
||
- `registers` - string of 8 bytes (chars) registers read from `BME280_REGISTER_PRESS`
|
||
- (optional) `altitude`- altitude in meters of measurement point. If provided also the air pressure converted to sea level air pressure is returned.
|
||
|
||
#### Returns
|
||
- `T` temperature in celsius
|
||
- `P` air pressure in hectopascals
|
||
- `H` relative humidity in percent
|
||
- (optional) `QNH` air pressure in hectopascals
|
||
|
||
Returns `nil` if the conversion is not successful.
|
||
|
||
## bme280_math.setup()
|
||
|
||
Initializes module. Initialization is mandatory before read values.
|
||
|
||
#### Syntax
|
||
|
||
`bme280_math.setup(registers, [temp_oss, press_oss, humi_oss, power_mode, inactive_duration, IIR_filter])`
|
||
|
||
#### Parameters
|
||
- registers - String of configuration registers read from the BME280 sensor. It consists of 6 bytes (chars) of `BME280_REGISTER_DIG_T`, 18 bytes (chars) `BME280_REGISTER_DIG_P` and optional (not present for BMP280 sensor) 8 bytes (chars) of `BME280_REGISTER_DIG_H1` (1 byte) and `BME280_REGISTER_DIG_H2` (7 bytes)
|
||
- (optional) `temp_oss` - Controls oversampling of temperature data. Default oversampling is 16x.
|
||
- (optional) `press_oss` - Controls oversampling of pressure data. Default oversampling is 16x.
|
||
- (optional) `humi_oss` - Controls oversampling of humidity data. Default oversampling is 16x
|
||
- (optional) `sensor_mode` - Controls the sensor mode of the device. Default sensor more is normal.
|
||
- (optional) `inactive_duration` - Controls inactive duration in normal mode. Default inactive duration is 20ms.
|
||
- (optional) `IIR_filter` - Controls the time constant of the IIR filter. Default filter coefficient is 16.
|
||
|
||
|`temp_oss`, `press_oss`, `humi_oss`|Data oversampling|
|
||
|-----|-----------------|
|
||
|0|Skipped (output set to 0x80000)|
|
||
|1|oversampling ×1|
|
||
|2|oversampling ×2|
|
||
|3|oversampling ×4|
|
||
|4|oversampling ×8|
|
||
|**5**|**oversampling ×16**|
|
||
|
||
|`sensor_mode`|Sensor mode|
|
||
|-----|-----------------|
|
||
|0|Sleep mode|
|
||
|1 and 2|Forced mode|
|
||
|**3**|**Normal mode**|
|
||
|
||
Using forced mode is recommended for applications which require low sampling rate or hostbased synchronization. The sensor enters into sleep mode after a forced readout. Please refer to BME280 Final Datasheet for more details.
|
||
|
||
|`inactive_duration`|t standby (ms)|
|
||
|-----|-----------------|
|
||
|0|0.5|
|
||
|1|62.5|
|
||
|2|125|
|
||
|3|250|
|
||
|4|500|
|
||
|5|1000|
|
||
|6|10|
|
||
|**7**|**20**|
|
||
|
||
|`IIR_filter`|Filter coefficient |
|
||
|-----|-----------------|
|
||
|0|Filter off|
|
||
|1|2|
|
||
|2|4|
|
||
|3|8|
|
||
|**4**|**16**|
|
||
|
||
#### Returns
|
||
- `bme280sensor` user data (`nil` if initialization has failed)
|
||
- `config` 3 (2 for BME280) field table with configuration parameters to be written to registers `BME280_REGISTER_CONFIG`, `BME280_REGISTER_CONTROL_HUM`, `BME280_REGISTER_CONTROL` consecutively
|
||
|
||
#### Example
|
||
See [bme280](../lua-modules/bme280.md) Lua module documentation.
|
||
|
||
|
||
## BME280 (selected) registers
|
||
| name | address |
|
||
|-------|----------|
|
||
| BME280_REGISTER_CONTROL | 0xF4 |
|
||
| BME280_REGISTER_CONTROL_HUM | 0xF2 |
|
||
| BME280_REGISTER_CONFIG| 0xF5 |
|
||
| BME280_REGISTER_CHIPID | 0xD0 |
|
||
| BME280_REGISTER_DIG_T | 0x88 (0x88-0x8D (6)) |
|
||
| BME280_REGISTER_DIG_P | 0x8E (0x8E-0x9F (18)) |
|
||
| BME280_REGISTER_DIG_H1 | 0xA1 |
|
||
| BME280_REGISTER_DIG_H2 | 0xE1 (0xE1-0xE7 (7)) |
|
||
| BME280_REGISTER_PRESS | 0xF7 (0xF7-0xF9 (8)) |
|
||
|