AnsweredAssumed Answered

ADIS16223 X Y Z data and effect of gravity / orientation. How does this unit take gravity into account?

Question asked by StephanB on Sep 6, 2017
Latest reply on Sep 6, 2017 by NevadaMark

I am using the ADIS16223 to collect X Y Z values. It is running in factory default mode (As shipped)

I get 1024 X Y and Z values (See below)

Normally with an accelerometer gravity make one of the values much larger than the other two when the unit is still and placed flat on a desk. But with this unit X,Y and Z seem to be in a similar range. Am I reading the values correctly and if so how does this unit take gravity into account when you change its orientation?

Sample data

Start capture,,,

DIAG_STAT=88

Supply=3.232414 v

Temperature=25.845865 c

PeakX=-0.233333 g

PeakY=-0.152381 g

PeakZ=0.490476 g

CAPT_PNTR=0

Start capture,,,

0,0,-60,-54

1,104,71,-16

2,-71,71,65

3,-71,-38,0

4,38,6,76

5,-109,-109,-49

 

Sample code

   while(1)

    {

          printf("Start capture,,,\n");

          delayMicroseconds (d_DELAYTIME_MICROS) ;

          writeCommand[0] = 0xBF;

          writeCommand[1] = 0x08;

          wiringPiSPIDataRW (ce, writeCommand, 2); 

          if(RecordCount > 0) //print data from last capture

          {

             for(int i=0;i < 1024;i++)

             {

               printf("%d,%d,%d,%d\n",i,ValueX[i],ValueY[i],ValueZ[i]);

             }

          }              

          delay(30); //Delay 30ms

          ReadCAPTReg(); 

          for(int i=0; i < 1024;i++)

          {

            delayMicroseconds (d_DELAYTIME_MICROS) ;

            writeCommand[0] = 0x14; 

            writeCommand[1] = 0x00; 

            wiringPiSPIDataRW (ce, writeCommand, 2);

            ValueX[i] = BitShiftCombine(writeCommand[0],writeCommand[1]);  // Needs g conversion  210.0         

          }

 

          for(int i=0; i < 1024;i++)

          {

            delayMicroseconds (d_DELAYTIME_MICROS) ;

            writeCommand[0] = 0x16; 

            writeCommand[1] = 0x00; 

            wiringPiSPIDataRW (ce, writeCommand, 2);

            ValueY[i] = BitShiftCombine(writeCommand[0],writeCommand[1]); // Needs g conversion  210.0         

          }

 

          for(int i=0; i < 1024;i++)

          {

            delayMicroseconds (d_DELAYTIME_MICROS) ;

            writeCommand[0] = 0x18; 

            writeCommand[1] = 0x00; 

            wiringPiSPIDataRW (ce, writeCommand, 2);

            ValueZ[i] = BitShiftCombine(writeCommand[0],writeCommand[1]); // Needs g conversion  210.0          

          }

          RecordCount++;    

    } 

Outcomes