Aller au contenu

Rechercher

Panier 0 Produit Produits (vide)

Aucun produit

À définir Livraison
0,00 € Total

Commander

Centrale inertielle MPU-6050 avec Arduino

Centrale inertielle MPU-6050 avec Arduino

Objectifs : apprendre à se servir d'une centrale inertielle 6 axes, le MPU-6050.

Difficulté : 2/5

Temps d'exécution : 20 min

Matériel nécessaire :

Une centrale inertielle, Inertial Measurement Unit (IMU) en anglais, est un capteur capable d'estimer la position d'un objet mobile grâce à ses mouvements. Le MPU-6050 est équipé d'un accéléromètre 3 axes ainsi que d'un gyromètre 3 axes. Il peut être utilisé dans beaucoup de projets comme pour stabiliser un drone en vol ou bien retransmettre les mouvements d'une main à un logiciel de simulation par exemple.

Ci-dessus, une centrale inertielle est utilisée pour contrôler un personnage dans un jeu vidéo à partir des mouvements de la main du joueur ou pour faire un robot équilibriste, le Crabeel.

A propos du MPU-6050 :

Cette IMU permet de connaitre les angles d'orientation d'un robot en intégrant les vitesses de rotations suivant les 3 axes détectés grâce au gyromètre. De plus, il possède un algorithme de fusion des valeurs de l'accéléromètre et du gyromètre, ce qui permet d'avoir des résultats plus fiables !

Le MPU-6050 est fourni avec deux types de broches, vous pouvez donc choisir entre celles droites ou recourbées et passer à l'étape de soudage !

Pour cette étape je vous conseille d'utiliser une troisième main mécanique qui vous facilitera grandement la tâche. Et si vous avez un doute vous pouvez consulter ce tutoriel sur la soudure.

Avec la troisième main je maintien les broches sur lesquelles je pose le capteur que je viens souder.

Montage de la centrale inertielle :

Connexion entre MPU-6050 et arduino:

La centrale inertielle possède 8 broches, dont 5 vont être utilisées pour être reliées à la carte arduino uno.

Arduino Uno MPU-6050
GND GND
5V VCC
A4 SDA
A5 SCL
Digital pin 2 INT

(lien de téléchargement)

Le MPU-6050 est très pratique puisqu'il communique grâce au protocole I2C, ce qui simplifie le câblage et permet une communication avec de nombreuses cartes microcontrolleur ! Il y également une broche dédiée aux interruptions bien utile !

Programmation de la carte Arduino :

Le programme pour récupérer et analyser les données de la centrale est assez complexe. Nous allons donc utiliser une librairie pour nous faciliter le travail ! D'abord, il vaut faudra les librairies I2Cdev et MPU6050 pour communiquer avec l'IMU. Une fois les librairies en votre possession, importez-les dans l'IDE arduino comme suit : Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .ZIP  et sélectionner le dossier contenant la librairie (Si vous êtes débutant en arduino, n'hésitez pas à consulter l'ouvrage dédié).

Pour trouver le programme d'analyse de la centrale inertielle, rien de plus facile ! Il suffit de suivre ce chemin : Fichier -> exemples -> MPU6050    -> Examples -> MPU6050_DMP6.

Le programme qui s'affiche dans l'IDE permet de convertir les valeurs envoyées par le MPU-6050 et de les afficher dans le moniteur série.

Au début, ce message s'affiche et vous devez entrer un caractère dans le moniteur série pour commencer la communication.

 

Puis les valeurs commencent à s'afficher :

Il faut environ 30 secondes pour que les valeurs de la centrale ce stabilisent et soit correctes.

Les colonnes qui s'affichent correspondent aux différents angles de l'IMU, respectivement le lacet, le tangage et le roulis.

Ce sont les rotations autour des angles x,y et z présentés sur l'image au début de ce tutoriel.

Application : MPU-6050 + servo moteur 9g

Maintenant, on peut utiliser les données de l'IMU pour faire fonctionner deux servo moteurs 9g ! Les servo moteurs tourneront en fonction de la valeur de l'angle retourné par la centrale inertielle. Pour cela, je réalise le montage suivant :

(lien de téléchargement)

Il y a une petite modification à faire dans le programme précédent pour ajouter le contrôle des servo moteurs ! Voici le programme modifié : (les modifications se trouvent dans la fonction setup et après la ligne 315)

 

Les modifications consistent uniquement à déclarer les servo moteurs comme des objets avec la librairie associée pour pouvoir les utiliser simplement. Et, les valeurs des angles qui étaient précédemment affichées dans le moniteur série sont désormais aussi transmises aux servo moteurs qui s'orientent grâce à l'angle reçu.

Maintenant, il n'y a plus qu'à faire fonctionner les servo moteurs. Attention à l'axe associé à l'angle reçu par votre servo ! Moi il s'agit des mouvements de lacet (axe x sur l'image) et de tangage (axe y).

Bref, une vidéo de démonstration :

6 Commentaires

  • Avatar
    J-P JULOU
    sept. 14, 2018

    Simple clair et pratique; utilisable sans difficulté que demander de plus? Bravo

  • Avatar
    Alex CASAS
    nov. 21, 2018

    onjour Monsieur, Pardonnez-moi de vous déranger, je vous contacte concernant votre dernier programme de l'article suivant :https://www.robot-maker.com/shop/blog/28_Decouverte-centrale-inertielle-MPU-6050.html En effet, ce dernier permet en fonction des coordonnées récupérés par la MPU6050 de faire tourner des servomoteurs. Cependant, pensez vous que ce programme peut être affecté à des servomoteurs pour stabiliser le drone? J'envisage en effet, de stabiliser mon propre drone dans le cadre de mon TIPE . Dans le fort espoir d'une réponse, je vous souhaite monsieur, une bonne journée. Respectueusement, Alex CASAS

  • Avatar
    romain
    mars 16, 2019

    Bonjour, merci pour votre tuto ! cependant, je ne trouve pas le chemin "Fichier -> exemples -> MPU6050 -> Examples -> MPU6050_DMP6." pour analyser les données...Pourriez vous m'aider ? Cdt.

  • Avatar
    Remi
    juin 13, 2019

    Bonjour, Super tuto, fonctionne au poil ... pendant 10sec, puis FIFO ! :-( J'utilise un Arduino Uno, pour tester le sensor déjà, mais au final je pense l'utiliser avec un ESP32. Un tuto à conseiller pour ça ? Merci !

  • Avatar
    EL-HEDDAJI
    juil. 31, 2019

    Bonjour, vous avez connecté dans cette démonstration deux servo-moteurs à l'arduino est-il possible de calibrer 8 servo-moteurs avec l'IMU afin de stabilise un drone X8? Merci

  • Avatar
    kaderius
    oct. 27, 2019

    Bonjour et merci pour les infos mais la video est HS il me semble.

Cet article vous a plu ? Laissez-nous un commentaire !

Tous les champs sont obligatoires

Nom:
E-mail: (ne sera pas publié)
Commentaire:
Recopier le code
ok