MMA8452Q Self Test

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MMA8452Q Self Test

2,879 Views
stanfordhudson
Contributor I

Hello,

We are using an MMA8452Q and are utilizing the Self Test feature during production test. 

The datasheet indicates that when self test is activated, the XYZ axes will be deflected by +45, +64, and +420 LSBs off of the current acceleration acting on the sensor respectively.

Our procedure is as follows:

  Set to ACTIVE mode

  Read X,Y,Z

  Set to ST mode

  Read X,Y,Z

  Compute absolute differences in XYZ for ACTIVE and ST mode.

(We are doing quite a bit of averaging along the way to account for any noise that may exist in the system.)

We routinely get values that are 380 and below for the Z axis.  The XY are usually pretty marginal, but sometimes are dead-on.

Each accel is different.

Can you please give me some insight into why the Z axis is not even close to the +420 specified in the datasheet?

(Note that we do set the accel range to +/-4G.  The Active bit in CTRL_REG1 is cleared before we set ST.  The accel is still during the test).

Thanks,

Stanford Hudson

Labels (1)
Tags (3)
0 Kudos
Reply
8 Replies

2,087 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hello Stanford,

The reason why the Z axis self-test output does not correspond to the typical value specified in the datasheet is that the self-test is not factory trimmed. Generally, the test is considered successful if the minimum magnitude of change (50 counts for all axes at ±4g mode) is achieved.


Regards,

Tomas


PS: If my answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.

0 Kudos
Reply

2,087 Views
danielwerder
Contributor I

Hi Tomas,

I have a question about Self Test range.
About datasheet are XYZ will be deflected by +45, +64 and +420.

Are there no tolerance (min, max) values?

BR,
Daniel

0 Kudos
Reply

2,087 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Daniel,

We do not specify the limits as the self-test output is not trimmed.

Regards,

Tomas

0 Kudos
Reply

2,088 Views
stanfordhudson
Contributor I

Thank you Tomas for the response.  I am assuming by magnitude you mean the magnitude of the XYZ vector?

(sqrt(x2+y2+z^2)).

Would this then be the correct procedure:

1. Measure xyz in Active mode.

2. Compute magnitude (mag0=sqrt(x2+y2+z^2))

3. Measure xyz in Self Test mode.

4. Compute magnitude (mag1=sqrt(x2+y2+z^2)).

5. Test pass if abs(mag1-mag2)>=50.

?

Thanks, Stan

0 Kudos
Reply

2,088 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Stan,

Sorry for not being clear enough, the procedure does not require calculating the XYZ vector, just simply compute the difference between the acceleration output of all axes with self-test enabled and disabled as follows:


XST = XST_ON − XST_OFF

YST = YST_ON − YST_OFF

ZST = ZST_ON − ZST_OFF


and if these self-test changes are higher than 50 counts at ±4g mode, the test is considered to pass.

As you are doing correctly, it is recommended to take several samples (e.g. 10) for each axis and average them.

I hope it helps.

Regards,

Tomas

0 Kudos
Reply

2,088 Views
chrislin_wpi
Contributor II

Dear Tomas,

Do you mean each axis (Xst,Yst and Zst) higher than 50 counts at ±4g mode, it's pass?

And how about ±2g mode?

Best Regards

Chris Lin

0 Kudos
Reply

2,088 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Dear Chris,

It is 100 counts at ±2g mode.

Best regards,

Tomas

0 Kudos
Reply

2,088 Views
bobpaddock
Senior Contributor III

How well does this work out if the device is moving, in uncontrolled ways,  while self-test is being done?

0 Kudos
Reply