Difference: ExerciceMPU6050 (2 vs. 3)

Revision 32022-06-19 - UliRaich

Line: 1 to 1
 
META TOPICPARENT name="WebHome"

MPU6050, un accéléromètre et gyroscope

Introduction

Line: 7 to 7
 

Exercice 1 : Comprendre le bus I2C

Lire la documentation du bus I2C et les fiches techniques du MPU6050:

Changed:
<
<
>
>
  Lire les fiches techniques du MPU6050
Line: 35 to 35
 Créer un programme qui écrit un registre et vérifier que les données ont bien été enregistrés. Utiliser le registre SMPLRT_DIV (adresse 0x19) pour cet essai.
Attention : Après l'enclenchement du MPU6050 ou après un reset (registre PWR_MGMT_1, bit 7) le module se trouve dans un mode d'économie d'énergie ou la plupart des registres ne peuvent pas être modifié. Ceci est indiqué par the bit SLEEP (bit 6) du registre PWR_MGMT_1. Ce bit doit être mis à zéro pour mettre le MPU6050 en fonctionnement normal.

Plusieurs de registres du MPU6050 contiennent soit de bits simples, soit des champs de bits pour contrôler une fonctionnalité du module.

Added:
>
>
  • Créer des fonctions qui lisent ou écrivent les registres
    • readByte(register)
    • writeByte(register,value)
    • readShort(register): lire 2 octets de 2 registres consécutifs, concaténer les résultats et le transformer en valeur int de Python. Les valeurs du MPU6050 sont des valeurs 16 bits avec signe !
    • writeShort(register,value): Tranformer la valeur de int a une valeur 16 bits avec signe et l'écrire dans les registres.
 
  • Créer des fonctions qui lisent ou écrivent un bit spécifique dans un registre.
    • readBit(register,bitPosition)
    • writeBit(register,bitPosition,value)
Line: 43 to 48
 
    • writeBits(register,bitPosition,no_of_bits,value)

Exercice 4 : Lecture des données

Changed:
<
<
Lire les données brutes de l'accéléromètre et du gyroscope et convertir ces valeurs dans des données physiques (unité g pour l'accélération et dps: dégrées par seconde, pour le gyroscope). Est-ce que ces valeurs sont raisonnables ?. Pour l'accélération, on doit trouver 1 g pour la direction vertical, zéro pour les autres.
>
>
Lire les données brutes de l'accéléromètre et du gyroscope et convertir ces valeurs dans des données physiques (unité : g pour l'accélération et dps: dégréés par seconde, pour le gyroscope). Est-ce que ces valeurs sont raisonnables ?. Pour l'accélération, on doit trouver 1 g pour la direction vertical, zéro pour les autres.
  Attention : Les données du MPU6050 sont des valeurs 16 bit avec signe, qui doivent être convertis en valeurs entier Python.

Modifier la résolution de la mesure (gamme complète: +- 2g, +-4g, +-8g, +-16g) et observer la différence de lecture. Écrire une fonction qui retourne les mesures en unité physique.

Changed:
<
<

Exercice 5 : Calibration

>
>

Exercice 5 : Écrire les méthodes d'accès pour les registres

 
Changed:
<
<
Calibrer le MPU6050. Voir l'exemple IMU_Zero.py

Exercice 6 :Le pilote

>
>
En utilisant les fonctions de l'exercice 3, écrire de méthodes d'accès aux registres du MPU6050. Exemples :
  • reset(): Device reset. Mettre le bit reset dans le registre MPU9250_RA_PWR_MGMT_1
  • getSleep(): Lire lee bit SLEEP du registre MPU9250_RA_PWR_MGMT_1
  • setSleep(value): value=True met le MPU6050 en mode veille, value=False le met en mode : opération normale
  • getAccelX(): retourne la valeur d'accélération en X
  • getAccelY(): retourne la valeur d'accélération en Y
  • getAccelZ(): retourne la valeur d'accélération en Z
  • getAcceleration() : retourne les valeurs d'accélération en X,Y and Z
  • getFullScale, setFullScale,...

Exercice 6 : Calibration

Calibrer le MPU6050.

  • Lire les offsets par défaut (après reset). Augmenter les offset en petit pas et lire les valeurs de l'accéléromètre. Trouver l'offset quand la valeur d'accéléromètre passe de négatif à positif (zero crossing)
    Si on n'a pas trouvé l'offset (no zero crossing) répéter la procédure en diminuant les offsets en petit pas.
  • Calibrer le MPU6050 en utilisant un algorithme PID. Voir l'exemple IMU_Zero.py

Exercice 7 :Le pilote

  Étudier le pilote du MPU6050.

Écrire des programmes qui l'utilisent. Changer la fréquence d'acquisition de données, changer la résolution de l'accéléromètre ou du gyroscope, lire les résultats de mesures…

Changed:
<
<

Exercice 6 : Interruptions mouvement et inactivité

>
>

Exercice 8 : Interruptions mouvement et inactivité

  Écrire un programme qui détecte le mouvement et l'inactivité. Générer et capter des interruptions pour les deux cas.
Changed:
<
<

Exercice 7 : Lecture du FiFo

>
>

Exercice 9 : Lecture du FiFo

  Lire l'accélération et rotation en utilisant le FiFo.
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback