Go Down

Topic: Best IMU (Read 2415 times) previous topic - next topic

TheDeadLives

I want to use an IMU in my project, but i don't know very well how to work and what to look at a gyro and accel, as i never used it.

So, what is the best IMU:  ArduIMU V3 ou um MPU 9150 (https://www.sparkfun.com/products/11486)?

If there are other IMUs that are good too, please mention them.

Grateful

Caltoa

There is no 'best', the MEMS sensors are all more or less unstable and noisy.
http://en.wikipedia.org/wiki/Microelectromechanical_systems

What you need is a good library and a good filter.

For example this one for the MPU-6050:
http://www.i2cdevlib.com/

Sparkfun has libraries for the ArduIMU V3, but I have not checked those.
https://www.sparkfun.com/products/11055
That board uses the older MPU-6000 with the very common HMC-5883L magnetometer.

Perhaps using gyro+accel+magnetometer is the best.
I would recommend the MPU-9150 and the i2cdevlib
http://www.i2cdevlib.com/devices/mpu9150
The MPU-9150 is the MPU-6050 with an extra magnetometer in the chip.



TheDeadLives

I asked this because, like you said, ArduIMU v3 uses mpu6000 and hmc5883l. MPU9150 must have the same specifications as the MPU 6050 but the magnetometer i don't know if it is any good.

It also says: "Digital Motion Processing™ (DMP™) engine offloads complex MotionFusion", what is this?

SO, you conclude MPU 9150 is better than ArduIMU v3?

Caltoa

Like I said, you need a good library, and I trust the i2cdevlib.
I forgot which magnetometer was included in the MPU-9150, but I assume that it is like other modern MEMS magnetometers.
So yes, I think the MPU9150 is better, since the MPU-6000 is older, and the libraries at Sparkfun are older.

The DMP is some kind of magic. It is a signal processing unit inside the chip.
Invensense does not provide all the documentation for it.
The MotionFusion and so on are pieces of firmware for the DMP.
The i2cdevlib uses DMP firmware that is retrieved by reverse engineering.

TheDeadLives

#4
Feb 08, 2014, 06:08 pm Last Edit: Feb 08, 2014, 06:16 pm by TheDeadLives Reason: 1

Like I said, you need a good library, and I trust the i2cdevlib.
I forgot which magnetometer was included in the MPU-9150, but I assume that it is like other modern MEMS magnetometers.
So yes, I think the MPU9150 is better, since the MPU-6000 is older, and the libraries at Sparkfun are older.

The DMP is some kind of magic. It is a signal processing unit inside the chip.
Invensense does not provide all the documentation for it.
The MotionFusion and so on are pieces of firmware for the DMP.
The i2cdevlib uses DMP firmware that is retrieved by reverse engineering.



SHouldn't DMP proccess that information and not i2cdevlib? i2cdevlib, for what i understood by reverse engineering, makes the same thing as DMP?

I just saw another, what do you think of RazorIMU, it has a good tutorial, in sparkfun: http://www.youtube.com/watch?v=WuHRCnpcsDQ

I don't know which magnetmeter it uses too, that why i asked if it is best than hmc5883l.

Still mpu 9150 (just insisting because i really want to buy the best)?

Last question, i really apreciate yor help, ecl, eda, int and ad0 are used for what (http://i.ebayimg.com/00/s/NTAwWDUwMA==/z/G0kAAOxyRhBS8JzG/$_12.JPG)?

Caltoa

This is the RazorIMU:
https://www.sparkfun.com/products/10736
It uses other (also well known) chips and the HMC5883L.

The i2cdevlib fills the DMP with firmware that was retrieved by reverse engineering. So it actually uses the DMP processor. After that the i2cdevlib has additional calculations to calculate all sorts of output data.

The RazorIMU is not bad at all, with common used sensors.
The MPU-9150 has just one reliable library (the i2cdevlib), but the sensor board is a lot smaller. I still prefer this sensor.
So you could select either one of them, but I have another option:
The Adafruit libraries are up to date and well maintained, and they have also 9DOF and 10DOF IMU boards.
Like this one:
http://www.adafruit.com/products/1714
http://www.adafruit.com/products/1604
http://learn.adafruit.com/adafruit-10-dof-imu-breakout-lsm303-l3gd20-bmp180/software

ECL, EDA, AD0: http://forum.arduino.cc/index.php/topic,186516.0.html

TheDeadLives

Quote
ECL, EDA, AD0: http://forum.arduino.cc/index.php/topic,186516.0.html


Thanks.

WHy this must be so complicated  :smiley-sad-blue: ?

I really like MPU 9150. But all tutorials that i found, that shows the compass and the interactive position is using razor IMU. The problem of MPU 9150, like you said, are the libraries, just one and there are not a lot of tutorials.

Last question, because you know more about this than me:

Quote
I still prefer this sensor.


And between the ones from adafruit and MPU 9150?

Caltoa

Adafruit and Sparkfun both have open source hardware and software and allow that users ask questions.
In this case I like the Adafruit IMU 9DOF and 10DOF with the libraries more.
You can't go wrong with those Adafruit IMU boards.

For myself I would use the MPU-9150. I have only tried the MPU-6050, so I don't know the magnetometer part.

TheDeadLives

Quote
In this case I like the Adafruit IMU 9DOF and 10DOF with the libraries more.
You can't go wrong with those Adafruit IMU boards.

For myself I would use the MPU-9150.


Looked in youtube for the adafruit but couldn't found anything.  Just found for Razor IMU, again.

So, i will get a MPU-9150 since you really like it and i like too ;)

Thanks for all your help

TheDeadLives

This http://www.ebay.com/itm/IMU-9DOF-MPU9150-Invensense-breakout-board-MPU6050-AK8975-/271135830629?pt=FR_YO_MaisonJardin_Bricolage_ElectroniqueComposants&hash=item3f20f47265

and this http://www.ebay.com/itm/9DOF-MPU-9150-9-Axis-Accelerometer-Gyroscope-Magnetic-Field-Sensor-Moudle-/200949159205?pt=AU_B_I_Electrical_Test_Equipment&hash=item2ec980d525

are the same?

The first one as a mosfet, that isn't in the datasheet of mpu9150. They do the same thing? The data will not be different?

Grateful

Caltoa

#10
Feb 09, 2014, 11:51 pm Last Edit: Feb 09, 2014, 11:56 pm by Caltoa Reason: 1
Almost the same.

Both have the MPU-9150 with a voltage regulator for 3.3V.

The first one is the Drotek board.
http://www.drotek.fr/shop/en/home/153-mpu9150-gyro-accelerometer-magnetometer.html
It has as extra a level shifter for the I2C bus, so you can connect it to a 5V I2C bus.

The second one is the common Ebay module.
There are cheaper ones (inclusive shipping) than the one you found.
http://www.ebay.com/sch/i.html?LH_BIN=1&_sop=15&_osacat=0&_from=R40&LH_PrefLoc=2&_nkw=%28mpu9150%2Cmpu-9150%29&_sacat=0

If you have a Arduino Uno for example, you can do without a I2C level shifter.
But if you have the Arduino Mega 2560, you need a I2C level shifter.
You could also use a seperate level shifter module, it might be handy some day:
http://www.ebay.com/sch/i.html?LH_BIN=1&_sop=15&_osacat=0&_from=R40&LH_PrefLoc=2&_nkw=i2c+level+module&_sacat=0

TheDeadLives

Sorry for all question that i'm making, but i'm a noob  :smiley-sweat:

Quote
It has as extra a level shifter for the I2C bus, so you can connect it to a 5V I2C bus.


Could you explain what the level shifter is used for?

Caltoa

A level shifter has a 5V I2C bus as input and makes it a 3.3V I2C bus. The conversion is in both directions.

Suppose you have pull-up resistors of 4k7 to 5.0V. That makes it a 5V I2C bus, because the SDA and SCL would climb up to 5.0V if those signals are not pulled low. So when you connect a 3.3V sensor to that bus, the current via the 4k7 pull-up resistors might flow into the sensor, and damage it.

There is an endless discussion when you need a level shifter and when you don't:
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter

With a level shifter you have both a 5V I2C bus and a 3.3V I2C bus. You can connect any I2C device to the proper voltage I2C bus. In the sketch there is no difference because the level shifter is fully transparent and no barrier at all.

TheDeadLives


A level shifter has a 5V I2C bus as input and makes it a 3.3V I2C bus. The conversion is in both directions.

Suppose you have pull-up resistors of 4k7 to 5.0V. That makes it a 5V I2C bus, because the SDA and SCL would climb up to 5.0V if those signals are not pulled low. So when you connect a 3.3V sensor to that bus, the current via the 4k7 pull-up resistors might flow into the sensor, and damage it.

There is an endless discussion when you need a level shifter and when you don't:
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter

With a level shifter you have both a 5V I2C bus and a 3.3V I2C bus. You can connect any I2C device to the proper voltage I2C bus. In the sketch there is no difference because the level shifter is fully transparent and no barrier at all.


Thanks for the explanation ;)

Go Up