Code de l'accéléromètre, du gyroscope et du magnétomètre MPU-9250
Dans ce tutoriel, nous allons explorer comment utiliser le capteur MPU-9250, qui combine un accéléromètre, un gyroscope et un magnétomètre dans un seul module compact. À la fin de ce guide, vous serez en mesure de lire les données du capteur et d'interpréter leur signification dans vos projets. Ce capteur est particulièrement utile pour des applications comme la robotique et les drones, où l'orientation et le suivi des mouvements sont essentiels. Vous pouvez vous référer à la vidéo pour des précisions supplémentaires sur l'installation et le code (dans la vidéo à 00:20).
Matériel expliqué
Le module MPU-9250 intègre trois capteurs : un accéléromètre, un gyroscope et un magnétomètre. L'accéléromètre mesure les forces d'accélération, vous permettant de déterminer la vitesse et l'orientation. Le gyroscope fournit la vitesse angulaire, vous aidant à comprendre le changement d'orientation dans le temps. Enfin, le magnétomètre agit comme une boussole, fournissant des données sur le champ magnétique qui aident à la navigation.
Cette combinaison de capteurs est particulièrement bénéfique dans les applications où un suivi de mouvement précis est requis, comme dans les drones ou les smartphones. Le MPU-9250 communique via I2C ou SPI, ce qui le rend polyvalent pour différentes configurations de microcontrôleurs.
Détails de la fiche technique
| Fabricant | InvenSense |
|---|---|
| Numéro de pièce | MPU-9250 |
| Tension logique/IO | 1,8 V (I/O), 3,3 V (alimentation) |
| Tension d'alimentation | 2,4 - 3,6 V |
| Courant de sortie (par canal) | 3,2 mA (fonctionnement normal) |
| Courant de crête (par canal) | 19,8 mA (max) |
| Directives de fréquence PWM | N/A |
| Seuils de logique d'entrée | 0,3 * VDD(bas), 0,7 * VDD(haut) |
| Chute de tension / RDS(on)/ saturation | N/A |
| Limites thermiques | -40 à 85 °C |
| Paquet | QFN |
| Remarques / variantes | Inclut un régulateur de tension interne |
- Assurez-vous d'une alimentation en tension appropriée (2,4 - 3,6 V) pour éviter d'endommager le module.
- Utilisez une résistance de tirage pour les lignes SDA et SCL si elle n'est pas déjà incluse sur votre carte d'extension.
- Vérifiez l'adresse I2C (la valeur par défaut est 0x68) et ajustez le broche ADO en conséquence pour les adresses alternatives.
- Vérifiez les connexions pour leur stabilité afin de prévenir les lectures erronées.
- Calibrer les capteurs régulièrement pour des mesures précises.
Instructions de câblage


Pour câbler le MPU-9250 à votre Arduino, commencez par connecter la broche VCC sur le MPU-9250 à la broche 5V sur l'Arduino. Le module a un régulateur interne, donc il est sûr de l'alimenter avec 5V. Ensuite, connectez la broche GND à la masse (GND) sur l'Arduino. Pour la communication de données, connectez la broche SDA à la broche A4 sur l'Arduino et la broche SCL à la broche A5. Cette configuration est standard pour de nombreuses cartes Arduino.
Si vous utilisez un Arduino Mega, les broches SDA et SCL se trouvent respectivement aux broches 20 et 21. Assurez-vous que les connexions sont sécurisées pour éviter toute erreur de communication. Si vous devez changer l'adresse I2C du MPU-9250, connectez la broche ADO à 5V pour la définir sur 0x69. La déconnexion la ramènera à 0x68.
Exemples de code et guide étape par étape
Dans le croquis Arduino, nous commençons par inclure la bibliothèque MPU9250 et créer une instance du capteur :
#include "MPU9250.h"
MPU9250 IMU(Wire,0x68);
Le code initialise le capteur et commence la communication dans lesetup()fonction :
void setup() {
Serial.begin(115200);
status = IMU.begin();
if (status < 0) {
Serial.println("IMU initialization unsuccessful");
while(1) {}
}
}
Dans leloop()fonction, nous lisons et imprimons en continu les données du capteur :
void loop() {
IMU.readSensor();
Serial.print("AccelX: ");
Serial.print(IMU.getAccelX_mss(),6);
// More print statements for other axes
}
Cette section lit les valeurs de l'accéléromètre, du gyroscope et du magnétomètre, les affichant dans le moniteur série. Assurez-vous de vérifier le code complet chargé sous l'article pour l'implémentation complète.
Démonstration / Que Sattendre
Lorsque vous exécutez le code, vous devriez voir les valeurs des capteurs se mettre à jour en temps réel sur le Moniteur Série. Les valeurs de l'accéléromètre fluctueront à mesure que vous déplacerez le capteur, tandis que les valeurs du gyroscope afficheront le taux de rotation. Le magnétomètre vous donnera la force du champ magnétique sur trois axes, ce qui peut être utilisé pour déterminer l'orientation. Faites attention aux entrées flottantes, car elles peuvent entraîner des lectures inexactes (dans la vidéo à 12:30).
Chapitres
- Introduction (00:00)
- Matériel expliqué (01:30)
- Instructions de câblage (04:00)
- Exemples de code et explication (06:00)
- Démonstration (10:00)
/*
* Library: https://github.com/bolderflight/MPU9250
Basic_I2C.ino
Brian R Taylor
brian.taylor@bolderflight.com
Copyright (c) 2017 Bolder Flight Systems
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Updated by Ahmad Shamshiri on July 9, 2018 for Robojax.com
* in Ajax, Ontario, Canada
* Watch instruction video for this code:
For this sketch you need to connect:
VCC to 5V and GND to GND of Arduino
SDA to A4 and SCL to A5
S20A is 3.3V voltage regulator MIC5205-3.3BM5
*/
#include "MPU9250.h"
// An MPU9250 object with the MPU-9250 sensor on I2C bus 0 with address 0x68
MPU9250 IMU(Wire,0x68);
int status;
void setup() {
// Serial to display data
Serial.begin(115200);
while(!Serial) {}
// Start communication with IMU
status = IMU.begin();
if (status < 0) {
Serial.println("IMU initialization unsuccessful");
Serial.println("Check IMU wiring or try cycling power");
Serial.print("Status: ");
Serial.println(status);
while(1) {}
}
}
void loop() {
// Read the sensor
IMU.readSensor();
// Display the data
Serial.print("AccelX: ");
Serial.print(IMU.getAccelX_mss(),6);
Serial.print("\t");
Serial.print("AccelY: ");
Serial.print(IMU.getAccelY_mss(),6);
Serial.print("\t");
Serial.print("AccelZ: ");
Serial.println(IMU.getAccelZ_mss(),6);
Serial.print("GyroX: ");
Serial.print(IMU.getGyroX_rads(),6);
Serial.print("\t");
Serial.print("GyroY: ");
Serial.print(IMU.getGyroY_rads(),6);
Serial.print("\t");
Serial.print("GyroZ: ");
Serial.println(IMU.getGyroZ_rads(),6);
Serial.print("MagX: ");
Serial.print(IMU.getMagX_uT(),6);
Serial.print("\t");
Serial.print("MagY: ");
Serial.print(IMU.getMagY_uT(),6);
Serial.print("\t");
Serial.print("MagZ: ");
Serial.println(IMU.getMagZ_uT(),6);
Serial.print("Temperature in C: ");
Serial.println(IMU.getTemperature_C(),6);
Serial.println();
delay(200);
}
Ressources et références
-
ExterneCarte des registres MPU-9250invensense.com
-
ExterneFiche technique pour MPU-9250invensense.com
-
Externe
Fichiers📁
Aucun fichier disponible.