MPU6050: module de positionnement avec Arduino

Carte MPU6050

Si vous avez besoin de créer un projet et de le positionner, sachez comment est-il placé concernant l'espace, vous pouvez utiliser le module MPU6050. Autrement dit, ce module est une unité de mesure inertielle ou IMU (Unités de mesure inertielle) avec 6 degrés de liberté (DoF). C'est grâce aux capteurs de type accéléromètre à 3 axes et à un gyroscope à 3 axes qu'il met en œuvre pour fonctionner.

Ce MPU6050 peut savoir comment l'objet contenant est positionné pour une utilisation dans applications navigation, goniométrie, stabilisation, contrôle gestuel, etc. Les téléphones portables incluent généralement ce type de capteurs pour, par exemple, contrôler certaines fonctions par des gestes, comme s'arrêter si le smartphone est retourné, conduire des véhicules dans les jeux vidéo en tournant le mobile comme s'il s'agissait d'un volant, etc.

Qu'est-ce qu'un accéléromètre et un gyroscope?

Exemples de MEMS

Exemples de MEMS

Eh bien, allons-y par parties. La première chose à faire est de voir quels sont ces types de capteurs qui sont capables de détecter les accélérations et les virages, comme on peut le déduire de leurs propres noms.

  • Accéléromètre: mesure l'accélération, c'est-à-dire le changement de vitesse par unité de temps. Rappelez-vous qu'en physique, le changement de vitesse avec le temps (a = dV / dt) est la définition de l'accélération. Selon la deuxième loi de Newton, nous avons également que a = F / m, et c'est ce que les accéléromètres utilisent pour fonctionner, c'est-à-dire qu'ils utilisent des paramètres de force et de masse de l'objet. Pour que cela puisse être mis en œuvre en électronique, des techniques MEMS (Micro Electro Mechanical Systems) sont utilisées, qui diffèrent des techniques de fabrication de puces électroniques classiques, puisque les pièces mécaniques sont créées dans un MEMS. Dans ce cas, des pistes ou éléments capables de mesurer des accélérations sont créés. Cela implique que de nombreuses autres unités peuvent être prises, comme la vitesse (si l'accélération est intégrée dans le temps), si elle est à nouveau intégrée, nous avons le déplacement, etc. C'est-à-dire des paramètres très intéressants pour connaître la position ou détecter le mouvement d'un objet.
  • Gyroscope: également appelé gyroscope, c'est un appareil qui mesure la vitesse angulaire d'un objet, c'est-à-dire le déplacement angulaire par unité de temps ou la vitesse de rotation d'un corps autour de son axe. Dans ce cas, les techniques MEMS sont également utilisées pour mesurer cette vitesse à l'aide d'un effet appelé Coriolis. Grâce à cela, la vitesse angulaire peut être mesurée ou, en intégrant la vitesse angulaire par rapport au temps, le déplacement angulaire peut être obtenu.

Module MPU6050

Brochage du MPU6050

Maintenant que vous savez ce que sont l'accéléromètre et le gyroscope, le module MPU6050 est une carte électronique qui intègre ces deux éléments pour vous permettre de mesurer ces changements de position d'un élément et ainsi pouvoir générer une réaction. Par exemple, lorsqu'un objet bouge, une LED s'allume, ou d'autres choses beaucoup plus complexes.

Comme je l'ai dit, il a 6 axes de liberté, DoF, Accéléromètre d'accélération 3 axes X, Y et Z et autre gyroscope 3 axes pour mesurer la vitesse angulaire. Il faut tenir compte de ne pas se tromper dans la façon dont vous positionnez le module et le sens de rotation pour les mesures, car si vous faites le mauvais signe, ce sera un peu chaotique. Regardez l'image suivante où elle spécifie la direction des axes (cependant, notez que le PCB lui-même l'a également imprimé sur un côté):

Fiche technique MPU6050

Compte tenu de cela et le brochage, plus ou moins, tout est clair pour commencer à utiliser le MPU6050. Comme vous pouvez le voir sur l'image précédente, les connexions sont assez simples et cela permet à la communication I2C d'être compatible avec la plupart des microcontrôleurs, y compris l'Arduino. Les broches SCL et SDA ont une résistance de rappel sur la carte pour une connexion directe à la carte Arduino, vous n'avez donc pas à vous soucier de les ajouter vous-même.

Pour travailler dans les deux sens sur le bus I2C, vous pouvez utiliser ces broches et directions:

  • AD0 = 1 ou High (5v): pour l'adresse I0C 69x2.
  • AD0 = 0 ou Low (GND ou Nc): pour l'adresse 0x68 du bus I2C.

N'oubliez pas que la tension de fonctionnement du modèle est de 3v3, mais heureusement, il a un régulateur intégré, il peut donc être commuté avec le 5v de l'Arduino sans problème et il le transformera en 3.3v.

À propos, ayant une résistance interne à GND, si cette broche n'est pas connectée, l'adresse par défaut, ce sera 0x68, car il sera connecté par défaut à la terre, en l'interprétant comme un 0 logique.

Intégration avec Arduino

Connexion Arduino et MPU6050

Vous pouvez obtenir plus d'informations sur le bus I2C dans cet article. Vous savez déjà que selon la carte Arduino, les broches utilisées pour le bus varient, mais dans le Arduino UNO est la broche analogique A4 et A5, pour SDA (données) et SCL (horloge) respectivement. Ce sont les seules broches Arduino, avec les broches 5v et GND pour alimenter la carte, que vous devriez utiliser. La connexion est donc aussi simple que possible.

Pour les fonctions du MPU6050, vous pouvez utiliser les bibliothèques dont vous pouvez obtenir plus d'informations dans ce lien pour le I2C du module et celui du bus MPU6050.

La programmation de la carte Arduino n'est pas trop simple avec le MPU6050, donc ce n'est pas pour les débutants. De plus, connaissant les limites des accélérations ou des plages d'angles, vous pouvez calibrer pour déterminer quel a été le mouvement ou l'accélération exact. Cependant, pour que vous puissiez au moins avoir un exemple de comment commenter son utilisation, vous pouvez voir ce code à partir du Exemple d'esquisse pour votre IDE Arduino qui lira les valeurs enregistrées par l'accéléromètre et le gyroscope:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

Si vous êtes débutant et que vous ne connaissez pas bien comment programmer avec Arduino IDE, cela vous sera difficile à comprendre, vous pouvez donc consulter gratuitement notre manuel avec le cours d'introduction à la programmation Arduino ...


Soyez le premier à commenter

Laisser un commentaire

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

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.