I think I may have bricked my IMU or seriously damaged it earlier this week. I have the Adafruit 9-DOF IMU Breakout - L3GD20H + LSM303 (link: http://www.adafruit.com/products/1714) which has an accelerometer, gyroscope and a magnetometer all rolled into one. I had it connected to my Arduino Uno over i2c and was successfully using the provided Adafruit sensor libraries to read data from each of the chips. As far as I could tell, the accelerometer was working except for a slight (1m/s^2) positive bias in the Z direction and both the gyroscope and magnetometer seemed to be working alright.
I was demonstrating use of the chip to some of my students and one of them mentioned that they wanted to see what would happen to the magnetometer's reading if it was exposed to a magnet. Normally the highest reading from the magnetometer is around 60-70 uTeslas. With a stack of rare earth magnets placed within a few centimeters of the chip, the reading spiked up to between 1000-2000 uTesla. I thought nothing of it.
However, my accelerometer's outputs are now constant values of between 10 and 20 m/s^2 no matter what orientation it is or if it is being moved around. The sensor library reports "Oops ... unable to initialize the L3GD20. Check your wiring!" for the gyroscope and the magnetometer's readings seem to have been shifted, although I'm not sure if they're completely terrible. The following picture is from continuously gathering sensor readings while rotating the IMU for about 20 seconds.
They appear to be an ellipsoid. I've read some things about hard-iron and soft iron offsets, but I'm not exactly sure what I'm seeing here. I looked online for how magnets affect IMUs, but none of them had anything about something this... stupid. heh Thanks for anyone who can shed light on this issue or how to troubleshoot. The IMU is relatively inexpensive (~20), so luckily that's not the issue. I'm just wondering for my own knowledge at this point.