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 :

GY-521 (MPU6050) - "Failed to find MPU6050 chip" systématique


Sujet :

Arduino

  1. #1
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut GY-521 (MPU6050) - "Failed to find MPU6050 chip" systématique
    Salut à tous.
    Je travaille autour du GY-521 (accéléromètre, gyroscope, température) -> https://www.az-delivery.de/fr/produc...unigungssensor
    Je câble correctement mon Arduino Mega 2560 :

    Vcc -> 5.5V
    Gnd -> Gnd
    SDA -> SDA (pin 20)
    SCL -> SCL (pin 21)

    ... mais en exécutant le fichier d'exemple "basic_readings", j'ai systématiquement une erreur : Failed to find MPU6050 chip

    What's going on ??

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Le bus I2C nécessite une adresse fixe pour le composant.

    Tu peux utiliser l'exemple i2c_scanner de la bibliothèque Wire (Fichier > Exemples > Wire > i2c_scanner ) pour déterminer cette adresse.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut
    Merci Jérôme.
    Je fouille Adafruit_MPU6050.h et je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define MPU6050_I2CADDR_DEFAULT                                                \
      0x68                         ///< MPU6050 default i2c address w/ AD0 high
    #define MPU6050_DEVICE_ID 0x68 ///< The correct MPU6050_WHO_AM_I value
    D'autre part, i2c_scanner me donne bien cette adresse : 0x68

    J'ai tenté de modifier l'adresse (0x69) avec AD0 HIGH

    ... mais le problème demeure.

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    - vous avez bien soudé les headers sur la carte?
    - quel code utilisez vous?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut
    Citation Envoyé par Jay M Voir le message
    - vous avez bien soudé les headers sur la carte?
    - quel code utilisez vous?
    Je n'ai rien soudé du tout.
    Le code est celui fourni dans Arduino IDE (Fichier -> exemples -> Adafruit MPU6050 -> basic_readings)

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Est-ce que les headers étaient déjà soudés sur le MPU? (Sur la photo du lien que vous avez partagé ils ne sont pas soudés)

    Postez une photo du montage - il faut absolument que les headers soient soudés

  7. #7
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut
    Oui, bien sûr, les headers étaient soudés.

    Nom : DSC_0045.JPG
Affichages : 768
Taille : 88,1 Ko

    ... et mon câblage :
    Jaune -> Pin 20 (SDA du 2560))
    Rouge -> pin 21 (SCL du 2560)
    Blanc -> GND
    Noir -> 5.5V

    Nom : DSC_0049.JPG
Affichages : 728
Taille : 97,8 Ko

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Citation Envoyé par Kinesra Voir le message
    et mon câblage :
    Jaune -> Pin 20 (SDA du 2560))
    Rouge -> pin 21 (SCL du 2560)
    Blanc -> GND
    Noir -> 5.5V
    Pourquoi 5.5V et pas 5V? typo?

    Cénéralement on utilise le rouge pour les 5V et le noir pour le GND, juste question de convention bien sûr.

    le fait que le i2c_scanner donne bien l'adresse : 0x68 montre que le composant est bien là.


    quel code utilisez vous?

  9. #9
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut
    Oui, erreur de frappe : il s'agit bien sûr de 5V (un essai fait avec la broche 3.3V ne change rien à mon problème)
    Comme je l'ai mentionné plus haut, le code est issu des exemples fournis avec Arduino IDE : basic_readings. J'ai pris le code tel quel, sans rien changer ... et l'erreur est systématique.

    Le capteur est hors de cause car ce simple code qui mesure l'accélération sur l'axe X fonctionne parfaitement bien :
    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
    #include "Wire.h"
     
    int16_t AcX;
     
    //-------------------------------------------------------------
    void setup()
    {
      Wire.begin();
      Wire.beginTransmission(0x68);  
      Wire.write(0x6B);
      Wire.write(0);
      Wire.endTransmission(true);
     
      Serial.begin(9600);               
    }
     
    //-------------------------------------------------------------
    void loop()
    {
      Wire.beginTransmission(0x68);
      Wire.write(0x3B);
      Wire.endTransmission(false);
      Wire.requestFrom(0x68,2,true);
     
      AcX = Wire.read() << 8 | Wire.read();
      Serial.print("X : ");
      Serial.println(AcX);
      delay(50);
    }
    Si quelqu'un pouvait reproduire le simple montage présenté plus haut et tenter de faire tourner basic_readings sans erreur, je suis curieux d'entendre son témoignage.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Des utilisateurs ont apparemment le même problème en utilisant des cartes chinoises :


    Il se pourrait bien que ce ne soit pas un MPU 6050 qui est monté sur la carte. Exécute le code WhoAmI du deuxième lien ci-dessus pour en être sûr.

  11. #11
    Membre averti
    Inscrit en
    Octobre 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 43
    Par défaut

    Bon, le WHO_AM_I me retourne 0x72 !
    Il semblerait que mon chip soit un peu trop cheap pour être honnête !

    Merci Jérôme pour avoir éclairé ma lanterne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. find: failed to restore initial working directory: Permission denied
    Par sam01 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 13/09/2016, 11h18
  2. Réponses: 0
    Dernier message: 04/09/2009, 12h48
  3. Réponses: 2
    Dernier message: 28/04/2009, 10h52
  4. Réponses: 3
    Dernier message: 10/04/2008, 14h02

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