Go Down

Topic: Projet de mesures d'oscillations avec MPU-6050 (Read 1 time) previous topic - next topic

marc1424

Jan 12, 2013, 11:39 pm Last Edit: Jan 13, 2013, 12:25 am by marc1424 Reason: 1
Bonjour,
j'ai un projet de mesure d'oscillations de la cîme d'un arbre.
Dans un premier temps, je voudrai faire fonctionner ce foutu MPU-6050. Il y a des semaines que je suis dessus.
j'ai eu beau télécharger les applications, les librairies pour visualiser une application basique du genre:
https://www.youtube.com/watch?v=4Dmbr4XDnSM
https://www.youtube.com/watch?v=Lf-DyeIPqcs
Rien n'y fait. Pas d'affichage.
Mon but final est de représenter sur des cercles de couleurs (genre cible) la position de la cîme d'un arbre afin d'en observer son débattement avec le vent et de définir des valeurs d'alarmes.
Si quelqu'un a déjà utilisé avec succès le MPU-6050, déjà réalisé un projet similaire, ou tout simplement pitié de moi :) , je suis preneur
Merci

MACMan8

Salut, quel est le "breakout" du MPU-6050 que tu utilises ?
Parce que je sais que sur eBay, par exemple :), il existe des "breakout" sans adaptateur 5V-3V3 ; et le MPU-6050 n'est pas 5V tolérant. Si il n'y a pas d'adaptateur sur ta carte et tu n'en a pas fait un à l'extérieur, il est normal que ça ne marche pas ; mais dans ce cas là, tu risques d'avoir "grillé" ton module et il t'en faudra un nouveau.
Si ce n'est pas ça, je ne vois pas ce que ça peux être à part un mauvais montage...
Lao Tseu l'a dit "Longue est la route qui mène à la connaissance, et nombreux sont les péages".

marc1424

C'est exactement ce modèle. http://www.ebay.com/itm/MPU-6050-Module-3-Axis-Gyroscope-Accelerometer-Module-Arduino-DIY-/270974251850
Il est indiqué 3 - 5v
Le voyant sur le module est bien allumé.
Sorties SCL et SDA
J'ai (entre autres) essayé ce programme : https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/MPU6050_6Axis_MotionApps20.h
Le message suivant apparait :  MPU6050_raw:77: error 'accelgyro' was not declared in this scope
Aurait tu essayé un programme qui marche ? cela me permettrait de vérifier si mon module fonctionne. Je vais quand même en commander un autre en attendant

MACMan8

C'est le même modèle que je possédais.
L'alimentation est en effet soit 3V3 soit 5V car il y a un régulateur ; mais ce n'est valable que pour l'alimentation : il n'y a aucun convertisseur pour les lignes de l'I2C !
Pour un code qui marche, désolé mais j'ai supprimé celui que j'avais fait car j'ai changé de chip pour un 5V tolérant mais je te conseille d'utiliser cette librairie pour l'I2C : comme expliqué, elle marche mieux, est plus simple et prend moins de place que Wire :
http://dsscircuits.com/articles/arduino-i2c-master-library.html
Après, il te suffit d'aller dans le datasheet du MPU-6050 et de regarder dans quels registres tu dois lire pour avoir les valeurs, et éventuellement dans quels registres tu dois écrire (et quoi) pour modifier les paramètres.

EDIT
J'ai retrouvé mon code :) . Il marche avec la librairie citée ci-dessus et affiche sur le port série toutes les deux secondes les valeurs de l'accéléromètre et du gyroscope ; avec les paramètres d'origine du chip (il ne change rien, il lit juste) :
Code: [Select]

#include <I2C.h>

int data[3];


void GetAccValues(int AccValues[3]) {
  byte AccRawData[6];
  I2c.read(0x68, 0x3B, 6, AccRawData); 
  AccValues[0] = (AccRawData[0] << 8) + AccRawData[1];
  AccValues[1] = (AccRawData[2] << 8) + AccRawData[3];
  AccValues[2] = (AccRawData[4] << 8) + AccRawData[5];
}

void GetGyroValues(int GyroValues[3]) {
  byte GyroRawData[6];
  I2c.read(0x68, 0x43, 6, GyroRawData); 
  GyroValues[0] = (GyroRawData[0] << 8) + GyroRawData[1];
  GyroValues[1] = (GyroRawData[2] << 8) + GyroRawData[3];
  GyroValues[2] = (GyroRawData[4] << 8) + GyroRawData[5];
}


void setup() {
 
  I2c.begin();
  Serial.begin(9600);
 
}

void loop() {
 
  Serial.println("Valeurs de l'acc :");
  GetAccValues(data);
  Serial.print("x : ");
  Serial.println(data[0]);
  Serial.print("y : ");
  Serial.println(data[1]);
  Serial.print("z : ");
  Serial.println(data[2]);
 
  Serial.println("Valeurs du gyro :");
  GetGyroValues(data);
  Serial.print("x : ");
  Serial.println(data[0]);
  Serial.print("y : ");
  Serial.println(data[1]);
  Serial.print("z : ");
  Serial.println(data[2]);
 
  delay(2000);
}
Lao Tseu l'a dit "Longue est la route qui mène à la connaissance, et nombreux sont les péages".

Reynosa

#4
Jan 13, 2013, 03:02 am Last Edit: Jan 13, 2013, 12:26 pm by Reynosa Reason: 1
Bonne nuit !

Je passe ici histoire d'une minute pour dire que moi aussi j'ai des problèmes avec ce MPU-6050 !
J'ai installé la biblio, et jai compilé ton code, je ne reçois en sortie que des 0...
(en théorie je n'ai pas de problème de câblage, j'utilise la CRIUS AIO PRO v1.1)

En espérant que ça fasse avancer le schmilblik  :~


EDIT: Maintenant ça fonctionne aussi pour moi... Oo

marc1424

ça marche !!!
MACMan8 tu est ma nouvelle religion  :)
Merci

MACMan8

Bonjour,
Content de voir que mon code a trouvé une reconversion  :)
Cependant attention Marc1424 : pour moi aussi ça a marché au début, mais si il n'y a pas d'adaptateur pour les signaux I2C, ça risque de griller un jour ou l'autre...
Lao Tseu l'a dit "Longue est la route qui mène à la connaissance, et nombreux sont les péages".

Artouste


Bonjour,
j'ai un projet de mesure d'oscillations de la cîme d'un arbre.


Bonjour
ça c'est le genre de projet que j'aime bien  :smiley-mr-green:
et par pure curiosité assumée  8)
c'est quoi comme arbre ?

marc1424

Un pin très haut avec une cabane en haut. L'arbre balance naturellement avec le vent. Le projet est destiné à savoir quand il faut impérativement descendre. La vitesse du vent n'est pas suffisante.

Go Up