IMU Sensors - Neurorobotics-Intelligent-Assistance/FAQ GitHub Wiki
IMU (BNO055) Problems
Datasheet BNO055
Click here to go to: Datasheet
I'm sometimes losing data over I2C, what can I do about this?
Depending on your system setup, you might need to adjust the pullups on the SCL and SDA lines to be a bit stronger. The BNO055 has very tight timing requirements on the I2C bus, requiring short setup and rise times on the signals. By default the breakout board has 10K pullups, which might be too weak on some setups. You can shorten the rise times and extend the setup time on the I2C lines with 'stronger' pullups. To do this simply add a 3.3K pullup on SCL and a 2.2K pullup on the SDA line with a breadboard or perma-proto board, which will override to weaker 10K pullups that are populated by default. See the image below for details:
Wiring for microcontrollers
You can easily wire this breakout to any microcontroller, we'll be using an Arduino. For another kind of microcontroller, just make sure it has I2C capability, then port the code - it's pretty simple stuff!- Connect the assembled BNO055 breakout to an Arduino Uno, follow the wiring diagram.
- Connect Vin (red wire, positive) to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
- Connect GND (black wire, negative) to common power/data ground
- Connect the SCL (blue wire) pin to the I2C clock SCL pin on your Arduino.
- Connect the SDA (yellow wire) pin to the I2C data SDA pin on your Arduino.
Data Output
The BNO055 can output the following sensor data:
- Absolute Orientation (Euler Vector, 100Hz): Three axis orientation data based on a 360° sphere
- Absolute Orientation (Quaterion, 100Hz): Four point quaternion output for more accurate data manipulation
- Angular Velocity Vector (100Hz): Three axis of 'rotation speed' in rad/s
- Acceleration Vector (100Hz): Three axis of acceleration (gravity + linear motion) in m/s^2
- Magnetic Field Strength Vector (20Hz): Three axis of magnetic field sensing in micro Tesla (uT)
- Linear Acceleration Vector (100Hz): Three axis of linear acceleration data (acceleration minus gravity) in m/s^2
- Gravity Vector (100Hz): Three axis of gravitational acceleration (minus any movement) in m/s^2
- Temperature (1Hz): Ambient temperature in degrees celsius