Capteur Accéléromètre MPU-6050
Le capteur InvenSense MPU-6050 contient un accéléromètre MEMS et un gyroscope MEMS dans une seule puce. Il est très précis, car il contient un matériel de conversion analogique-numérique 16 bits pour chaque canal. Par conséquent, il capture les canaux x, y et z en même temps. Le capteur utilise le bus I2C pour l’interface avec l’Arduino.
Le MPU-6050 n’est pas cher, d’autant plus qu’il combine un accéléromètre et un gyroscope. Notez également que Invensense a combiné le MPU-6050 avec un magnétomètre (compas) dans une puce unique appelée MPU-9150 .
La lecture des valeurs brutes pour l'accéléromètre et le gyroscope est facile. Le mode veille doit être désactivé, puis les registres de l'accéléromètre et du gyroscope peuvent être lus.
Mais le capteur contient également un tampon FIFO de 1024 octets. Les valeurs de capteur peuvent être programmées pour être placées dans la mémoire tampon FIFO. Et le tampon peut être lu par l'Arduino.
Le tampon FIFO est utilisé avec le signal d'interruption. Si le MPU-6050 place des données dans le tampon FIFO, il signale à Arduino le signal d'interruption afin que celui-ci sache qu'il existe des données dans le tampon FIFO en attente de lecture.
Le MPU-6050 n’est pas cher, d’autant plus qu’il combine un accéléromètre et un gyroscope. Notez également que Invensense a combiné le MPU-6050 avec un magnétomètre (compas) dans une puce unique appelée MPU-9150 .
La lecture des valeurs brutes pour l'accéléromètre et le gyroscope est facile. Le mode veille doit être désactivé, puis les registres de l'accéléromètre et du gyroscope peuvent être lus.
Mais le capteur contient également un tampon FIFO de 1024 octets. Les valeurs de capteur peuvent être programmées pour être placées dans la mémoire tampon FIFO. Et le tampon peut être lu par l'Arduino.
Le tampon FIFO est utilisé avec le signal d'interruption. Si le MPU-6050 place des données dans le tampon FIFO, il signale à Arduino le signal d'interruption afin que celui-ci sache qu'il existe des données dans le tampon FIFO en attente de lecture.
La possibilité de contrôler un deuxième appareil I2C est un peu plus compliquée.
Le MPU-6050 agit toujours comme esclave de l'Arduino avec les broches SDA et SCL connectées au bus I2C .
Mais à côté du bus I2C normal, il a son propre contrôleur I2C pour être maître sur un second (sous) bus I2C . Il utilise les broches AUX_DA et AUX_CL pour ce second (sous) bus I2C .
Il peut contrôler, par exemple, un magnétomètre. Les valeurs du magnétomètre peuvent être transmises à l'Arduino.
Les choses deviennent vraiment complexes avec le "DMP".
Le capteur comporte un "Processeur de mouvement numérique" (DMP), également appelé "Unité de traitement de mouvement numérique". Ce DMP peut être programmé avec un micrologiciel et est capable de faire des calculs complexes avec les valeurs du capteur.
Pour ce DMP, InvenSense applique une politique de découragement en ne fournissant pas suffisamment d'informations sur la programmation du DMP. Cependant, certains ont utilisé le reverse engineering pour capturer les microprogrammes.
Le DMP ("Digital Motion Processor") peut effectuer des calculs rapides directement sur la puce. Cela réduit la charge du microcontrôleur (comme l’Arduino). Le DMP est même capable d'effectuer des calculs avec les valeurs de capteur d'une autre puce, par exemple un magnétomètre connecté au deuxième (sous) bus I2C .
Le MPU-6050 agit toujours comme esclave de l'Arduino avec les broches SDA et SCL connectées au bus I2C .
Mais à côté du bus I2C normal, il a son propre contrôleur I2C pour être maître sur un second (sous) bus I2C . Il utilise les broches AUX_DA et AUX_CL pour ce second (sous) bus I2C .
Il peut contrôler, par exemple, un magnétomètre. Les valeurs du magnétomètre peuvent être transmises à l'Arduino.
Les choses deviennent vraiment complexes avec le "DMP".
Le capteur comporte un "Processeur de mouvement numérique" (DMP), également appelé "Unité de traitement de mouvement numérique". Ce DMP peut être programmé avec un micrologiciel et est capable de faire des calculs complexes avec les valeurs du capteur.
Pour ce DMP, InvenSense applique une politique de découragement en ne fournissant pas suffisamment d'informations sur la programmation du DMP. Cependant, certains ont utilisé le reverse engineering pour capturer les microprogrammes.
Le DMP ("Digital Motion Processor") peut effectuer des calculs rapides directement sur la puce. Cela réduit la charge du microcontrôleur (comme l’Arduino). Le DMP est même capable d'effectuer des calculs avec les valeurs de capteur d'une autre puce, par exemple un magnétomètre connecté au deuxième (sous) bus I2C .
Codes
Les valeurs de l’accéléromètre et du gyroscope sont appelées les valeurs "brutes". C’est comme pour les autres capteurs d’accéléromètre et de gyroscope. Une application plus sophistiquée utilise le DMP pour récupérer des valeurs calculées spécifiques à partir du capteur.
Le croquis d'exemple court sur cette page est un croquis très court qui montre toutes les valeurs brutes. Cliquez sur "Obtenir le code" à droite, sous l'esquisse, et copiez-le dans une esquisse.
L’ exemple esquisse (code de base) de cette page montre également les valeurs brutes, mais c’est une tentative pour constituer une base complète pour davantage de fonctions.
Pour une utilisation sérieuse du MPU-6050, Jeff Rowberg a fait un excellent travail.
Voir sa librairie I2C : http://www.i2cdevlib.com/devices/mpu6050
Ou le dernier code sur GitHub : https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
La bibliothèque FreeIMU comprend le code MPU-6050 de Jeff Rowberg.
La bibliothèque FreeIMU : http://www.varesano.net/projects/hardware/FreeIMU
Pour commencer avec le MPU-6050, voir la page InvenSense : https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/
Pour d'autres programmes et capteurs, voir la section Degrés de liberté, 6DOF, 9DOF, 10DOF, 11DOF dans l'index du terrain de jeu.
Le croquis d'exemple court sur cette page est un croquis très court qui montre toutes les valeurs brutes. Cliquez sur "Obtenir le code" à droite, sous l'esquisse, et copiez-le dans une esquisse.
L’ exemple esquisse (code de base) de cette page montre également les valeurs brutes, mais c’est une tentative pour constituer une base complète pour davantage de fonctions.
Pour une utilisation sérieuse du MPU-6050, Jeff Rowberg a fait un excellent travail.
Voir sa librairie I2C : http://www.i2cdevlib.com/devices/mpu6050
Ou le dernier code sur GitHub : https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
La bibliothèque FreeIMU comprend le code MPU-6050 de Jeff Rowberg.
La bibliothèque FreeIMU : http://www.varesano.net/projects/hardware/FreeIMU
Pour commencer avec le MPU-6050, voir la page InvenSense : https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/
Pour d'autres programmes et capteurs, voir la section Degrés de liberté, 6DOF, 9DOF, 10DOF, 11DOF dans l'index du terrain de jeu.
Caractéristiques
Un petit résumé des caractéristiques du composants de base. Le datasheet complet est donné plus bas dans les Sources et Références.
- Sortie numérique de données MotionFusion sur 6 axes. Données fusionnées 9 axes de Motion Processing Library
- Capteur de vitesse angulaire à trois axes (gyroscope) avec une sensibilité maximale de 131 LSB / dps et une plage complète de ± 250, ± 500, ± 1000 et ± 2000 dps
- Accéléromètre triaxial avec plage de pleine échelle programmable de ± 2g, ± 4g, ± 8g et ± 16g
- Réduction des effets de sédimentation et de la dérive des capteurs grâce à l'élimination des erreurs d'alignement transversal au niveau de la carte entre les accéléromètres et les gyroscopes
- Le moteur Digital Motion Processing ™ (DMP ™) décharge MotionFusion complexe, la synchronisation du capteur et la détection des gestes
- MotionApps ™ Platform prend en charge Android, Linux et Windows
- Algorithmes intégrés pour le biais d'exécution et le calibrage de la boussole dans la bibliothèque. Aucune intervention de l'utilisateur requise
- Capteur de température à sortie numérique
- Entrée numérique sur la broche FSYNC pour prendre en charge la vidéo Stabilisation électronique de l'image et GPS
- Une interruption programmable prend en charge la reconnaissance des gestes, le panoramique, le zoom, le défilement et la détection de tremblement
- VDD Gamme de tension d'alimentation de 2,375V à 3,46V; VLOGIC (MPU-6050) à 1,8 V ± 5% ou VDD
- Courant de fonctionnement du gyroscope: 3,6 mA (pleine puissance, gyroscope à tous les taux)
- Courant de fonctionnement Gyro + Accel: 3,8 mA (puissance maximale, gyroscope à tous les débits, accélération à la fréquence d'échantillonnage de 1 kHz)
- Courants de fonctionnement en mode basse consommation Accel: 10µA à 1Hz, 20µA à 5Hz, 70µA à 20Hz, 140µA à 40Hz
- Courant d'alimentation en mode veille de pleine puce: 5µA
- Interfaces série hôtes 400 kHz Fast Mode I²C ou jusqu'à 20 MHz SPI (MPU-6000 uniquement)
- Test utilisateur
- 10 000g de tolérance aux chocs
- Le paquet le plus petit et le plus mince pour les appareils portables (4x4x0.9mm QFN)
- Conforme RoHS et Green
Sources et références
[ 2] Carte d'évaluation du MPU-6050 - Guide d'utilisation
[ 3] MPU-6000 - Notes d'application
[ 4] Cartographie et description des registres du MPU-6050 du BMP180 - Bosch