MPU-6050 pour mesurer un angle
Le MPU-6050
Le MPU-6050 intègre un capteur de température, un accéléromètre et un gyroscope.
Il ne restitue pas la valeur de l'angle d'inclinaison, il faut donc utiliser les outils mathématiques pour le déduire.
Les informations du capteur s'obtiennent grâce à un bus I2C.
On connectera dans cette application le MPU-6050 au Raspberry PI 2.
La capteur est monté sur une carte GY521 dont les caractéristiques sont :
C'est le protocole I2C qui va permettre le dialogue entre la carte du capteur et le RaspBerry.
Voir les phases de paramétrages du port I2C.
Principes de mesure de l'angle
Accéléromètre
Un accéléromètre mesure une accélération (mouvement, choc, etc...). Lorsque l'objet est statique, la valeur de l'accélération est limitée à la gravité et on peut dans ce cas là, mesurer l'inclinaison d'un objet soumis à la gravité en analysant l'accélération selon les axes x, y et z..
En simplifiant le problème à deux axes, on obtient :
θ=arc tg (x/y)
Dans l'espace, il faut considérer les trois axes. Pour l'angle en X il faudra utiliser l'accélération en X et le module des accélération en Y et Z.
Ce qui donne :
Mais le moindre choc ou vibration rend la mesure d'angle instable.
Gyroscope
Le gyroscope mesure une vitesse angulaire en radians.s-1.
Pour obtenir l'angle de rotation, il est donc nécessaire d'intégrer chaque vitesse angulaire en lui rajoutant la constante initiale.
Le gyroscope rend la valeur Gx pour l'axe X
Gx = dAngleX / dt
donc dAngleX = Gx . dt
Si l'objet ne bouge pas Gx=0
Donc l'angle est AngleX = AngleXinitial + dAngleX
Mais les résultats du gyroscope dérivent dans le temps....
Filtre
Pour limiter l'effet des variations rapides de l'accéléromètre et des variations lentes du gyroscope, on utilise un filtre de Kalman qui pondère chacune des mesures :
Angle=(0.04*angle accéléromètre) +(0.96*angle gyroscope);
Connexions
Réaliser ces branchements hors tension.
Lorsqu'ils sont réalisés, à la mise sous tension, le Raspberry doit s'initialiser normalement et la diode de contrôle de la carte GY521 doit s'allumer.
Tests et programmation
Le document technique du circuit MPU6050 décrit les adresses des registres permettant d'accéder aux données :
Ainsi on peut obtenir la donnée relative à l'axe Ox du gyroscope, en saisissant cette commande dans une fenêtre du terminal :
sudo i2cget -y 1 0x68 0x43
Remarque 1
Sur la sérigraphie de la carte GY521 est X et Y sont inversés.
Remarque 2
De légères modifications de cette documentation permettrait l'usage de la Wii qui utilise un capteur de ce type.
Remarque 3
Un programme d'exemple en C++ est disponible dans le chapitre se rapportant à WiringPi
Programme de gestion du MPU-6050 (GY251)