después de descubrir finalmente cómo crear una conexión SPI de software, ahora puedo leer los datos de un sensor de aceleración ADXL345. Pero me parecen bastante extraños, estos son algunos valores de muestra:
X: -252 Y: -532 Z: 9616
Estos valores se miden en modo + -16g con total precisión (así que básicamente tenemos 4mg / LSB). Estos valores están en mG (por ejemplo, un valor de 1000 representaría 1G). No entiendo bien por qué el valor Z es tan alto?
Inicializo el ADXL345 con este código:
write_command = ((0x00 | 0x31) << 8) | 0b01001011;//set SPI 3wire & 16g range & full-res
write_command = ((0x00 | 0x2D) << 8) | 0x08; //Enable measurements
Envío los valores a través de uart a un convertidor UART / USB. Los valores cambian si comienzo a mover la placa del sensor, así que creo que mi parte de lectura es correcta:
//read X-Axis
x0 = readRegister(0x80 | 0x32);
x1 = readRegister(0x80 | 0x33);
//read Y-Axis
y0 = readRegister(0x80 | 0x34);
y1 = readRegister(0x80 | 0x35);
//read Z-Axis
z0 = readRegister(0x80 | 0x36);
z1 = readRegister(0x80 | 0x37);
//convert in milli-G [4.0mg/LSB] in +/- 16g mode @ full-res
x = ((x1 << 8) | x0);
y = ((y1 << 8) | y0);
z = ((z1 << 8) | z0);
*x_val = x * 4;
*y_val = y * 4;
*z_val = z * 4;
¿Tiene alguna idea de lo que hago mal en la parte de procesamiento de datos?