calculer l'inclinaison à l'aide d'un accéléromètre?


16

J'ai un accéléromètre ADXL203 d'appareils analogiques sur une carte d'extension et je voulais l'utiliser pour mesurer l'inclinaison de certains équipements à une fréquence raisonnablement élevée (20-30 Hz). je le connecte à un enregistreur campbells cr3000 pour faire la détection. Quelqu'un at-il des instructions sur la façon d'interpréter les sorties du capteur? Merci


Merci à tous pour vos commentaires. salutations très utiles TROY
troy jensen

Je sais que j'ai le plus haut, mais si vous n'aimez pas le mien, au moins accepte celui de quelqu'un.
Kortuk

Réponses:


12

J'ai un certain nombre de choses à dire ici, et certaines d'entre elles impliquent d'accord avec pingswept et d'autres avec penjuin.

cr3000

L'échantillonnage cr3000 à 16 bits et 100 Hz va être un échantillonnage un peu lent pour que vous puissiez facilement supprimer le bruit de vos données, mais avec une précision nettement supérieure, il sera utilisable. Je doute que vous puissiez obtenir 13 ou 14 bits de précision sans de très bons algorithmes de filtrage. Les accéléromètres m'ont appris que la vibration est le diable, les phonons foudroyés.

Condensateur de sortie

Vous devez vous assurer de faire ce que dit la fiche technique et la théorie du signal. Pour citer la fiche technique:

La sortie de l'ADXL103 / ADXL203 a une bande passante typique de 2,5 kHz. L'utilisateur doit filtrer le signal à ce stade pour limiter les erreurs d'alias. La largeur de bande analogique ne doit pas dépasser la moitié de la fréquence d'échantillonnage analogique-numérique pour minimiser le repliement. La bande passante analogique peut être encore diminuée pour réduire le bruit et améliorer la résolution.

Cela signifie que vous devez choisir un condensateur pour maintenir votre taux en dessous de 50 Hz. Si vous le placez au-dessus de cela, vous pouvez obtenir un aliasing, et l'aliasing fait du bruit de vibration un diable avec lequel vous avez signé un accord. Ils indiquent comment calculer les niveaux de bruit de l'appareil, et à une bande passante de 50 Hz, un bruit de crête à crête de 0,006 * La gravité ne sera même pas remarquée si vous l'avez sur un appareil avec des vibrations.

Interprétation des données

C'est probablement ce qui vous intéresse le plus et c'est relativement facile à faire. Vous devez marquer une heure à laquelle l'appareil est au neutre, c'est-à-dire lorsqu'il est plat et que vous l'avez relativement immobile. Donnez-lui une seconde ou deux à ce stade, puis vous pouvez prendre la médiane de ces données pour déterminer la tension sans G. Ensuite, vous pouvez l'utiliser comme un point auquel vous comparez l'appareil. Maintenant, à partir de ce point, je peux citer directement la fiche technique:

Lorsque l'accéléromètre est perpendiculaire à la gravité, sa sortie change de près de 17,5 mg par degré d'inclinaison .

Donc, vous pouvez simplement utiliser cette approximation si vous n'inclinez pas beaucoup, mais vous devrez utiliser la géométrie si vous prévoyez d'incliner dans les deux sens et dans des angles qui ne sont pas extrêmement petits.

Si vous allez agrandir, ils ont même les équations énoncées comme suit:

PAS = ASIN (AX / 1 g)
ROULEAU = ASIN (AY / 1 g)

Autant que je peux, votre appareil donne un changement de 1V par 1G d'accélération placé dessus. Si vous avez effectué la phase de calibrage, vous devriez être en mesure de prendre des mesures, de soustraire le décalage et vous avez le nombre de G expérimentés.

Arrêtez de lire ici, sauf si vous rencontrez des problèmes ou si vous souhaitez plus d'informations pour améliorer l'approche.

J'ai ajouté un peu plus de détails sur d'autres approches et méthodes pour améliorer votre approche pour les systèmes à changement rapide ou les systèmes où vous allez programmer l'appareil effectuant les échantillons.

Fréquence d'échantillonnage

Vous devez échantillonner beaucoup plus rapidement que la vitesse à laquelle votre appareil change les directions dans lesquelles il accélère, car vous devez mesurer l'orientation 20 à 30 fois par seconde. vous devez être capable de mesurer assez rapidement pour filtrer le bruit de vibration et l'accélération due à d'autres effets, que j'ai trouvé assez importants lorsque vous travaillez avec un accéléromètre.

Accéléromètre 3 axes

Deuxièmement, si vous avez un accéléromètre à trois axes, vous pouvez facilement reconnaître quand un axe perd une partie de l'accélération en raison de la gravité (c.-à-d. Lorsque l'axe z a sa chute de magnitude de 2 m / s ^ 2, vous savez que le gain que vous avez vu sur l'autre axe est la gravité). Ce sera toujours compliqué, mais en général, il y aura un ajout d'accélération qui donne la vitesse nécessaire pour changer votre orientation, puis un changement d'accélération dû au changement d'orientation, vous permettant souvent de reconnaître l'orientation.

Problèmes avec 2 axes

Cela va être, comme Penjuin l'a dit, presque impossible avec un accéléromètre à 2 axes, et au mieux sommaire si vous avez un système qui peut avoir 20-30 orientations différentes par seconde, ou si vous avez besoin d'avoir une mesure exacte de l'orientation à chaque fois. Je suis sûr qu'un étudiant à la maîtrise pourrait rédiger une assez belle thèse à ce sujet, ou un doctorat pourrait rédiger une thèse sur l'amélioration de cet algorithme.

Bruit de vibration

Pour en ajouter plus, si vous pouvez placer votre appareil au-dessus de quelque chose qui le maintiendra statiquement verrouillé au mouvement de votre appareil, mais amortit les vibrations, vous obtiendrez de bien meilleurs chiffres et n'aurez pas besoin d'autant de filtrage logiciel. Un rembourrage de type mousse simple peut être placé entre l'accéléromètre et votre appareil, et s'il est numérique, cela ne devrait pas augmenter le bruit électrique et aider à absorber certains bruits de vibration. Cela ne doit être fait que si vous voyez des problèmes de bruit de vibration.

Accéléromètre numérique

Je suggérerais un accéléromètre numérique auquel vous pouvez utiliser SPI pour vous connecter. Les données peuvent être cadencées à un rythme très très élevé et vous pouvez travailler en arrière-plan pendant que votre SPI effectue le travail constant de chargement de l'ensemble de valeurs suivant. Vous aurez besoin d'un joli microcontrôleur si cela doit être fait numériquement. Si vous pouvez me donner de meilleurs détails sur ce que vous voulez faire, je peux donner de meilleurs commentaires. Si vous voulez un avertissement basé sur la détection d'inclinaison, cela devrait être très facile à faire avec tous les analogiques, mais si vous voulez mesurer la position et l'angle de l'équipement pendant le fonctionnement, préparez-vous pour certains travaux.

Veuillez me faire savoir s'il y a quelque chose que je peux ajouter pour rendre cette réponse plus claire ou applicable à ce que vous cherchiez.


1
Pour mémoire, cette réponse est épique.
pingswept

1
Dr. Kortuk, Ph.D en accéléromètres! :-)
Jay Atkinson

J'ai écrit cette réponse parce que je n'arrêtais pas de penser que j'avais oublié quelque chose, puis j'ai réalisé que c'était un peu long, et j'ai ajouté la réponse très rapide, mais il semble que les gens préfèrent la réponse longue.
Kortuk

En ce qui concerne le bruit de vibration, j'ai peut-être eu une plus grande quantité pendant le temps de fonctionnement en raison de la présence d'un moteur Brushless DC (BLDC), mais avant qu'il ne soit allumé, il y avait encore des chiffres de vibration importants.
Kortuk

3

J'ai écrit et réécrit cette réponse plusieurs fois avec de nombreuses idées mathématiques folles, mais honnêtement, je ne pense pas que cela puisse être fait avec précision. Vous pouvez faire quelques calculs vectoriels, mais que faire si:

  • L'objet cesse de bouger
  • L'objet a une vitesse constante
  • L'objet frappe une bosse / vous la cognez
  • La force générée en remontant l'inclinaison est inférieure à la résolution de l'axe Z

Bien que je sois sûr qu'il existe une solution de contournement folle pour faire ce genre de chose, je ne suis pas sûr que cela en vaille la peine; les accéléromètres ne sont tout simplement pas conçus pour cette tâche (du moins à ma connaissance). Pour ce que vous essayez de réaliser, je suggérerais une approche gyroscopique utilisant n'importe lequel de ces éléments , qui seraient tous assez résistants à tous les problèmes ci-dessus.


Les accéléromètres sont conçus pour cela, il y a une section entière sur la façon de le faire. Les accéléromètres sont très très peu coûteux dans de nombreux cas et parfois le coût est un problème plus important que la fonctionnalité parfaite.
Kortuk

3
J'essaie toujours d'expliquer cela aux étudiants et je vais l'ajouter ici parce que je pense que c'est un concept important. L'ingénierie ne consiste pas toujours à le faire de la meilleure façon, il s'agit de le faire de telle manière que l'utilisateur ne puisse faire la différence dans rien sauf le prix.
Kortuk

2
Il y a quelque chose à dire pour le faire en premier, et il y a beaucoup à dire pour le faire mieux que le dernier gars.
Kortuk

Je suis d'accord, mais cela dépend de vos motivations (ce que troy n'a pas indiqué); voulez-vous que cela fonctionne bien, ou voulez-vous apprendre? Ils ne s'excluent pas nécessairement mutuellement, mais vous n'écririez pas votre propre compilateur juste pour faire clignoter une LED, sauf si vous vouliez spécifiquement en savoir plus sur la conception du compilateur.
penjuin

Oui, j'ajoute que pour discuter de votre réponse, en général, s'il doit être capable de dire une orientation différente 30 fois par seconde, il va y avoir des accélérations gigantesques, ce qui signifie que vous avez besoin de plus de 100 échantillons par seconde.
Kortuk

3

Si je comprends bien la fiche technique, la sortie de chaque axe variera entre 1,5 V et 3,5 V lorsque vous inclinez autour de l'axe. Lorsque l'appareil est plat (en ignorant l'erreur d'alignement du boîtier de ± 1 degré), les deux sorties doivent lire 2,5 V.

Si vous avez seulement besoin de mesurer l'inclinaison dans une direction, vous pouvez prendre l'arc sinus de l'écart de 2,5 V pour obtenir l'angle en radians, puis convertir en degrés. Si l'appareil peut s'incliner dans n'importe quelle direction, vous pouvez calculer les deux angles, puis calculer l'angle composé à partir de ceux-ci.

Pour être explicite: angle autour d'un axe = (180 / π) * arcsin (Vout - 2,5)

Pour obtenir une bonne réponse en fréquence, vous aurez besoin de petits condensateurs de sortie, Cx et Cy. De la note de bas de page 6 à la p. 3 de la fiche technique, il semble que 0,02 uF vous donnerait une bande passante de 250 Hz, ce qui est probablement à peu près adapté à votre fréquence d'échantillonnage. Vous pourriez peut-être aller jusqu'à 0,1 uF, limitant la bande passante à 50 Hz, mais vos signaux commenceront à s'atténuer.


Je ne pense pas que cela atténuera les signaux, sauf si vous faites référence aux fréquences plus élevées, ce qui est le point de la limite. Il doit aller à 50 Hz ou moins pour correspondre à son dispositif d'échantillonnage de données.
Kortuk

1
Ah, je n'y avais pas pensé du point de vue de l'aliasing. Je pense toujours que les grandes majuscules atténueront les signaux haute fréquence, mais c'est en fait une bonne chose dans ce cas. Alors oui, régler la bande passante autour de 50 Hz est bon.
pingswept

3

J'ajoute une deuxième réponse, parce que mon autre est grande, et vous voudrez peut-être simplement simple.

Votre capuchon de filtre doit être de 0,10 uF ou plus pour vous maintenir en dessous de votre taux de crénelage (50 Hz). Vous devez donner une phase d'étalonnage de quelques secondes avec votre appareil assis au niveau avec toute l'accélération de la gravité dans la direction Z, ceci pour déterminer votre point G zéro.

La tension que vous mesurez pour votre point G zéro, elle sera probablement différente pour les directions X et Y, ne représente rien. Prenez simplement la tension que vous obtenez et soustrayez-la. Cette tension, avec décalage soustrait, est le nombre de G que vous obtenez dans cette direction.

Prenez l'arc-en-ciel et vous obtiendrez votre angle dans cette direction.

Cela ignore le bruit et les autres accélérations. préparez-vous à ce que NaN soit un résultat si vous l'avez complètement incliné et qu'il y a du bruit.


0

Pour obtenir n'importe quel angle, vous devez mesurer l'accélération de la gravité dans les deux directions X et Y. soustrayez la tension moyenne (2,5 V) de sorte que zéro signifie «pas d'accélération».

Vous pouvez maintenant trouver l'angle avec arcsin (y / x). Mais c'est ennuyeux à utiliser, à cause de la division, et parce que le signe est ambigu, donc ce que vous voulez vraiment la fonction C atan2 (y, x). atan2 () obtient le bon signe pour tous les 360 degrés.


Hors sujet, puisque vous n'utilisez pas de micro: si vous cherchez atan2 () à utiliser sur un microcontrôleur, il y a un générateur atan2 () sur mon site: http://vivara.net/cgi-bin/ cordic.cgi


Ce n'est pas un 2,5 V garanti pour 0G. étant donné qu'il utilisera probablement un ordinateur pour faire les calculs, je doute que la méthode qu'il utilise pour effectuer les calculs soit importante.
Kortuk
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.