Fiche technique LIS3DSH et note d’application AN339 – Interprétation des données de l’accéléromètre

KernelPanic

Fiche technique LIS3DSH et note d’application AN339 – Interprétation des données de l’accéléromètre


Je lis la fiche technique de l’accéléromètre LIS3DSH et j’ai des questions concernant le texte suivant:

2.2 Comprendre les données d’accélération

Les données d’accélération mesurées sont envoyées aux registres OUT_X_H, OUT_X_L, OUT_Y_H, OUT_Y_L, OUT_Z_H et OUT_Z_L. Ces registres contiennent respectivement la partie la plus significative et la partie la moins significative des signaux d’accélération agissant sur les axes X, Y et Z. IEA = 0 IEA = 1 Séquence de démarrage AN3393 14/100 Doc ID 018750 Rév 2 Les données d’accélération complètes pour le canal X (Y, Z) sont données par la concaténation OUT_X_H & OUT_X_L (OUT_Y_H & OUT_Y_L, OUT_Z_H & OUT_Z_L) et elles sont exprimé en nombre complémentaire de 2.

Maintenant, comme les lectures de l’accéléromètre sont de 16 bits, je sais que je dois fusionner les valeurs avec la fonction ET, comme il est indiqué dans la citation de la fiche technique?

Réponses


 alex.forencich

Non, pas ET, vous souhaitez utiliser OU. Vous avez besoin de quelque chose comme ça:

 int x = (((unsigned int) OUT_X_H) << 8) | ((unsigned int) OUT_X_L) int y = (((unsigned int) OUT_Y_H) << 8) | ((unsigned int) OUT_Y_L) int z = (((unsigned int) OUT_Z_H) << 8) | ((unsigned int) OUT_Z_L) 

Cela se déplacera sur l’octet haut puis sur OU les deux octets ensemble pour le résultat 16 bits. Même si le numéro à 16 bits est signé, vous devez faire la combinaison sur les numéros non signés afin de ne pas accidentellement signer quelque chose. Assurez-vous de ne pas confondre le MSB et le LSB! Il y a quelques jours à peine, j’ai aidé quelqu’un à déboguer ce problème exact – lecture à partir d’un accéléromètre et remontage accidentel des données de manière incorrecte.

KernelPanic

D’accord, mais si je débogue mon code et place un point d’arrêt sur les valeurs lues, les valeurs sont très différentes à chaque fois, mais la carte elle-même ne bouge pas, elle est sur la table? Pourquoi les données à chaque lecture sont-elles si différentes? Je voudrais allumer l’une des LED « direction » sur la carte de découverte STM32F4. Comment «interpréter» dans quel sens la planche est déplacée? Et pourquoi la fusion des données est ensuite décrite entre guillemets avec la fonction ET?

alex.forencich

Eh bien, il va y avoir pas mal de bruit. En outre, il y aura une accélération de 1 g dans une direction, à moins que vous ne soyez sur un satellite ou quelque chose. J’imagine que vous pourriez obtenir un peu de variance dans le LSB, mais le MSB devrait être relativement stable.

KernelPanic

Vous avez raison, MSB est assez stable. Maintenant, si je penche la planche vers la gauche, cela signifie qu’avec la main droite je fixe la planche et avec la main gauche je l’éloigne de mon corps, je devrais avoir un g négatif (valeur négative) sur l’axe z? Mon hypothèse est-elle juste?

alex.forencich

Aucune idée. Je ne sais pas dans quelle orientation la puce est montée. Je suggérerais d’orienter la carte dans différentes directions et de ne pas la bouger pour commencer. De cette façon, vous pouvez voir quand chaque axe pointe vers le haut ou vers le bas.

James Cameron

Oui, le bruit est attendu, vous devez appliquer la moyenne. Je connais la programmation de la série LIS3, nous les utilisons sur les ordinateurs portables OLPC XO-1.75 et XO-4. Une autre chose à laquelle vous devez faire attention est la lecture de l’échantillon à la suite d’une interruption, dans le délai avant que l’échantillon suivant ne soit verrouillé dans les registres. Si vous lisez simplement en boucle sans aucune synchronisation avec l’appareil, vous le rattraperez parfois entre les mises à jour. Mais si vous ne pouvez vraiment pas synchroniser, définissez une fréquence basse et ignorez les échantillons en double. wiki.laptop.org/go/Accelerometer

 

-, #de, #et, AN339, d’application, des, données), fiche, interprétation, l’accéléromètre, LIS3DSH, note, technique

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *