Ritchie
04.05.2013, 11:46
Hallo Zusammen,
irgendwie bekomme ich von meinem ADIS16265 nur Blödsinn :confused: gemeldet.
So frage ich derzeit zu Testzwecken der Kommunikation die Temperatur und die Spannung mit ab.
Die Auswertung der Daten erfolgt wie folgt:
switch ( m_Active_Command )
{
case ADIS16265_GYRO_OUT:
if((SPIReceiveBuffer[0] & 0x20) > 0 ) // Do we have a negative value
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
iValue*=-1; // we have a negative value of angle speed
}
else
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
}
m_DigitalGyroRawValue = (double) (iValue * 0.7326) * (M_PI / 180.0);
break;
case ADIS16265_TEMP_OUT:
if((SPIReceiveBuffer[0] & 0xF) > 3 ) // Do we have a negative value
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
iValue= 4095 - iValue + 1;
}
else
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
}
m_ADIS16265_Temperature = 25.0 + (iValue * 0.1453);
break;
case ADIS16265_ANGL_OUT:
iValue=(SPIReceiveBuffer[0] & 0x3F ) * 256 + SPIReceiveBuffer[1];
m_DigitalOrientationAngle= (double)(iValue * 0.03663) * (M_PI / 180.0);
break;
case ADIS16265_GYRO_OFF:
break;
case ADIS16265_ALM_CTRL:
m_ADIS16265_AlarmControl=SPIReceiveBuffer[0] * 256 + SPIReceiveBuffer[1];
break;
case ADIS16265_GLOB_CMD:
break;
case ADIS16265_SUPPLY_OUT:
iValue= (int) ((SPIReceiveBuffer[0] & 0x0F) * 256 + SPIReceiveBuffer[1] );
m_ADIS16265_Voltage = ((double)(iValue * 0.00183));
break;
}
Folgende Anzeigen habe ich für die Wert
Spannung: 1.87392 Volt statt ca. 4.96 Volt
Temperatur: -1314.084 Grad Celsius statt irgendwas um die 20-25 Grad.
Winkelangabe: 8.51055 Grad statt 0, da noch nicht bewegt und keine Vorgaben
Alarm Status: 0111010000000000 diese macht jedoch Sinn entsprechend der Dok.
Hat jemand das Teil am Rennen und kann mir einen Tip geben.
Gruss R.
irgendwie bekomme ich von meinem ADIS16265 nur Blödsinn :confused: gemeldet.
So frage ich derzeit zu Testzwecken der Kommunikation die Temperatur und die Spannung mit ab.
Die Auswertung der Daten erfolgt wie folgt:
switch ( m_Active_Command )
{
case ADIS16265_GYRO_OUT:
if((SPIReceiveBuffer[0] & 0x20) > 0 ) // Do we have a negative value
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
iValue*=-1; // we have a negative value of angle speed
}
else
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
}
m_DigitalGyroRawValue = (double) (iValue * 0.7326) * (M_PI / 180.0);
break;
case ADIS16265_TEMP_OUT:
if((SPIReceiveBuffer[0] & 0xF) > 3 ) // Do we have a negative value
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
iValue= 4095 - iValue + 1;
}
else
{
iValue=((SPIReceiveBuffer[0] & 0x3F) * 256) + SPIReceiveBuffer[1];
}
m_ADIS16265_Temperature = 25.0 + (iValue * 0.1453);
break;
case ADIS16265_ANGL_OUT:
iValue=(SPIReceiveBuffer[0] & 0x3F ) * 256 + SPIReceiveBuffer[1];
m_DigitalOrientationAngle= (double)(iValue * 0.03663) * (M_PI / 180.0);
break;
case ADIS16265_GYRO_OFF:
break;
case ADIS16265_ALM_CTRL:
m_ADIS16265_AlarmControl=SPIReceiveBuffer[0] * 256 + SPIReceiveBuffer[1];
break;
case ADIS16265_GLOB_CMD:
break;
case ADIS16265_SUPPLY_OUT:
iValue= (int) ((SPIReceiveBuffer[0] & 0x0F) * 256 + SPIReceiveBuffer[1] );
m_ADIS16265_Voltage = ((double)(iValue * 0.00183));
break;
}
Folgende Anzeigen habe ich für die Wert
Spannung: 1.87392 Volt statt ca. 4.96 Volt
Temperatur: -1314.084 Grad Celsius statt irgendwas um die 20-25 Grad.
Winkelangabe: 8.51055 Grad statt 0, da noch nicht bewegt und keine Vorgaben
Alarm Status: 0111010000000000 diese macht jedoch Sinn entsprechend der Dok.
Hat jemand das Teil am Rennen und kann mir einen Tip geben.
Gruss R.