MMR Barometer Sensor ODR mismatch

Board Information
Hardware revision [0.4]
Firmware revision [1.5.1]
Model number [5]

Description
When streaming the Pressure data, the ODR is a constant factor less (20%) according to Bosch documentation.
Tested with multiple configurations,
e.g. barometer.Configure(MbientLab.MetaWear.Sensor.BarometerBosch.Oversampling.High, MbientLab.MetaWear.Sensor.BarometerBosch.IirFilerCoeff._8, 0.5f); should have an ODR of 50hz, instead it is 40hz.
Same is true with a different setting. e.g. barometer.Configure(MbientLab.MetaWear.Sensor.BarometerBosch.Oversampling.Standard
MbientLab.MetaWear.Sensor.BarometerBosch.IirFilerCoeff._16, 0.5f); should have an ODR of 83,33hz, instead it is 66,66hz.

Verified in different ways:
a) Calculating the ODR by counting the samples within timeframe measured of starting & stopped sensor.
b) Calculating the ODR using highest sample count from sensor within timeframe measured of starting & stopped sensor. (varies only minimal from a) as some samples are dropped.
c) Comparing timeseries graph with other sensors. While.e.g. the accelerometer ODR is streamed as given in the config, It also matches with e.g. the android accelerometer. On the other hand the pressure timeseries is off, unless using the adjusted ODR.

Snippet that shows dataprocessor/routing

await barometer.Pressure.AddRouteAsync(source =>
source.Account(AccountType.Count)
.Stream(data => {
//... Calculate Timestamp
var ts = 25 * data.Extra(); //40Hz == 25ms
})
);

//BTLE config is set for high freq. streaming:
settings.EditBleConnParams(maxConnInterval: 7.5f);

Host Information
Android 10
SDK version
C# SDK 1.2.0

While this is not a big problem as it easy to workaround and works for my purpose, i'm still curious what the root-cause of this issue is. Does anybody else have investigated the same?

Comments

  • edited January 2021

    The barometer from bosch doesn't have exact ODR settings like the accelerometer and gyro have.

    You select a mode and there is an approximate frequency you will get the data at in this mode.

    You can see the datasheet:
    https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp280-ds001.pdf

    In our APIs, we do the best we can to match the mode to the closest ODR possible setting.

  • Hi Laura,

    thanks for the fast feedback. This doc is what i'm referring to - Page 19. Section 3.8.2 Table 14. Even though these are only "expected" or approximated rates, which is fine having small fluctuations, it is still strange that my ODR is constantly 20% below to what is stated in the table. With that in mind it's pretty stable, but not as expected/documented.

  • You can look through the APis (its all open source) to see what settings are actually chosen.

  • Already done and as you can see in my initial post, i chose custom settings following the settings proposed for the use-cases in the bosch document...

Sign In or Register to comment.