Recuperando datos de un acelerómetro saturado

10

Tengo un acelerómetro ADXL345 y lo monté en un cohete híbrido para lanzarlo. Desafortunadamente, olvidé establecer el rango de su valor predeterminado de +/- 2g a +/- 8g (esperábamos 6g durante el despegue).

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

Noté esto en la hoja de datos vinculada anteriormente, debajo del DATA_FORMATregistro (0x31):

El registro DATA_FORMAT controla la presentación de datos al registro 0x32 a través del registro 0x37. Todos los datos, excepto los del rango de +/- 16 g, deben recortarse para evitar que se vuelque. ( énfasis mío )

Según esta declaración y el diagrama de bloques funcional (un sensor de 3 ejes está conectado a "electrónica de detección", luego conectado a un ADC), espero que haya una manera de resolver los datos correctos. Los factores de escala se enumeran en la página 3 de la hoja de datos.

¿Hay alguna manera de resolver estos datos, al menos a 1 o 2 cifras significativas? (Por ejemplo, tengo una detección de 1.9414g, esto debería ser alrededor de 6). No creo que el sensor esté saturado, simplemente el número en los registros de datos, y dados los factores de escala y algunos cambios creativos de bits (no está del todo claro cómo pasan de 10 a 12 bits al cambiar la resolución), espero que pueda recuperar algo útil de mis datos.

Dang Khoa
fuente
Si traza sus datos suponiendo una pantalla de 2g con desplazamiento para ver los 2g inferiores de una palabra más larga, ¿cómo se ve el resultado? Para ascender g, debes ver una serie de dientes de sierra. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon
Lo intentaré una vez que recuperemos el cohete. Los datos que tengo son insuficientes ya que los perdimos detrás de una nube ...
Dang Khoa

Respuestas:

7

¿Qué valor almacenó realmente en "Registro 0x31 — DATA_FORMAT"?

Asumiré que no almacenó nada en ese registro, por lo que todavía está en su valor de reinicio de 00. En otras palabras, mientras recopilaba datos (de la Tabla 16 y también la página 17 de la hoja de datos ADXL345 ):

  • Regístrese 0x31 — DATA_FORMAT == 00.
  • FULL_RES == 0. Por lo tanto, el dispositivo está en modo de 10 bits, y los bits de rango determinan el rango g máximo y el factor de escala.
  • Justify Bit == 0. Modo justificado a la derecha con extensión de signo.
  • Los Bits de Rango == 00. Entonces + - 2g de rango.

Lo primero que haría es recuperar los valores originales de 16 bits como leídos desde el acelerómetro. (es decir, si arrojé descuidadamente los datos originales, y todo lo que me quedan son números en unidades de "g" que se calcularon restando algún desplazamiento y multiplicado por algún factor de escala incorrecto, copiaría los datos recopilados en un hoja de cálculo y dividir por ese mismo factor de escala (incorrecto) y luego agregar ese desplazamiento para tratar de recuperar algo cercano a los valores originales).

Luego graficaría los datos y vería si se parece más a "saturación", "lineal" o "roll-over" (como se describe a continuación).

La hoja de datos es enloquecedoramente vaga en cuanto a lo que sucede cuando el sensor experimenta una aceleración superior a 2 g.

diatriba tangencial

¿Te dije cuánto me molesta cuando los escritores técnicos insisten en escribir en voz pasiva? Cuando el escritor usa la voz pasiva en la oración que citó,

"Todos los datos, excepto los del rango de ± 16 g, deben recortarse para evitar vuelcos". (página 17)

No puedo decir exactamente quién se supone que debe hacer este recorte.

Muchas personas recomiendan usar 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áciles de entender , en lugar de usar un estilo que la gente ha sido engañada para que piense que suena "más profesional" o "más académico"?

recorte automático

Mi mejor conjetura es que el acelerómetro automáticamente hace este recorte.

saturación : si ve que la aceleración aumenta a través de valores plausibles, entonces se atasca misteriosamente en una meseta, saturando en o cerca de + 2g, entonces el acelerómetro recortó "útilmente" los datos por usted. Después del recorte, el valor "superior" ya no indica "una aceleración muy cercana a + 2g", pero ahora indica "una aceleración de al menos 2g, y posiblemente mucho, mucho más, no hay forma de saberlo".

Debido a que estaba en modo justificado a la derecha de 10 bits, cuando interpreto esos valores de 16 bits como enteros con signo normal de 16 bits, espero ver valores que van desde

  • 0x01FF = +511, indicando 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, que indica 1/256 g = 0.0039 g
  • 0x0000 = 0, indicando 0 g
  • 0xFFFF = -1, que indica -1/256 g = 0.0039
  • ...
  • 0xFE02 = -510, indicando -510/256 = -1.992 g
  • 0xFE01 = -511, indicando -511/256 = -1.996 g
  • 0xFE00 = -512, lo que indica algo más negativo -1.996 g. Posiblemente lejos, mucho más negativo.

(Sí, sé que 4 lugares decimales de precisión no están garantizados para este sensor). (He visto que algunos dispositivos se saturan en algún otro punto, como -511 o -510. Por lo general, puedo ver los datos y averiguar el punto de saturación real).

Puede recuperar algunos datos útiles de este conjunto de datos recortado. Puede usarlo para medir, por ejemplo, cuántos milisegundos la aceleración fue de al menos 1.5 g. Por desgracia, cuando ve las mesetas en este tipo de conjunto de datos, es imposible medir la aceleración máxima o el impulso total; lo mejor que puede hacer es decir: "bueno, sabemos que la aceleración máxima es de al menos 2 gy probablemente más ", y calcular" bien, calculamos que el impulso total es al menos (algo) newton * segundo ".

alternativas

Debería ser posible determinar si el acelerómetro se recorta o no de los datos. (Describí "saturación", "lineal" y "roll-over" en términos de aumento gradual; con algunos conjuntos de datos, puede ser más claro observar el descenso).

lineal : si ve que la aceleración aumenta a través de valores plausibles, continúe aumentando a valores más altos (valores superiores a 512 o más negativos que -512), entonces tuvo suerte: el acelerómetro en realidad no hizo ningún recorte, y Tiene datos válidos en todo el rango.

roll-over : si ve que la aceleración aumenta a través de valores plausibles, y justo antes de llegar a +2 g, salta instantáneamente a un valor no realista físicamente cerca de -2 gy luego continúa aumentando, posiblemente avanzando a través de cero, luego acercándose a + 2g nuevamente, y volviendo a saltar hacia abajo cerca de -2 g nuevamente, luego tiene un vuelco envolvente. Si tiene suerte, los valores cambian extremadamente suavemente, lo que hace posible detectar cada vuelco y "desenvolver" estos valores para recuperar la verdadera fuerza g.

ps: siéntase libre de editar Circuitos Abiertos: Rocket Computer .

davidcary
fuente
¡Excelente! Tan pronto como recuperemos el cohete, intentaré esto. A partir de ahora hemos tenido que alquilar un Cessna para ayudar a encontrarlo ... pero esperamos tener suerte.
Dang Khoa
Parece que no podremos recuperar nuestro cohete, por lo que esta discusión es un poco discutible (solo tengo un par de puntos de datos de la estación terrestre). ¡Pero gracias!
Dang Khoa
@davidcary, los circuitos abiertos: el enlace de Rocket Computer está roto
Mahendra Gunawardena
@MahendraGunawardena: Gracias por decírmelo. ¿Está funcionando ahora?
davidcary