[Programmation] Gestion des données d'un gyromètre (MPU6050) avec un PIC - Page 3
Répondre à la discussion
Page 3 sur 3 PremièrePremière 3
Affichage des résultats 61 à 76 sur 76

Gestion des données d'un gyromètre (MPU6050) avec un PIC



  1. #61
    jiherve

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC


    ------

    re
    on y accède par une sub adresse comme le reste, c'est toujours la même et on reçoit a la queue leu leu les différentes valeurs dans l'ordre spécifié sur la DS.
    Cela utilise le mode burst read de l'I²C
    JR

    -----
    l'électronique c'est pas du vaudou!

  2. #62
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    J'ai vu que dans la datasheet il y a un registre pour activer la fifo pour les données d'accélération, mais je n'ai pas trouvé le buffer.
    Aussi, est ce que ducoup le buffer remplace les adresses des registres d'accéléromètre gyro etc? et dans ce cas j'imagine que les registres sont lus dans l'ordre comme tu viens de le dire.
    "Mode burst" signifie juste que les données arrivent dans l'ordre des registres?

  3. #63
    jiherve

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    bonjour,
    le mode burst signifie qu’après avoir adressé la FIFO il suffit d'enchainer les read pour recevoir une nouvelle valeur c'est beaucoup plus rapide que la lecture à l'unité des registres.
    La fifo est à l'adresse 0x74.
    JR
    l'électronique c'est pas du vaudou!

  4. #64
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Bonjour, merci pour ta réponse JR. Donc effectivement je connaissais ce mode mais je ne savais pas qu'il se nommait mode "burst". J'ai maintenant 2 question :

    Où as-tu trouvé l'adresse? (numero de page datasheet stp)


    Et ce matin j'ai commencé le code pour transmettre mes données aux micros esclave pour qu'il puise ordonner aux vérins s'il faut monter ou descendre :

    Code:
     CODE:
    
        if (axeY >= (-1200))
                   {
                    sens = 1;
                   }     
                   
        else if (axeY <= (-1400))
                   {
                      sens = 2;
                   }
         else 
             sens = 0;
       
       
      
        if (axeX >= (-200))
                    {
                      sens2 = 1;
                    }
                    
        else if (axeX <= (-400))
                    {
                      sens2 = 2;
                    }
           else 
             sens2 = 0;
    en revanche le compilo me renvoie "condition always TRUE" ou FALSE, à cause de mes valeurs négatives dans mes conditions je ne sais donc pas comment l'écrire pour que le compilo l'accepte.
    Dernière modification par gienas ; 24/01/2023 à 12h48. Motif: Ajouté les balises code, obligatoires pour les programmes

  5. #65
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    J'ai réussi à lire la FIFO et avoir les données, en revanche elles n'arrivent pas dans le bon ordre de temps en temps, faudrait-il faire un reset du buffer?

  6. #66
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    voici ma fonction qui lit les données actuellement :

    /////////////////////////////////////////////////////////
    //MPU READ//
    ////////////////////////////////////////////////////////

    void Read_Sensor (int8 REG_add)
    {
    int MSB ;
    int LSB;
    int16 AxeX;
    int16 AxeY;
    int16 AxeZ;

    i2c_start();
    i2c_write(0xD0);
    i2c_write(REG_add);
    i2c_start();
    i2c_write(0xD1); //start with the address in read mode

    MSB = i2c_read();
    LSB = i2c_read();
    AxeX = make16(MSB, LSB);

    MSB = i2c_read();
    LSB = i2c_read();
    AxeY = make16(MSB, LSB);

    MSB = i2c_read();
    LSB = i2c_read(0);
    AxeZ = make16(MSB, LSB);

    i2c_stop();

    printf("\n\r axe X: %Ld",AxeX);
    printf("\n\r axe Y: %Ld",AxeY);
    printf("\n\r axe Z: %Ld",AxeZ);


    }

  7. #67
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    J'ai encore un peu avancé, mais toujours quelques soucis persistent voici mon code :

    Code:
    /////////////////////////////////////////////////////////
                         //MPU READ//
    ////////////////////////////////////////////////////////
    
     void Read_Sensor (int8 REG_add)
    {
    int MSB ;
    int LSB;
    int16 AxeX;
    int16 AxeY;
    int16 AxeZ;
    float  fAxeX, fAxeY, fAxeZ;
    
       i2c_start();
       i2c_write(0xD0); 
       i2c_write(REG_add);   
       i2c_start();
       i2c_write(0xD1); //start with the address in read mode
       
       MSB = i2c_read();
       LSB = i2c_read(); 
       AxeX = make16(MSB, LSB);
       
       MSB = i2c_read();
       LSB = i2c_read();
       AxeY = make16(MSB, LSB);
       
       MSB = i2c_read();
       LSB = i2c_read(0);
       AxeZ = make16(MSB, LSB);
       
       i2c_stop();
       
       
       fAxeX = (float)AxeX/16384.0;
       fAxeY = (float)AxeY/16384.0;
       fAxeZ = (float)AxeZ/16384.0;
       
       printf("\n\r axe X: %f",fAxeX);
       printf("\n\r axe Y: %f",fAxeY);
       printf("\n\r axe Z: %f",fAxeZ);
       
    
    }
    Et voici ce que je reçois:


    Nom : Capture_axes.PNG
Affichages : 46
Taille : 3,9 Ko

    comme vous pouvez le voir il arrive que les valeurs de Z et Y s'inversent, de plus il me semble que je ne suis pas censé recevoir des valeurs aussi hautes
    Si quelqu'un a une idée du problème, merci de répondre ^^ .

  8. #68
    paulfjujo

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    bonjour,


    un lien interessant concernant le pilotage d'un Drone CrazyFlie avec un ESP32
    c'est donc pas un PIC ,
    mais la partie capteur donne beaucoup de renseignements

  9. #69
    jiherve

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    bonjour,
    quelle est la valeur de REG_add?
    JR
    l'électronique c'est pas du vaudou!

  10. #70
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Je viens de regarder ton lien, il me semble que la personne utilise une manière différente, ça ne m'aide pas beaucoup pour mon problème actuel mais merci quand même ^^

  11. #71
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Bonjour JR, dans REG_add j'ai mis l'adresse du buffer de la fifo. Les valeurs que je reçoit sont à peu près correct mais je vois bien que de temps en temps il mélange les valeurs.

  12. #72
    jiherve

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Re
    il faut se synchroniser sur le bit data ready, le LSB à l'adresse 0x3A.
    JR
    l'électronique c'est pas du vaudou!

  13. #73
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Je vois ce que tu veux dire, il faut que mon micro lise le capteur uniquement quand ce bit data_ready est à 1?
    Mais est ce que cela est utile sachant que je n'utilise pas la pin INT sur mon capteur? ou alors les deux n'ont rien à voir?

  14. #74
    jiherve

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    re
    non tu n'es pas obligé d'utiliser la pin INT, mais il faudra tout de même activer la fonction , LSB registre 0x38.
    JR
    l'électronique c'est pas du vaudou!

  15. #75
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Ah je vois, mais je l'ai déjà activé voici mon init :

    Code:
    void MPU6050_Init()
    {
       
        write_reg(PWR_MGMT_1,  0x01);
        delay_ms(100);
        write_reg(CONFIG, 0x00);
        delay_ms(10);
        write_reg(GYRO_CONFIG, 0x18);  // Pourquoi configurer Gyro et pas Accé
        delay_ms(10);
        write_reg(ACCEL_CONFIG, 0x00); // test 24/11
        delay_ms(10);
        write_reg(SAMPLE_DRATE, 0x07);
        delay_ms(10);
        write_reg(INT_ENABLE, 0x01);
        delay_ms(10);
        write_reg(FIFO_EN,  0x40);
        delay_ms(100);
        write_reg(FIFO_CONFIG, 0x08);
        delay_ms(100);
        
        
    }

  16. #76
    AKA TENDO

    Re : Gestion des données d'un gyromètre (MPU6050) avec un PIC

    Je remarque aussi que je n'obtiens plus de valeurs négatives lorsque je rajoute la division par 16384.0 et qu'en plus de ça les valeurs ne varient pas vraiment selon le capteur comme si elles changeaient aléatoirement dans le registre.
    Sans la division j'obtiens ce genre de valeur


    Nom : Capture___.PNG
Affichages : 40
Taille : 4,1 Ko

Page 3 sur 3 PremièrePremière 3

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2014, 19h36
  2. Commander un gyrometre avec microcontrolleur STM32
    Par inviteabf616ac dans le forum Électronique
    Réponses: 4
    Dernier message: 18/04/2013, 15h18
  3. logiciel de gestion de bases de données
    Par invite77c12b56 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 28/02/2011, 19h07
  4. gestion d'une base de données excel (Visual basic)
    Par invitebfca8e2e dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 17/03/2009, 08h54
  5. Gestion de données par PIC
    Par invited5eecb60 dans le forum Électronique
    Réponses: 4
    Dernier message: 18/12/2008, 08h46
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...