10 votos

Recuperación de datos de un acelerómetro saturado

Tengo un Acelerómetro ADXL345 y lo monté en un cohete híbrido para lanzarlo. Por desgracia, olvidé ajustar el rango de su valor por defecto de +/-2g a +/-8g (esperábamos 6g durante el despegue).

Para el rango +/-2g, la hoja de datos indica una resolución de salida de 10 bits, y para +/-8g indica una resolución de 12 bits.

Me di cuenta de esto en la hoja de datos vinculada anteriormente, bajo el DATA_FORMAT (0x31):

El registro DATA_FORMAT controla el presentación de datos al registro 0x32 a través del registro 0x37. Todos los datos, excepto los del rango +/-16g, deben ser recortados para evitar el rollover. ( El énfasis es mío )

Basándome en esta afirmación y en el diagrama de bloques funcional (un sensor de 3 ejes se conecta a la "electrónica de detección", y luego se conecta a un ADC), espero que haya una forma de resolver los datos correctos. Los factores de escala se enumeran en la página 3 de la hoja de datos.

¿Hay alguna forma de resolver estos datos, al menos con una o dos cifras significativas? (Por ejemplo, tengo una detección de 1,9414g - esto debería ser alrededor de 6). No creo que el sensor saturado, simplemente el número en los registros de datos - y teniendo en cuenta los factores de escala y algunos creativos de cambio de bits (no es del todo claro cómo llegan de 10 a 12 bits al cambiar la resolución), espero que pueda recuperar algo útil de mis datos.

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..

7voto

Jeremy Ruten Puntos 59989

¿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

Genial, en cuanto recuperemos el cohete lo probaré. De momento hemos tenido que fletar un Cessna para ayudar a encontrarlo.. pero esperemos tener suerte.

0 votos

Parece que no podremos recuperar nuestro cohete, así que esta discusión es un poco discutible (sólo tengo un par de puntos de datos de la estación de tierra). Pero, ¡gracias!

0 votos

@davidcary, los Circuitos abiertos: Rocket Computer está roto

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X