Hardware : Gravity: BNO055+BMP280 intelligent 10DOF AHRS from DFRobot & STM32F407VGT Discovery
Method: Reading Euler angles using I2C
Problem: There are spikes in reading data.
1- Tried with another IMU (L3G4200D and LSM303DLHC) and I2C working perfectly fine. This means STM32F407VGT Discovery is OK.
2- Tried other fusion outputs (Quaternion and Linear Acc) and reading spikes. So the problem is not about Euler registers.
3- There is no vibration at all just using my hand to rotate very slowly sometimes faster. Speed doesn't change the results. I have always reading spikes.
1- Excel table for my reading logs. (Obtained from STM Studio)
2- 1 PNG images from STM Studio that show spikes.
3- 1 PNG image from Excel table where spike can clearly observable.
1- Is it a problem that occurs in any BNO055 or my BNO055 is damaged?
2- What is the probable cause and how to avoid it?
3- My goal is to use this IMU in Quadcopter. Any advice about using another model? I am not good with filters like Kalman so I have to have an IMU that calculates angles for me.
This is my second post. The first one never answered. Please I need some answers.
Solved! Go to Solution.
It seemed this question was described in https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-Jumps-Spikes-in-readings/m-p/2126...
Yes, sorry for copying the post. When there was no answer I want to declare the problem more clearly. Waiting for your solutions. Thank you.
Email from Emer
I have added a zip file. In this file, there is 1 raw txt log and 1 excel file for the log.
You can see 3 spikes in PNG files. They have named with data name and timestamp so you can look from excel.
spike1_euler(2)_t_7481ms = First spike, in bno055_euler with timestamp 7481 ms.
So go to log.xlsx and see row number 3949. In the time of 7483.93'th ms bno055_euler, jump 0 to -16 degree.After that, it comes back to -0.25 degree.
To see better I only have Euler data in the graph. But all measurements are in the log files.
The I2C reading time (elapsed time) labeled with elapsed_time (in ms).
I also added my code snipped for main init and while loop. And I2C related functions.
My hardware is STM32F407VGT Discovery. It is a very basic developer board.
I use STM32CubeIDE to program my board.
I have tested with the same pins, same code (Of course different I2C address) with another IMU and I have 1-2 ms elapsed time max.
I am using fast mode (400kHz). I have tested with normal mode (100kHz) but the result was worse as expected.
thanks for your update of the data log and better description of your issue.
I have tried to reproduce your issue with one BNO055 in my hand, but I cant reproduce.
I have checked your code and data. It appears to me the problem comes from the setup of I2C. Can you please capture the oscillogram with an oscilloscope and check and then we can have a look at the what really happened about the spike.