Centrale inertielle

Une centrale inertielle (on dit souvent IMU : Inertial Measurement Unit) désigne un ensemble de capteurs destiné à fournir des informations d’orientation et de position dans l’espace :

Les capteurs, de technologie MEMS le plus souvent, sont :

  • accéléromètres : donnent des accélérations
  • gyroscopes : donnent des vitesses angulaires
  • compas : donnent l’orientation par rapport au champ magnétique terrestre

Chacune des informations collectées est appelée axedegré de liberté (DOF en anglais).

Certaines centrales inertielles sont dotées d’algorithmes complexes (filtres de Kalman, …) capables d’intégrer les mouvements d’un mobile (accélération et vitesse angulaire) pour estimer son orientation (angles de roulis, de tangage et de cap ou lacet), sa vitesse linéaire et sa position.

Encore largement utilisées en navigation (aviation, …) leurs principale limite est que l’estimation de position est relative au point de départ ou au dernier point de recalage.

 

Matériel testé : Sparkfun MPU6050

Bibliothèque : https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

Il s’agit d’une centrale à 6 degrés de liberté (3 accélérations et 3 vitesses angulaires).

Le principal atout de cette centrale inertielle est qu’elle possède son propre processeur de mouvement (Motion Processor™ : DMP™), qui traite en temps réel les données brutes pour en extraire les données d’orientation.

Câblage

Sur le modèle de Sparkfun, il est spécifié qu’il doit être alimenté en 3,3V.

Il faut utiliser les ports de communication I2C (sur un Arduino UNO, ce sont par défaut A5 = SCL et A4 = SDA).

Le programme fourni par la bibliothèque utilise également une interruption (sur un Arduino UNO, l’interruption 0 et liée au port D2)

Programmation

Calibration

Pour obtenir des résultats les plus justes possibles, il est nécessaire de procéder à une calibration du capteur.

  • Câbler, mettre sous tension le capteur, et attendre quelques minutes pour que sa température soit stabilisée.
  • Ouvrir l’exemple IMU_Zero
  • Téléverser ce programme
  • Ouvrir le moniteur série (réglé sur 9600 bauds)

La calibration commence ………

L’avant dernière ligne montre les « meilleures » valeurs pour les offsets des capteurs :

XAccel                       YAccel                        ZAccel                           XGyro                 YGyro                   ZGyro
[-2395,-2394] --> [-5,10]    [-2967,-2966] --> [-10,11]    [1635,1636] --> [16377,16395]    [32,33] --> [-2,1]    [-11,-10] --> [-2,1]    [7,8] --> [-2,2]

Relever ces valeurs afin de les intégrer au programme de mesure (voir plus loin).

mpu.setXGyroOffset(32);
mpu.setYGyroOffset(-11);
mpu.setZGyroOffset(7);
mpu.setZAccelOffset(1635);

 

Mesure des angles

Le programme suivant est une version simplifiée de l’exemple fourni dans la bibliothèque : MPU6050_DMP6

 

 

Pour en savoir plus

IMU Interfacing Tutorial: Get started with Arduino and the MPU 6050 Sensor!

Arduino Uno and the InvenSense MPU6050 6DOF IMU

sources : https://fr.wikipedia.org/wiki/Centrale_à_inertie

Vous aimerez aussi...

Laisser un commentaire

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