Récupération des données d'un accéléromètre saturé


10

J'ai un accéléromètre ADXL345 et je l'ai monté sur une fusée hybride pour le lancement. Malheureusement, j'ai oublié de régler la plage de sa valeur par défaut de +/- 2g à +/- 8g (nous nous attendions à 6g pendant le décollage).

Pour une plage de +/- 2 g, la fiche technique répertorie une résolution de sortie de 10 bits, et pour +/- 8 g, elle répertorie une résolution de 12 bits.

J'ai remarqué cela dans la fiche technique liée ci-dessus, sous le DATA_FORMATregistre (0x31):

Le registre DATA_FORMAT contrôle la présentation des données du registre 0x32 au registre 0x37. Toutes les données, à l'exception de celles de la plage +/- 16 g, doivent être écrêtées pour éviter le retournement. (c'est moi qui souligne )

Sur la base de cette déclaration et du schéma fonctionnel (un capteur 3 axes est connecté à "l'électronique de détection", puis connecté à un ADC), j'espère qu'il existe un moyen de résoudre les données correctes. Les facteurs d'échelle sont répertoriés à la page 3 de la fiche technique.

Existe-t-il un moyen de résoudre ces données, au moins à 1 ou 2 chiffres significatifs? (Par exemple, j'ai une détection de 1,9414 g - cela devrait être d'environ 6). Je ne pense pas que le capteur soit saturé, simplement le nombre dans les registres de données - et étant donné les facteurs d'échelle et certains décalages créatifs (il n'est pas totalement clair comment ils passent de 10 à 12 bits lors du changement de résolution), j'espère que je peux récupérer quelque chose d' utile à partir de mes données.


Si vous tracez vos données en supposant un affichage 2g avec survol afin de voir le bas 2g d'un mot plus long, à quoi ressemble le résultat. Pour remonter, vous pouvez voir une série de dents de scie. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon

Je donnerai un coup de feu une fois que nous aurons récupéré la fusée. Les données dont je dispose sont insuffisantes car nous les avons perdues derrière un nuage ..
Dang Khoa

Réponses:


7

Quelle valeur avez-vous réellement stockée dans "Register 0x31 — DATA_FORMAT"?

Je vais supposer que vous n'avez rien stocké dans ce registre, il est donc toujours dans sa valeur de réinitialisation de 00. En d'autres termes, pendant que vous collectiez des données (du tableau 16 et également de la page 17 de la fiche technique ADXL345 ):

  • Enregistrez 0x31 - DATA_FORMAT == 00.
  • FULL_RES == 0. Le périphérique est donc en mode 10 bits et les bits de plage déterminent la plage g maximale et le facteur d'échelle.
  • Le bit Justify == 0. Donc, mode justifié à droite avec extension de signe.
  • Les Range Bits == 00. Donc + - 2g range.

La première chose que je ferais serait de récupérer les valeurs 16 bits d'origine telles que lues sur l'accéléromètre. (c.-à-d., si j'ai jeté négligemment les données originales et qu'il ne me reste que des nombres en unités de "g" qui ont été calculés en soustrayant un décalage et multipliés par un facteur d'échelle incorrect, je copierais les données collectées dans un feuille de calcul et divisez par ce même facteur d'échelle (incorrect), puis ajoutez ce décalage pour essayer de récupérer quelque chose proche des valeurs d'origine).

Ensuite, je représenterais graphiquement les données et voir si cela ressemble plus à "saturation", "linéaire" ou "roll-over" (comme décrit ci-dessous).

La fiche technique est incroyablement vague quant à ce qui se passe lorsque le capteur subit une accélération supérieure à 2 g.

diatribe tangentielle

Est-ce que je vous ai dit à quel point cela m'ennuie quand les rédacteurs techniques insistent pour écrire à la voix passive? Lorsque l'auteur utilise la voix passive dans la phrase que vous avez citée,

"Toutes les données, à l'exception de celles de la plage ± 16 g, doivent être écrêtées pour éviter le retournement." (page 17)

Je ne peux pas dire exactement qui est censé faire cette coupure.

Beaucoup de gens recommandent d'utiliser la voix active . Lorsque je suis ces recommandations, mon texte est généralement plus clair quant à qui fait quoi. N'est-ce pas mieux quand j'écris des choses qui sont plus faciles à comprendre , plutôt que d'utiliser un style que les gens ont été trompés en pensant des sons "plus professionnels" ou "plus savants"?

écrêtage automatique

Ma meilleure supposition est que l'accéléromètre effectue automatiquement cet écrêtage.

saturation : si vous voyez l'accélération s'accélérer à travers des valeurs plausibles, puis rester mystérieusement coincé sur un plateau, saturant à ou près de + 2g, alors l'accéléromètre a "utilement" coupé les données pour vous. Après l'écrêtage, la valeur "top" n'indique plus "une accélération très proche de + 2g", mais indique désormais "une accélération d'au moins 2g, et peut-être beaucoup plus - il n'y a aucun moyen de le savoir".

Parce qu'il était en mode 10 bits justifié à droite, lorsque j'interprète ces valeurs 16 bits comme des entiers signés normaux 16 bits, je m'attends à voir des valeurs allant de

  • 0x01FF = +511, indiquant plus de 1,992 g. Peut-être beaucoup, beaucoup plus.
  • 0x01FE = +510, indiquant 510/256 g ~ = 1,992 g
  • 0x01FD = +509, indiquant 510/256 g ~ = 1,988 g
  • ...
  • 0x0001 = +1, indiquant 1/256 g = 0,0039 g
  • 0x0000 = 0, indiquant 0 g
  • 0xFFFF = -1, indiquant -1/256 g = 0,0039
  • ...
  • 0xFE02 = -510, indiquant -510/256 = -1,992 g
  • 0xFE01 = -511, indiquant -511/256 = -1,996 g
  • 0xFE00 = -512, indiquant quelque chose de plus négatif -1,996 g. Peut-être bien, beaucoup plus négatif.

(Oui, je sais que 4 décimales de précision ne sont pas garanties pour ce capteur). (J'ai vu certains appareils saturer à un autre moment, comme -511 ou -510. Je peux généralement regarder les données et déterminer le point de saturation réel).

Vous pouvez récupérer des données utiles à partir de cet ensemble de données tronquées. Vous pouvez l'utiliser pour mesurer, par exemple, combien de millisecondes l'accélération était d'au moins 1,5 g. Hélas, lorsque vous voyez les plateaux dans ce type de jeu de données, il est impossible de mesurer l'accélération maximale ou l'impulsion totale - le mieux que vous puissiez faire est de dire: «Eh bien, nous savons que l'accélération maximale est d' au moins 2 g et probablement plus ", et calculons" eh bien, nous calculons que l'impulsion totale est au moins (quelque chose) newton * seconde ".

alternatives

Il devrait être possible de déterminer si l'accéléromètre écrête ou non à partir des données. (J'ai décrit la "saturation", "linéaire" et "roll-over" en termes de montée en puissance - avec certains ensembles de données, il peut être plus clair de regarder la rampe de descente à la place).

linéaire : si vous voyez l'accélération s'accélérer à travers des valeurs plausibles, puis continuer à augmenter vers des valeurs plus élevées (valeurs supérieures à 512, ou plus négatives que -512), alors vous avez de la chance - l'accéléromètre n'a pas fait d'écrêtage, et vous disposez de données valables sur toute la gamme.

roll-over : si vous voyez l'accélération s'accélérer à travers des valeurs plausibles, et juste avant qu'elle n'atteigne +2 g, elle saute instantanément à une valeur non réaliste physiquement près de -2 g et continue ensuite à augmenter - peut-être par zéro, puis approchant à nouveau + 2g, et sautant à nouveau près de -2 g - alors vous avez un bouclage par retournement. Si vous êtes chanceux, les valeurs changent de façon extrêmement fluide, ce qui permet de détecter chaque retournement et de "déballer" ces valeurs pour récupérer la vraie force g.

ps: n'hésitez pas à éditer Open Circuits: Rocket Computer .


génial! dès que nous récupérons la fusée, je vais essayer cela. À partir de maintenant, nous avons dû affréter un Cessna pour aider à le trouver .. mais j'espère que nous aurons de la chance.
Dang Khoa

On dirait que nous ne pourrons pas récupérer notre fusée, donc cette discussion est un peu théorique (je n'ai que quelques points de données de la station au sol). Mais merci!
Dang Khoa

@davidcary, les circuits ouverts: le lien entre Rocket Computer est rompu
Mahendra Gunawardena

@MahendraGunawardena: Merci de me l'avoir dit. Est ce que ça marche maintenant?
davidcary
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.