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++;
}