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 axe où degré 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
https://diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/