I have some doubts about how to analyze data acquired through a gyroscope and accelerometer (GY 521, datasheet).

Precisely, let's consider this acquisition I have done when the module was still:

enter image description here

My questions are:

1) While I was reading the datasheet, I was not able to find any information about the reference (xyz) system. How are x, y, z axis physically oriented compared to the module?

2) Which is the meaning of negative values, if the reference axis are not specified? Does it mean maybe the verse of motion?

3) Is it correct that there are so high variations between two consecutive measures (in which the module is still)?

  • \$\begingroup\$ Page 21 shows the physical orientation of the sensor axis... So that answers 1 and 2, for 3, are you familiar with measurement noise? \$\endgroup\$
    – Ron Beyer
    Commented Jun 1, 2020 at 21:19
  • \$\begingroup\$ You probably should be reading the datasheet for the MPU6xxx chip, not the module \$\endgroup\$ Commented Jun 1, 2020 at 21:52

1 Answer 1


I don't know this specific part, but you don't need to know how the axis are physically oriented, because your device will never be mounted with 100% accuracy in ideal conditions. This is gonna be some evil little QFN fine-pitch MEMS, so the SMD process alone will give quite some inaccuracy in position, not to mention the inaccuracy that comes with how the final PCB is mounted.

So you'll need some means to calibrate the accelerometer when it is sitting still at 1G. A serial bus command, a button, a jumper etc. The (x,y,z) offset you get then, is the 1G vector pointing towards the centre of the earth. All your calculations from there on must be based on this offset.

As for why you have different values from time to time, there could be many explanations. This part apparently uses internal ADC to read the data, for example the datasheet mentions 16 bit ADCs. That's quite some resolution - with 3.3V supply, one ADC unit would be 3.3/(2^16) = 50.35uV. Fluctuations in ref voltage will mean ADC noice. And then ADC are by their nature giving unstable output. So I suspect this is the natural state of things - a moving average filter in software can usually handle it.

Though you should investigate how the part's supply and ref voltages look. Any noise from switch regulators or line etc will affect the part. PCB layout and decoupling caps will of course matter too. And yet another culprit could be rounding math or floating point inaccuracy in software.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.