Bricked IMU using a magnet

accelerometergyroscopeimumagneticsmagnetometer

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.

3D plot of Magnetometer reading

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.

Best Answer

There is some confusion here since you state that the gyroscope is giving you readings where the software indicates that it is the gyroscope that wasn't initialized.

The accelerometer is integrated into the same chip as the magnetometer which on that breakout board is a STM LSM303D(datasheet ). This chips contains a MEMS type magnetic field sensor. STM is secrative about the exact type of sensing element, it is likely that it can be succeptible to damage at strong magnetic fields and the high flux density and divergent field lines close to the surface of a magnet may cause other damage.

The surface or rare-earth magnets (e.g. neodymium) can have considerable field strength near the surface, if you bring the magnet very close to the sensor the field strength can be a significant fraction of 1T and there may be enough flux density to significantly damage a sensitive device like a mems sensor.\$1000\mu\ T\ = 10 G\$ which the magnetometer datasheet says should be fine, but I suspect the strength of the field was a good deal higher. The constant readings and software error message is likely indicative of damage to the relevant sensor chip the readings being garbage data or default values from an uninitialized sensor.

In general there are any number of ways that a strong magnet close to the board can cause damage to one of the sensor chips. A uniform 1milliTesla field is probably less damaging than the highly divergent field at the business end of a magnet.

The magentometer/accelerometer should handle magnetic fields up to 10,000 G according to the datasheet, however I suspect that the gyroscope (the device giving you an error message) with its mems gyroscopic sensor (likely a PZT but STM doesn't say) may be more susceptible to damage (datasheet).

Related Topic