Everybody needs an IMU. We need one too. But why buy something ready when you can create your own and learn?
We’ve been following some IMU projects while trying to figure out what kind of IMU we would like to create for our control board. The next table lists some IMUs that are more or less related to quadrotors.
|IMU||Sparkfun 9 DoF - Sensor Stick||DroTek IMU 10 DoF||Varesano FreeIMU 0.3.5_BMP||Varesano FreeIMU v0.4||ST iNEMO v1||ST iNEMO v2||DIYdrones ArduIMU+ V3||DIYdrones ArduPilotMega 2.0||Gumstix Robovero||VR IMU Digit||Pololu MinIMU-9|
|Gyroscope||ITG-3200||ITG3200||ITG-3200||MPU-6050||2D LPR530AL + 2D LPY530AL||2D LPR430AL + 1D LY330ALH||MPU-6050||MPU-6000||L3G4200D||1D ISZ500 + 2D IDG500||L3G4200D|
|MCU||-||-||-||-||STM32 F103||STM F103||Atmega328||Atmega2560||LPC1769||-||-|
|Interface||i2c||i2c||i2c||i2c||USB / UART / xBee||USB / UART / xBee||i2c||SPI / USB / UART||i2c / SPI /CAN||??||i2c|
|Price||72€||56,90 € tax incl.||79€||??||266.50$ (202€)||286$ (217€)||78.90$ (60€)||199.95$ (152€)||99$ (75€)||75€||49.95$ (38.4€)|
The next table lists the sensors used in the above mentioned IMUs. I didn’t list some of the sensors (namely LPR530AL, LPY530AL, LPS001DL, ISZ500, and IDG500) as they are not available anymore in small quantities or not recommended for new designs.
|Sensor||Type||Manufacturer||Manufacturer price||Digikey price||Datasheet|
|MPU-60x0||3D acc + 3D gyro||Invensense||15$ (11.4€)||-||Datasheet
|LSM330DLC||3D acc + 3D gyro||STMicroelectronics||3.2$ (2.43€) in 1000 pcs||9.41€||Datasheet|
|LSM303DLM||3D acc + 3D magn||STMicroelectronics||3.47$ (2.6€) in 1000 pcs||7.35€||Datasheet|
|ADXL345||3D acc||Analog Devices||-||6.47€||Datasheet|
|BMA180||3D acc||Bosch Sensortec||-||5.53€||Flyer|
|LIS331DLH||3D acc||STMicroelectronics||1.78$ (1.4€) in 1000 pcs||4.27€||Datasheet|
|ITG-3200||3D gyro||Invensense||10$ (7.6€)||-||Datasheet
|L3G4200D||3D gyro||STMicroelectronics||5.08$ (3.6€) in 1000 pcs||12.95€||Datasheet|
|LPR430AL||2D gyro||STMicroelectronics||3.18$ (2.9€) in 1000 pcs||-||Datasheet|
|LY330ALH||1D gyro||STMicroelectronics||2.05$ (1.6€) in 1000 pcs||-||Datasheet|
|HMC5883L||3D magn||Honeywell||-||3.15€||Datasheet from digikey|
|MS5611-01BA01||Pressure||Measurement Specialties||?||-||Download from here|
|MS5611-01BA03||Pressure||Measurement Specialties||?||-||Download from here|
Some vendors have combo chips having two of the three needed sensors in one chip. It seems that the magnetometer is very sensitive and it’s good to have it as a separate chip while the accelerometer and the gyroscope can be in one chip.
MPU-60×0 is one of these combo chips but the firmware makes it a special one. It can do the sensor fusion calculations internally and provide the yaw, pitch and roll values for the host processor. This simplifies the software on the host processor and frees up some processor time. To provide good yaw values the MPU-60×0 includes an auxiliary i2c bus for the magnetometer. After the host processor has initialized the magnetometer the MPU-60×0 reads the values from the magnetometer providing nice data for the host.
OTOH, having the sensor fusion algorithm running on the MCU (maybe DSP optimized on STM32 F4?) gives the freedom to update the algorithm at any time, and changing a sensor is easier as it doesn’t mean changing the sensor fusion algorithm.
While the MPU-60×0 has both the datasheet and register map published, the register map seems to be missing the parts describing how to actually enable the 9 DoF instead of plain 6 DoF.
At the moment the hot sensor combo for an IMU seems to be MPU-60×0, HMC5883L and MS5611-01B. The downside, in addition to missing parts of the register map, is the availability. There aren’t many distributors selling the MPU-60×0 and even fewer selling the MS5611-01B. It’s risky to design a board with components that are difficult to acquire.
So, what do you think would be a good IMU? Maybe LSM330DLC + HMC5883L + BMP085?