Mpu6050

Bonsoir,
Pour mon projet de fin d’étude, je souhaite réaliser la trajectographie d’une fusée expérimentale. Pour cela, j’ai trouvé ce module sur votre site, MPU6050 Invensense PCB, que je mettrais dans la fusée et qui me permettrait d’obtenir 3 angles et 3 accélérations. Cependant, quels composants dois-je rajouter pour pouvoir enregistrer les données sur un logger (présent dans la fusée) durant le vol de la fusée, pour ensuite récupérer les données sur un Pc une fois l’expérience terminée. Est-ce que ce logger peut être utilisé : sparkfun.com/products/9228 ? De plus, quel est le câblage à effectuer ?
Je vous remercie de votre aide.

Le mieux est de prendre le MPU6050 et l’interfacé avec ce micro qui est suffisant drotek.fr/shop/fr/118-arduino-nano-v3.html.
Le code pour le MPU6050 et Atmega328 n’est pas ce qui manque! Ensuite il vous reste à interfacer un lecteur de carte microSD sur le bus SPI (ex ebay.fr/itm/MICRO-SD-Card-Ad … 232859917a) et le tour est joué. Il existe une librairie Arduino pour l’utilisation d’une carte SD.

Merci de votre réponse. Je vais utiliser les modules que vous me proposez. Cependant, peut-on alimenter la carte arduino avec une batterie ? Devons-nous utiliser une autre batterie pour alimenter le MPU6050 et le module SD ?
Je vous remercie de votre aide.

Oui biensur il est écrit “Input Voltage (recommended): 7-12V”.
Je vous conseille une batterie 2S qui sera parfait pour alimenter toutes les cartes.

Bonsoir,
J’ai bien reçu ma commande. Merci pour votre rapidité. J’ai configuré la carte nano v3 sans soucis. J’ai seulement une question pour la suite de mon projet. Dans la description de la carte il est dit :
“The FTDI FT232RL chip on the Nano is only powered if the board is being powered over USB. As a result, when running on external (non-USB) power, the 3.3V output (which is supplied by the FTDI chip) is not available and the RX and TX LEDs will flicker if digital pins 0 or 1 are high.” Je souhaite alimenter la carte arduino et le mpu6050 avec une batterie donc je ne serai plus en USB … Si j’ai bien compris : si je branche la batterie sur le port “6-12v” de la carte, la sortie 3.3v ne marchera pas pour alimenter le mpu6050 …Comment je peux alimenter les deux composants avec une batterie 2 s 7.4 V ? Me faut-il un convertisseur ou puis-je trouver un autre moyen ?
Je vous remercie encore pour votre aide.

La carte MPU6050 possède aussi son propre régulateur 3.3 donc sur le 5V vous pouvez connecter une batterie 2S sans souci.

Par contre, je dois rajouter un convertisseur 5v-3,3v ( par exemple pca9306) entre la carte nano et le MPU6050 car la carte travaille en 5v et le MPU en 3,3v … J’ai un autre moyen de faire ou je dois quand même acheter un convertisseur ?
Merci

Non pas besoin car la carte MPU6050 tire les lignes du bus I2C au 3.3. Il faut juste que les pull-ups dans le code Arduino soient désactivés!

Parfait alors ! Mais la réalisation est moins parfaite … J’ai essaye deux méthodes :

  • changer le code dans la librairie wire
  • ajouter un programme dans le logiciel pour les désactiver ( varesano.net/blog/fabio/how- … cl-i2c-bus)
    Aucun des deux ne marche dans mon cas et je ne vois pas pourquoi … Je ne trouve pas beaucoup de commandes différentes à tester sur internet…

Vous pouvez vous inspirer du code opensource MultiWii. Dans le fichier config.h il est possible d’activer ou désactiver les pull-ups.

Parfait, ça marche très bien, le voltmètre m’indique bien une sortie 3.3v vers SDA et SCL ! Par contre j’essaye depuis une journées de tester le mpu mais je n’y parviens pas … J’ai fait un scan I2c et j’obtiens bien : “I2c found at address 0*69” . Après j’ai essaye un programme qui marche pour un mpu différent mais je ne reçois que des 0 en retour …

[code]#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() {

DigitalWrite(SDA,low); (“désactiver les pull ups”)
DigitalWrige(SCL,low);

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);
}[/code]

Donc je vois pas pourquoi ce ne marche pas … Comment je pourrais vérifier qu’il ne soit pas grille à cause d’une de mes manip ? Merci encore

Vous avez utilisé l’adresse 0x68 dans le code. Est ce normal?

Je viens de remarquer que j’avais oublie de changer le “68” en “69” sur le message mais je l’ai fait dans le programme. J’ai réussi à résoudre le problème et j’obtiens bien les valeurs de l’accelerometre et du gyroscope sur le port série. J’ai aussi réussi à l’interfacer avec la carte micro sd et tout se passe bien ! Il me manque cependant un dernier détail… Comment change-t-on la sensibilité du mpu ? Je voudrais le mette en ±16g et ±2000deg/s. J’ai cru comprendre qu’il fallait rajouter une commande comme celle ci :
int AFS_SEL = 2048;
float FS_SEL = 16.4;
J’ai essaye mais ça ne fonctionne pas… Y a-t-il un code que je pourrais simplement rajouter dans ma procédure ?
Merci

Je pense que dans le code MultiWii vous allez pouvoir trouver ca!