08-11-2021 11:40 AM - edited 08-11-2021 11:47 AM
Hello,
we are enountering problems with BMP390 sensor during a fast movements.
When sensor is stationary, drift is relatively small - just meter or so during a few minutes.
But when we are doing fast movements up and down periodically measurement has incremental offset with each "down" movement.
Up and Down movement is same, in range for around +/- 0.5 meter. When we are moving with PCB by hand, not touching the sensor or anything from the electronics, after lets say 20 up and down movements we are + 10 meters in offset. This offset will remain indefinitively.
Interestingly we have BME280 in our other device and this offset does not happen. We tried several batches of BMP390 and the problem is happening with all of them.
Can you let me know what could be wrong? We tried all possible oversampling and filter settings with no improvement. There is absolutely no light that could interfere with sensor.
Also when sensor is cold and we will start device, it seems that temperature compensation does not work properly, because it can drift by 30 meters once it stabilizes within 2 minutes.
08-11-2021 02:02 PM
I found very interesting thing. Same code executed at PC will result in a different (correct) values. While values executed on ARM MCU is giving wrong values.
Wow. So this is reason for imprecision. I believe when I will find reason for this, it will work correctly.
Problem is 64bit math. It seems double nor int64 is working correctly.
08-13-2021 03:48 AM
Hello wesleyg,
If your host platform supports double precision operation, open this macro definition BMP3_DOUBLE_PRECISION_COMPENSATION and use the corresponding double type for pressure. Otherwise, uint64_t will be used for pressure type.
#ifdef BMP3_DOUBLE_PRECISION_COMPENSATION
/*!
* @brief bmp3 sensor structure which comprises of temperature and pressure
* data.
*/
struct bmp3_data
{
/*! Compensated temperature */
double temperature;
/*! Compensated pressure */
double pressure;
};
#else
/*!
* @brief bmp3 sensor structure which comprises of temperature and pressure
* data.
*/
struct bmp3_data
{
/*! Compensated temperature */
int64_t temperature;
/*! Compensated pressure */
uint64_t pressure;
};
#endif
03-12-2024 02:44 PM
03-14-2024 03:37 PM
Hello,
I am currently using your BMP390 sensor.
In the datasheet the temperature measurement accuracy with this sensor is ±1.5°C (0 to 60°C), the temperature range of my application is -15°C to 60°C, can you please give me more info on the temperature accuracy from 0 to -15°C? is it the same or not and thank you in advance.