Sensor data type
Double precision floating point version and Integer version are two states regarding compensation functions for temperature and pressure.
The 24 bit pressure/temperature raw data is split and stored in three consecutive registers from 0x04 to 0x06 and 0x07 to 0x09 respectively.
From API side, static double compensate_temperature and static int64_t compensate_temperature are used to compensate the raw temperature data and return the compensated temperature data in integer data type.
Pressure sensor drift
Used to represent errors in measured values. Basically, two drifts will appear on the sensor: one is solder drifts, and the other is long term drift.
Pressure sensor TCO (Offset temperature coefficient)
The offset temperature coefficient is the change in the pressure signal introduced by a change of the temperature. The smaller for TCO value, the smaller the dependence on temperature. Two conditions need to be considered for offset temperature coefficient from pressure 700-1100hPa.
Pressure/temperature OSR (Oversampling)
Oversampling is the process of sampling a signal at a sampling frequency significantly higher than the Nyquist rate . The rate of oversampling can be 1, 2, 4, 8, 16, and 32. Increasing the value of oversampling, then will get longer testing time, lower ODR, lower noise and larger power consumption.
The default value for oversampling setting is 0x02 in register 0x1C for pressure and temperature measurement, bit 2..0 is for pressure measurement and bit 5..3 is for temperature measurement.
In API, using int8_t set_forced_mode_with_osr and int8_t set_normal_mode to configure the oversampling values.
The table below shows the recommended setting of oversampling.
Signal Filter for pressure/temperature
This is a sliding filter which is aim to reduce the noise from the received signal. The filter coefficient can be set to 0 (bypass mode), 1, 3, 7, 15, 31, 63, and 127.
In addition, it suppresses the disturbance in the output data without causing additional interface traffic and processor work load. The output of a next measurement step is filter using the following formula.
The “CONFIG” Register 0x1F control the IIR filter coefficients view from bit 3...1. The default value for “CONFIG” is 0x00.
3 bytes sensor time is split and stored in three consecutive registers which are 0x0C, 0x0D and 0x0E. Each register contain 8 bit sensor time data.
This feature is used to represent how much accuracy can be achieved within the certain pressure range. Two criteria as shown below
This is a 512 bytes FIFO (first-in-first-out) data buffer with feature used to enable data collecting in the FIFO. The register “FIFO_CONFIG_1” register contains the FIFO frame content configuration from bit 4…0. The default value for “FIFO_CONFIG_1” is 0x02.
Configuring and reading FIFO data from API using the function int8_t configure_and_get_fifo_data.
Allow to signal certain events to the host processor. Different event can be mapped to the interrupt pin, which all are processed with a logical OR.
The available interrupts are listed below and can be read in the “INT_STATUS” register”
Bit 0, 1, and 3 are used to represent the interrupt status and is cleared after reading in register.
The function static int8_t get_int_status can be used to get the interrupt status from the sensor in API.
Interrupt configuration can be set in the “INT_CTRL” register in 0x19. Bit 0, 1, 2, 3, 4 and 6 are used. The function static void fill_fifo_int_ctrl in API used to fill the FIFO interrupt control settings.
More BMP388 sensor information can check from the following website https://www.bosch-sensortec.com/bst/products/all_products/bmp388 .
... View more
BME680 is as combined digital gas, humidity, pressure and temperature sensor based on proven sensing principles.
API Link: https://github.com/BoschSensortec/BME680_driver
BSEC Link: https://www.bosch-sensortec.com/bst/products/all_products/bme680
Sensor data type
Gas sensor data is gas sensor resistance.
Humidity sensor data is in type of percentage (10%-90%, in 0°C-65°C).
Pressure sensor data is in type of hPa (300hPa-1100hPa, in 0°C-65°C).
Temperature sensor data is in type of °C (-40°C-85°C).
Use function bme680_get_sensor_data in API to get sensor data.
Use BSEC software Library, put gas/humidity/pressure/temperature sensor data as inputs into BSEC, you can also get IAQ(Indoor Air Quality) from outputs.
The BME680 measurement period consists of a temperature, pressure and humidity measurement with selectable oversampling. Moreover, it contains a heating phase for the gas sensor hot plate as well as a measurement of the gas sensor resistance.
After the measurement period, the pressure and temperature data can be passed through an optional IIR filter, which removes short-term fluctuations in pressure (e.g. caused by slamming a door). For humidity and gas, such a filter is not needed and has not been implemented
Gas resistance sensitivity
The sensitivity of BME680 to certain target gas is gas_resistance/gas_resistance_base. The sensitivity equaling to 1 means BME680 is not sensitivity in this concentration of the target gas, while the less value in sensitivity, the more sensitive BME680 to the target gas.
There is new data interrupt in BME680, below table shows how to enable this feature .
Pressure sensor drift
Used to represent errors in measured values. Basically, two drifts will appear on the pressure part in BME680: one is solder drifts and the other is long term drift.
Pressure sensor offset temperature coefficient (TCO)
TCO is the change in the pressure signal introduced by a change of the temperature.
For pressure sensor, TCO is ±1.5 Pa/K, equiv. to ±12.6 cm at 1 °C temperature change, which means pressure sensor data will change within ±1.5 Pa with 1 °C temperature change at constant pressure.
Accuracy of temperature/pressure/humidity
This feature is used to represent how much accuracy can be achieved on certain condition.
±3 % relative humidity, on condition: 20-80 %r.H., 25°C, including hysteresis
0.12 hPa, on condition: 25°C-40°C, 700-1100hPa, at constat humidity
±1°C, on condition: 25°C
±0.5°C, on condition: 0…65°C
OSR / Oversampling of humidity/pressure/temperature
There are several oversampling options for different sensors. It is possible to reduce noise, but the power consumption will be higher.
Humidity sensor OSR
As for how to set osrs_h<2:0>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
Pressure sensor OSR
As for how to set osrs_p<4:2>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
Temperature sensor OSR
As for how to set osrs_t<7:5>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
You can use function bme680_set_sensor_settings in API to set OSR of any sensor.
The environmental pressure is subject to many short-term changes, caused e.g. by slamming of a door or window, or wind blowing into the sensor. To suppress these disturbances in the output data without causing additional interface traffic and processor work load, the BME680 features an internal IIR filter. Via setting filter coefficient(c), it effectively reduces the bandwidth of the temperature and pressure output signals and increases the resolution of the pressure and temperature output data to 20 bit(Pressure and Temperature OSR must be non-zero). When c is bigger, response time will be longer.
As for how to set filter<4:2>, b000->filter coefficient 0, b001-> filter coefficient 1, b010-> filter coefficient 3, b011-> filter coefficient 7, b100-> filter coefficient 15, b101-> filter coefficient 31, b110-> filter coefficient 63, b111-> filter coefficient 127.
You can use function bme680_set_sensor_settings in API to set filter.
... View more
Hi Marko Njirjak,
The magnetic sensor value is too small especial on X and Y axis. Please check:
Use our BMX160 API or not.
Cannot directly use the magnetic sensor register value in BMX160, need API do compensation.
Mag data on Forced mode ? ODR
Please provide the A/G/M logging data
... View more