Frequently Asked Questions
Mon-Fri, 9am to 5pm
U.S. Mountain Time:
Chat With Us
September 22, 2013
about 11 months ago
Yes, that is the only way I would have been able to read a non-zero temperature from the NorDevX LSM9DS0 breakout board. However, I could only get zero from the temperature register of the Sparkfun device using the exact same sketch. Check the .cpp file in the Sparkfun LSM9DS0 breakout repository on github and you will see the TEMP_EN bit is enabled now by default. Using this sketch, can you read the temperature from a Sparkfun LSM9DS0 breakout board? Is there an error in the sketch?
No. Yes. No license fee, but its painful to use. Update rate is fixed at 200 Hz on the DMP. There is one platform that Invensense claims is currently supported for 9 DoF sensor fusion but the magnetometer data does not make it into the DMP so this solution must be done in software. Invensense is going to announce 9 DoF solutions that run on a variety of microcontrollers at their upcoming Developer’s Conference June 11-12, 2014. Until then, the DMP will put out stable 6 DoF fused Roll and Pitch, and pretty stable Yaw with drift rates of ~0.5 degrees per minute. True 9 DoF sensor fusion must be done on the microcontroller until Invensense offers user-friendly 9DoF sensor fusion on their DMP. This is actually pretty straightforward using open-source sensor fusion filters. Rates of ~150 Hz can be achieved with a 3.3 V 8 MHz Pro Mini, and more than 1000 Hz on a Teensy 3.1. See https://github.com/kriswiner/MPU-9150.
You can always get more accuracy via proper calibration of the sensors, including the gyro and accelerometers. Proper calibration means readings of zero at rest on the gyros to +/-0.1 degree/s and accelerometer to +/- 1 milli-g. This is easily achievable with this sensor. Magnetic calibration is less straightforward since it is environment dependent. But simple averaging of min/max values for each axis should get you absolute accuracy of yaw, pitch, and roll to within two or three degrees. Here is an example of using the MPU-9150 FIFO for gyro and accelerometer calibration: https://github.com/kriswiner/MPU-9150
While it is conventional for the accel/mag z-axes to be opposed, the x- and y-axis orientations would be better aligned. It is a choice that Invensense made; it is only a minor inconvenience for 9 DoF sensor fusion.
Take a look at https://github.com/kriswiner/MPU-6050/wiki/Affordable-9-DoF-Sensor-Fusion for a comparison between 6 DoF and 9 DoF sensor fusion results.
I ran across a discussion thread at the ST.com forum complaining that no one could read (get anything but zero from) the temperature sensor. I added an edit of the temperature sensor to the Sparkfun GitHub sketch and sure enough, I also get zero for the temperature registers 0x05 and 0x06. That is the result using the Sparkfun breakout board. Yet with a breakout board from NorDevX.com, I am able to read the registers, which give 16 or 17. The data sheet says 8 LSB per degree Centigrade but no info on the intercept. If I assume 21 degrees as the intercept, I get a reasonable temperature of ~23 degrees, when the (independent) DS3231 RTC says 22.25. OK, two questions: why does the Sparkfun board return a zero temperature count and what is the proper offset for the temperature sensor?
Anyone else have trouble reading the temperature?
Each of two devices (1) gyro and 2) accelerometer/magnetometer/temperature sensor) has a unique device (I2C) address. That is how each read to and write from common registers are distinguished. I agree, this is a little unusual; Invensense does it differently, for example.
These are great little displays and a lot of fun to work with. I bought an Adafruit HT16K33 breakout board for $6 and managaed to get three of these displays working with the single board so far. I think four would be no problem but the wiring gets a little hairy. Still, it is incredible that four 4-digit, seven-segment displays can be controlled through a Pro Mini with just power and TWI! It leaves all the other IO pins free for sensor interfaces and the like. It should be pretty straightforward to design a breakout board that incorporates the HT16K33 chip and four bubble displays, individually addressable, as an integrated unit (like the standard LED backback) in a very compact sze. The coding to access and address the separate displays is trivial; the HT16K33 makes these bubble displays very easy to use. What a great combination!
Are you using the i2c.h library? I had similar problems using a Pro Mini. When I switched to Wire.h, they went away.
about a year ago
I copied the Wire.h readBytes/writeByte routines for another sensor and got bit by not understanding the differences between the MPU9150 and the LSM9DS0. Along the way, I got some good suggestions for improving the existing Sparkfun LSM9DS0 sketch. Please take a look at the forum discussion here:
As embarrasing as this is for me, I think there are some good lessons for anyone using the Wire.h library.
No public wish lists :(
Forgot your password?
No account? Register one!