kriswiner/MPU6050

Self test

blschreiner opened this issue · 14 comments

The self test implementation doesn't make sense to me, and doesn't appear to match the guidance in the register map (rev 4.2 at least). Is there some additional documentation from Invensense supporting your implementation? The expression at line 692 effectively calculates the percent difference between the (encoded) values stored in registers 0x0d-0x10, and the (decoded) values produced using the conversion expressions in lines 676-681. For a given chip this result will be fixed and will be pretty close to -100%. How does this test the sensor? Isn't the factory trim result supposed to be compared instead with Self Test Response, which the register map defines as the difference between a (real-time) sensor reading with self-test enabled and a (real-time) sensor reading with self-test disabled? If this understanding is wrong I'd be interested in knowing that.

It is wrong.

See attached.

-----Original Message-----
From: blschreiner [mailto:notifications@github.com]
Sent: January 18, 2016 4:58 AM
To: kriswiner/MPU-6050
Subject: [MPU-6050] Self test (#11)

The self test implementation doesn't make sense to me, and doesn't appear to
match the guidance in the register map (rev 42 at least) Is there some
additional documentation from Invensense supporting your implementation? The
expression at line 692 effectively calculates the percent difference between
the (encoded) values stored in registers 0x0d-0x10, and the (decoded) values
produced using the conversion expressions in lines 676-681 For a given chip
this result will be fixed and will be pretty close to -100% How does this
test the sensor? Isn't the factory trim result supposed to be compared
instead with Self Test Response, which the register map defines as the
difference between a (real-time) sensor reading with self-test enabled and a
(real-time) sensor reading with self-test disabled? If this understanding is
wrong I'd be interested in knowing that

Reply to this email directly or view it on GitHub
#11 .
<https://github.com/notifications/beacon/AGY1qnF_Da-e6Kuf6cdlV0ddI7iPd9Umks5
pbNjhgaJpZM4HG55W.gif>

Did you get the attachment? If not PM me at onehorse@earthlink.net for the Invensense self test AN.

Hi @kriswiner , the email seems not working. Could you please provide a valid one?

Actually the same as previous one - about the self calibration procedure. Does the Motion Driver archive from InvenSense has the self-test procedure well described? If not, can I have the self-test description document?

Would you also provide me a self test AN?

@kriswiner, thanks, but do you mean the one in MPU9250 repo?

@kriswiner I still don't have any clue

  1. The implement doesn't read the "Gyroscope Output with Self-Test Disable"
  2. Why it needs add 100 here
    for (int i = 0; i < 6; i++) { destination[i] = 100.0 + 100.0*((float)selfTest[i] - factoryTrim[i])/factoryTrim[i]; // Report percent differences }
    Thanks

Sorry,
I have a doubt. If the Self test> 1.0f the MPU is broken? or it can be solved with calibration?