BNO055 Nine Degree of Freedom IMU with built in Quaternion function #939
Replies: 8 comments
-
Posted at 2017-06-06 by @gfwilliams Nice, thanks! That looks like a really nice bit of kit - it's great to have all the sensor fusion stuff built in! |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-07 by ClearMemory041063 It's early in the learning curve on this one but so far I like it a lot. In mode 12 NDOF, you just slowly move the chip into the six positions of the cube and watch for the calibration register numbers to all equal 3, then you are calibrated. A lot easier than prior chips. Units can be degrees or radians per second square, F or C temperature from two sources, When you mount the chip in your model airplane or other project, it has the ability to reassign the axis designations and signs (to keep the coordinate system either left or right handed). Try Amazon for a lower price. |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-07 by ClearMemory041063 BMO055 Module progressPlace the attached BMO055.js in the modules directory of your WebIDE project. The test code follows
The output followsNote the all three values in syscal, showing that the chip is calibrated.
Not finished yet
Some linkshttps://www.bosch-sensortec.com/bst/products/all_products/bno055 Quaternions http://x-io.co.uk/res/doc/madgwick_internal_report.pdf http://diydrones.com/profiles/blogs/sebastian-oh-madgwicks-filter Attachments: |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-08 by ClearMemory041063 Removed |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-09 by ClearMemory041063 Solved the reset and external clock problemResetThe reset requires a delay after the command is issued.
Which changes the code in the test program.
External ClockThe call to change the clock souce also requires a delay which is addressed using a callback function
The code in the test program:
Attachments: |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-24 by ClearMemory041063 BNO055 Module Improvements BNO055 Module Improvements 24Jun2017The BNO055.js module was used to implement an application as described here: http://forum.espruino.com/conversations/306319/ It was discovered that the Pitch data values from the module were changing for a fixed position of the sensor. The BNO055.js module was updated to correct this problem, the reset function and external clock functions were also added.
Here is a data example.
Attachments: |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-26 by @gfwilliams Great, thanks! I'm surprised that the 'all in one' reading failed, as it's a pretty standard thing to do with I2C devices. Did you ever find out why? |
Beta Was this translation helpful? Give feedback.
-
Posted at 2017-06-26 by ClearMemory041063 The Vogon poet of the datasheet didn't provide any handshake information so I'm where the Dragons roam as to why this change worked. If planning a mission to Mars using this code, it would be prudent to ring up Bosch and ask. The other alternative is to look at their coding examples for a hint. It works on my table but will it work in other environments? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Posted at 2017-06-05 by ClearMemory041063
BNO055 Nine Degree of Freedom IMU with built in Quaternion function
Thanks to @trusktr for finding this chip at Adafruit.
https://www.adafruit.com/product/2472
https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
Connections
I hooked the breakout board to a PICO with short wires and began to get results with code that follows.
+3 to Vin, GND to GND, A8 to SCL, B4 to SDA
I changed to a longer set of wires so I can move the breakout board around without the PICO USB connector coming loose, and the performance became intermittent. Looking at the schematic I tried
Connecting the Vin and 3vo pins together on the breakout board and fixed the problem for use with the 3 Volts from the PICO. The Vin connected to a MIC6225-3.3 Voltage regulator input and the 3vo pin to the output.
Almost a Module
The attached code is almost a module. Some issues remain to be resolved but I am getting some interesting results. The output values are not scaled and are just the signed 16 bit integers.
Most of the knobs for the chip are accessed using a data structure that defines the register, mask and shift for the particular bits (a document will follow as the module is completed)
In NDOF mode (12) the output looks like this:
In AMG mode the output looks like this
Issues that remain are:
Using the external clock on the Adafruit board,
Writing the offsets and radius to the chip and a way to save them on the PICO
Sorting out the scale factors on the output as they change with the units settings and operating mode settings.
Changing the code into a module.
Attachments:
Beta Was this translation helpful? Give feedback.
All reactions