IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Programme gyroscope arduino


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Programme gyroscope arduino
    bonjour a tous je possède un gyroscope mpu 6050 et j aimerais mesurer un angle autour de l axe de lacet du gyroscope mais je n arrive pas a retirer la dérive du gyroscope quelqu'un aurait une solution svp ?
    Merci

    Voici mon code arduino

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include "Wire.h" 
    #include "I2Cdev.h"  
    #include "MPU6050.h"
     
     
     
    MPU6050 accelgyro;
     
    int16_t ax, ay, az;  //mesures brutes
    int16_t gx, gy, gz;
    int8_t Accel_range;
    int8_t Gyro_range;
    float angle=0;
     
     
     
    void setup() {
      Wire.begin();  //I2C bus
      Serial.begin(9600);
      while (!Serial) 
        ; // wait for serial port to connect. Needed for native USB (LEONARDO)
     
     
      // initialize device
      Serial.println("Initialisation I2C...");
      accelgyro.initialize();
     
      // verify connection
      Serial.println("Test de la conection du dispositif ...");
      Serial.println(accelgyro.testConnection() ? "MPU6050 connection reussie" : "MPU6050 connection echec");
      delay(1000);
    }
     
    void loop() {
     
      accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
     
      angle=(angle+(float)gz*0.01/131);
     Serial.println(angle); 
      delay(10);
     
     
     
     
     
    }
    Dernière modification par f-leb ; 14/05/2017 à 20h28.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 196
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    Un moyen simple en combinant l'angle obtenu avec le gyroscope et celui obtenu avec l'accéléromètre, avec un calcul simple (filtre) du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    angle = 0,98*(angle gyroscope)+0,02*(angle accéléromètre)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Mais comment faire pour obtenir un angle avec l'accéléromètre sur l'axe de lacet?

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 196
    Billets dans le blog
    47
    Par défaut
    Oups, l'axe de lacet, j'ai lu trop vite Oublie ce que j'ai écrit plus haut

    Je ne sais pas s'il y a une solution simple, l'exemple ici utilise des notions mathématiques que je ne connais pas

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet
    Inscrit en
    Novembre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 38
    Par défaut l'axe du lacet
    Nom : p1070511.png
Affichages : 2041
Taille : 53,2 Ko

    wikipédia définis l'axe du lacet comme l'axe z source

    Mais si je comprend bien il s'agit de l'axe Z de l'avion ou de l'objet possédant un gyroscope embarqué que tu cherches a déterminé a partir de ta puce MPU 6050.

    http://playground.arduino.cc/Main/MPU-6050

    Il y a un accéléromètre et un gyroscope qui font circuler leur information par protocole I2C sur ce produit !

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonsoir

    Est-ce que les données brutes (gz) sont cohérentes? Histoire de savoir si la configuration et la communication entre le MPU et l'Arduino sont en ordre.

    Après la méthode de timing est très mauvaise, car le délai entre deux lectures est d'environ 10ms (et pas de 10ms exactement), de ce fait il y aura forcement une dérive et variable en plus.

    En lisant la doc, le MPU peut-être programmé pour effectuer des mesures à intervalle de temps constant (sampling). Faudrait idéalement utiliser cette méthode, déjà voir si la lib pour l'Arduino sait le faire.
    Sinon il faudrait mieux utiliser la base de temps de l'Arduino et faire une mesure chaque fois qu'un incrément de 10ms est dépassé. Comme cela même si une mesure est un peu en retard, la suivante ne cumulera pas ce retard.

    Delias

Discussions similaires

  1. Programmation simple Arduino
    Par WendyV dans le forum Arduino
    Réponses: 13
    Dernier message: 20/09/2016, 13h24
  2. Programmer carte arduino en C
    Par laurent19 dans le forum C
    Réponses: 3
    Dernier message: 11/08/2014, 13h10
  3. Difficultés pour programmer un Arduino
    Par Garenne40 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/06/2013, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo