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_FORMAT
registre (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.
la source
Réponses:
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 ):
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,
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
(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 .
la source