How precise is MPU-6050 at sampling fast RPM?

Hi guys. Just a quick thread as I can't seem to find any proper answers to my philosophical questions.
I've seen lots of you out there are using MPU-6050 to servo control the attitude of slow moving applications (robots, copters...), in relatively quiet environment (static 1g vertical acceleration).

It seems that as usual I am not doing things like others... ]:smiley:

In trying to start a new project I realize that my specifications are quite different from many out there :

1/ I need to track rotations of a moving object as precisely as possible
2/ Sampling time is short, up to 5 seconds maximum
3/ Rotation rate can be relatively high (20 to 30 RPM) and not necessarily within the same plan
4/ General sampling environment can be quite shaky with up to 5g acceleration (order of magnitude)

So I've read quite a lot on sensor accuracy and ways to improve it (Extended and Unscented Kalman filtering, complementary filtering). These sensors don't actually seem very precise at all out of the box. But as I am new in using this type of sensors (6DOF), I am just wondering if they are just precise enough for my type of application, or if due to the my high rotation rate (compared to other projects), they will just output useless data after a few hundred milliseconds due to gyro drift and accelerometer noise in such high RPM, high g environment.

Anyone out there may have some experience with that type of application, or point me toward applications with similar sampling context?

Thanks for your help!

Do you want to detect the centrifugal force ? or the number of rotations ?

Can you explain the 'rotations of a moving object' ?
Is it a motor with an axis ?
Or a fighting robot spinning around ?

20 or 30 rpm is very slow. Do you mean 20000 or 30000 ?

Also 5G is not a lot. Bumping a robot to a wall could already be a peak of 100G.

For high G-forces, some sensors have a range of 200G.

For high datarates, the I2C bus might be too slow. The SPI bus is faster. Some sensors are made specific for high sample rates, but they could be only one or two axis.

Hi Erdin and thanks for your reply. For the benefits of all readers of this thread, let me give you a better description of the project.

No actually I just want to monitor precisely the rotations of a ball rolling freely on the ground. I am not primarily interested in accelerations. I am wondering if this is something feasible with a good level of precision.

It is true that it doesn't involve any feedback control or fancy servo, just data output. But so far I haven't found one single project dealing with this type of setup. It is quite different from what is achieved usually with this type of sensor (ie MPU-6050) where people try to stabilize attitude of an object and with it, the noise coming back through the sensor attached to this stabilized object (ie copter, robot...). In my case, it is the inverse that's happening. My object is not servo controlled, and its random movements feedback a lot of noise into the captor. I don't know if this type of 6 or 9 DOF sensor is even designed for such an application. I don't see why it wouldn't be, but I may be missing some technical limitations of these devices (cumulative drift, noise floor...).

So for my application :

1/ The rotation is indeed only 20 to 30 times a second maximum (not thousands), but considering centrifugal force, and vibrations it would be sufficient to badly scramble my readings, from what I understand.

2/ On the good side, as rotation is "relatively" slow, I may be able to use high quality Kalman filtering as I don't need a very high sampling rate and thus can use some computing power. From what I understand I need to extract filtered quaternions values from my sensor readings.

3/ I am interested primary in monitoring continuously the ATTITUDE of the ball for a few seconds only (for roughly 5 seconds which translates into 150 revolutions maximum). Mathematically, I believe this means that I need a series of 3 axis orientation data at various points in time.
Eventually I would integrate these data into rotation angles by period of time. This can be done in a second time asynchronously. First priority would be to record a good series of orientation data for 5 seconds.

4/ As the ball would be bumping around, the accelerometers would be shaken a bit, but not too much as the ball would be free rolling (probably not beyond 25g as the ball would not be bumping into walls or anything like that). I am not interested in these high values at all as I want rotational data only (meaning I can filter these acceleration peaks out).

5/ In a far far future, I would be interested in being able to track the overall speed and position of the ball, but this seems highly difficult to extract such data from a rotating 6 or 9 DOF sensor with any kind of meaningful precision.

6/ The captor would not be perfectly centered so there would some offset to consider in my calibration phase.

Hope this will help. Sorry if this is all a bit fuzzy, as it's a general concept, and there is no specific code to discuss yet, but I am really wondering if such an application is even possible using this type of captor, or if it must be put into a drawer until technology improves... And if it is possible, with which level of precision. I am not asking for precise or definite answers of course, just a general feeling...

Thanks for your help!

I would simply build a small gadget with ie 6050, an mcu, serial sram (or mram) and a 3V coin battery. Put it into the ball and do sample as fast as you can all the data. After the experiment you may do filtering and math upon the raw data.. :slight_smile:

Yes Pito this is precisely what I am currently doing here! But while I am waiting for the parts I was trying to get a better in depth understanding of the capabilities of this sensor. But you're right here, paraphrasing Robert Oppenheimer in 1944 : "nothing like real life experiment!!" :smiley:

I think when you place the sensor close to the middle, the gyro has no problem keeping up.

I doubt if the accelerator of the MPU-6050 can keep up with the bumping on the surface.
Is it a wooden ball on a lawn or on wood ? How big ? what weight ?
The MPU-6050 has a maximum g-force range of 16G. That is something I would expect from a sensor for balancing a plane or a robot. The sensor is not ment to measure an crash impact on a vehicle.

Your ball project is in between the balancing robot and the crash impact.

If the bumps are stronger, the sensor clips the values, and any calculations will go wrong.
So I would look for another accelerator sensor.
I don't know if you can use the gyro part of MPU-6050, perhaps it is in the datasheet how much g-force it might have.