Description: The LSM9DS1 is a versatile, motion-sensing system-in-a-chip. It houses a 3-axis accelerometer, 3-axis gyroscope, and 3-axis magnetometer – nine degrees of freedom (9DOF) in a single IC! The LSM9DS1 is equipped with a digital interface, but even that is flexible: it supports both I2C and SPI, so you’ll be hard-pressed to find a microcontroller it doesn’t work with. This IMU-in-a-chip is so cool we put it on the quarter-sized breakout board you are currently viewing!
The LSM9DS1 is one of only a handful of IC’s that can measure three key properties of movement – angular velocity, acceleration, and heading – in a single IC. By measuring these three properties, you can gain a great deal of knowledge about an object’s movement and orientation. The LSM9DS1 measures each of these movement properties in three dimensions. That means it produces nine pieces of data: acceleration in x/y/z, angular rotation in x/y/z, and magnetic force in x/y/z. The LSM9DS1 Breakout has labels indicating the accelerometer and gyroscope axis orientations, which share a right-hand rule relationship with each other.
Each sensor in the LSM9DS1 supports a wide spectrum of ranges: the accelerometer’s scale can be set to ± 2, 4, 8, or 16 g, the gyroscope supports ± 245, 500, and 2000 °/s, and the magnetometer has full-scale ranges of ± 4, 8, 12, or 16 gauss.
Based on 5 ratings:
This is a lot of action on a tiny board and, paired with my Arduino UNO, the project possibilities are nearly endless! I haven’t tried the SPI hookup yet but the I2C is dead simple and works great. Documentation was easy to access, very complete and easy to understand. Cool is the best word!
Having used other 9 DOF IMUs, it is the available libraries that make this type of product useful, the library available for LSM9DS1 is good and examples are useful. The simple I2C setup worked with no issues for me.
When i first hooked this thinger up I accidentally used the DS0 vs DS1 libraries and was pretty excited because of the AHRS stuff that came in the DS0 libraries. Unfortunately those don’t work with the DS1 so i had to spend an hour or so porting over the AHRS example from the DS0 libraries. Since this is a 9DOF chip it seems to be there should be an AHRS example as that is really the primary reason behind getting a chip like this, and dealing with the math intensive AHRS algorithm can be a little daunting.
This is an impressive sensor, but using the Arduino code got me off on the wrong track. It is probably fine code, but I don’t do much with Arduinos and I needed something running natively under Linux. I thought: Arduino, its just C++ really, just some minor porting…
Somehow I got started at the wrong end of the stick and wasted a week on this. Calibrating, reading, and making this useful without an unnecessary Arduino CPU in the picture turned frustrating. And there does not seem to be a lot of other code out there that suits my needs.
Finally, after much thrashing about, I found my way to:
This code, in spite of being in in a seemingly RasPi-exclusive source, builds great under Ubuntu desktop, other small arm platforms, includes both C++ and Python wrappers, and has both local and remote (serial) client tools for calibration.
The code is clear enough, and there is a useful Calibration.pdf document included that is informative. As always, however, it could use a bit of other documentation. Other versions of this library are out there, but seem to have been abandoned for now.
Native code for standard platforms makes sensors like this much more useful.
Drivers integrated seamlessly. Hookup guide was very helpful