Master SIAME | Université Toulouse 3

Internet of things and System on Chip

Master SIAME | Université Toulouse 3

Internet of things and System on Chip

User Tools


Table of Contents

MPU-6050

11028-04.jpg

Il s'agit d'un IMU (Inertial Measurement Unit) fournissant des mesures d'accélération sur 6-axes :

  • gyromètre X, Y et Z (en °/s),
  • accéléromètre X, Y et Z (en G = 9,81 m/s2).

La documentation du capteur est ici.

Il est connecté à la carte Beagle Board par une liaison I2C.

Son numéro de client / périphérique est 0x68 et les registres disponibles sont documentés ici.

L'IMU a de nombreux registres mais on pourra s'intéresser seulement aux registres suivants:

  • PWR_MGR – configuration horloge (il faut absolument sélectionner une horloge, par exemple PLL_XGYRO),
  • GYRO_CONFIG – précision du gyromètre,
  • ACCEL_CONFIG – précision de l'accéléromètre,
  • ACCEL_XOUT_H / ACCEL_XOUT_L – accélération axe X,
  • ACCEL_YOUT_H / ACCEL_YOUT_L – accélération axe Y,
  • ACCEL_ZOUT_H / ACCEL_ZOUT_L – accélération axe Z,
  • GYRO_XOUT_H / GYRO_XOUT_L – accélération angulaire X,
  • GYRO_YOUT_H / GYRO_YOUT_L – accélération angulaire Y,
  • GYRO_ZOUT_H / GYRO_ZOUT_L – accélération angulaire Z.

Bien sûr, pour un contrôle plus fin et plus performant de l'IMU, on pourra s'intéresser aux autres registres.

Lecture en BURST

Pout diminuer les vibrations, il est intéressant de sur-échantilloner le capteur IMU et par exemple en faire une moyenne (mais il existe plein d'autres méthodes de filtrage). Pour cela, on peut utiliser le mode BURST de l'IMU qui va réaliser automatiquement plusieurs mesures et stocker le résultat dans une FIFO interne.

Il ne reste alors plus qu'aller lire cette FIFO pour obtenir les résultats des mesures sans devoir attendre l'IMU. Hélas, dans configuration actuelle de l'I2C (100 KHz), Linux ne permet pas de lire plus de 5 mesures sur 10ms.

Les registres intéressants pour gérer la FIFO sont :

  • SMPRT_DIV – pour régler la période de mesure (comme tout bon timer) ; la dréquence de l'IMU est 1000 Hz.
  • FIFO_EN – permet de sélectionner quelles mesures stocker dans la FIFO;
  • FIFO_COUNT – nombre d'octets stockés dans la FIFO;
  • FIFO_R_W – les lectures successives permet d'obtenir les octets stockés dans la FIFO.

Les échantillons sont stockés dans l'ordre des adresses des registres correspondants.

FAQ

L'IMU renvoie toujours 0 pour les registres accéléromètre et gyromètre ?

Pour pouvoir fonctionner, il faut initialiser l'IMU en choisissant une horloge grâce au registre PWR_MGR.