2016-11-27 1 views
0

Sur un appareil, je veux détecter une gamme de forces: de petites forces (minimum autour de 0,01 g) mais aussi des forces plus fortes comme 0,1 g - 0,15 g.Puis-je annuler la gravité uniquement avec un gyroscope et un magnétomètre?

Cet appareil aura différentes positions dans l'espace 3D, donc pour détecter les petites forces, je dois connaître son angle afin de pouvoir soustraire 1g. Parce que l'appareil peut avoir une position aléatoire (position angulaire). Ce que j'ai fait jusqu'à présent: J'ai utilisé le MPU6050 et utilisé un filtre complémentaire avec Accel. et gyro. Il est quelque chose comme:

agnleX_k+1 = 0.98*(angle_k + deltaT * gyro_k+1) + 0.02*angle_acc_k+1; 

angle_acc est l'angle calculé à partir du Accel. capteur. Quelque chose comme:

arctan(accelX/sqrt(accelX^2 + accelY^2 + accelZ^2 +)) 

Je suis intéressé par:

forceX_k+1 = accelX_k+1 - 1g*sin(agnleX_k+1) 

Le problème est:

Si je veux détecter une petite force venant très vite, disons que sur accelX_k+1 Je voudrais détecter un changement de 0g à 0.01g ou plus mais dans un très petit intervalle de temps. Le problème est que mon angle calculé serait alors également influencé par ce petit changement rapide de l'accélération. capteur bien que l'angle n'ait pas vraiment changé.

Je pense que je devrais faire le calcul d'angle indépendant de l'accel. capteur. Puis-je faire quelque chose comme un filtre complémentaire avec gyroscope et magnétomètre? Cela fonctionnerait-il de la même manière que mon filtre décrit ci-dessus mais juste avec le mag. capteur à la place? Ou comment feriez-vous cela? Je pensais à utiliser MPU9250.

Répondre

0

Vous avez déclaré utiliser MPU6050, qui contient à la fois un accéléromètre et un gyrosocpe. Vous pouvez les utiliser indépendamment - obtenir une accélération de l'accéléromètre et obtenir des angles à partir du gyroscope, puis utiliser les angles pour compenser la rotation. Il n'y a pas besoin que l'angle dépende de votre accéléromètre.