¿Qué valor ha almacenado realmente en el "Registro 0x31-DATA_FORMAT"?
Voy a suponer que no has almacenado nada en ese registro, por lo que todavía está en su valor de reinicio de 00. En otras palabras, mientras estabas recogiendo datos (de la Tabla 16 y también de la página 17 del Hoja de datos de ADXL345 ):
- Registro 0x31-DATA_FORMAT == 00.
- El FULL_RES == 0. Así que el dispositivo está en modo de 10 bits, y los bits de rango determinan el rango máximo de g y el factor de escala.
- El bit de justificación == 0. Por tanto, modo justificado a la derecha con extensión de signo.
- Los Bits de Rango == 00. Así que +- 2g de rango.
Lo primero que haría es recuperar los valores originales de 16 bits tal y como los lee el acelerómetro. (es decir, si he tirado por descuido los datos originales y todo lo que me queda son números en unidades de "g" que fueron calculados por restando algún desplazamiento y multiplicado por algún factor de escala incorrecto, copiaría los datos recogidos en una hoja de cálculo y dividir por ese mismo factor de escala (incorrecto) y luego añadir ese desplazamiento para tratar de recuperar algo cercano a los valores originales).
A continuación, graficaría los datos y vería si se parece más a la "saturación", a lo "lineal" o al "roll-over" (como se describe a continuación).
La hoja de datos es tremendamente vaga en cuanto a lo que ocurre cuando el sensor experimenta una aceleración superior a 2 g.
despotricar tangencialmente
¿Te he dicho cuánto me molesta que los escritores técnicos insistan en escribir en voz pasiva? Cuando el escritor utiliza la voz pasiva en la frase que has citado,
"Todos los datos, excepto los del rango de ±16 g, deben ser recortados para evitar el vuelco". (página 17)
No puedo decir quién exactamente se supone que hace este recorte.
Muchos la gente recomienda utilizar la voz activa . Cuando sigo esas recomendaciones, mi texto suele ser más claro en cuanto a quién hace qué. ¿No es mejor cuando escribo cosas que son más fácil de entender , en lugar de utilizar un estilo que la gente ha sido engañada para que suene "más profesional" o "más erudito"?
recorte automático
Mi mejor suposición es que el acelerómetro hace automáticamente este recorte.
saturación : Si ves que la aceleración sube a través de valores plausibles, y luego se queda misteriosamente atascado en una meseta, saturando en o cerca de +2g, entonces el acelerómetro ha recortado los datos por ti. Después del recorte, el valor "superior" ya no indica "una aceleración muy cercana a +2g", sino que ahora indica "una aceleración de al menos 2g, y posiblemente mucho, mucho más - no hay manera de saberlo".
Como estaba en modo de 10 bits justificados a la derecha, cuando interpreto esos valores de 16 bits como enteros normales de 16 bits con signo, espero ver valores que van desde
- 0x01FF = +511, lo que indica más de 1,992 g. Posiblemente mucho, mucho más.
- 0x01FE = +510, lo que indica 510/256 g ~= 1,992 g
- 0x01FD = +509, lo que indica 510/256 g ~= 1,988 g
- ...
- 0x0001 = +1, lo que indica 1/256 g = 0,0039 g
- 0x0000 = 0, indicando 0 g
- 0xFFFF = -1, lo que indica -1/256 g = 0,0039
- ...
- 0xFE02 = -510, lo que indica -510/256 = -1,992 g
- 0xFE01 = -511, lo que indica -511/256 = -1,996 g
- 0xFE00 = -512, indicando algo más negativo -1,996 g. Posiblemente mucho, mucho más negativo.
(Sí, ya sé que la precisión de 4 decimales es injustificada para este sensor). (He visto que algunos dispositivos se saturan en algún otro punto, como -511 o -510. Normalmente puedo mirar los datos y averiguar el punto de saturación real).
Puedes recuperar algunos datos útiles de este conjunto de datos recortados. Se puede utilizar para medir, por ejemplo, en cuántos milisegundos la aceleración fue de al menos 1,5 g. Por desgracia, cuando se ven las mesetas en este tipo de conjunto de datos, es imposible medir la aceleración máxima o el impulso total; lo mejor que se puede hacer es decir: "bueno, sabemos que la aceleración máxima es al menos 2g y probablemente más", y calcular "bueno, calculamos que el impulso total es al menos (algo) newton*segundo".
alternativas
Debería ser posible averiguar si el acelerómetro hace clipping o no a partir de los datos. (He descrito la "saturación", la "linealidad" y el "roll-over" en términos de la rampa de subida; con algunos conjuntos de datos, puede ser más claro mirar la rampa de bajada).
lineal : Si ves que la aceleración sube a través de valores plausibles, y luego continúa subiendo a valores más altos (valores por encima de 512, o más negativos que -512), entonces has tenido suerte - el acelerómetro no ha hecho ningún recorte, y tienes datos válidos en todo el rango.
rollover : Si ves que la aceleración sube a través de valores plausibles, y justo antes de que llegue a +2 g, salta instantáneamente a un valor no físicamente realista cerca de -2 g y luego continúa subiendo - posiblemente pasando por cero, luego acercándose a +2 g de nuevo, y saltando de nuevo cerca de -2 g - entonces tienes una envoltura de vuelco. Si tienes suerte, los valores cambian de forma extremadamente suave, haciendo posible detectar cada vuelco y "desenvolver" estos valores para recuperar la verdadera fuerza g.
p.d.: siéntase libre de editar Circuitos abiertos: Ordenador Cohete .
0 votos
Si trazas tus datos asumiendo una pantalla de 2g con roll over para que veas los 2g inferiores de una palabra más larga, cómo se ve el resultado. Para la g ascendente, se espera ver una serie de dientes de sierra. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
0 votos
Lo intentaré una vez que recuperemos el cohete. Los datos que tengo son insuficientes ya que lo perdimos detrás de una nube..