Go Down

Topic: MPU-6050 et mémoire (SD / EEPROM)? (Read 157 times) previous topic - next topic

Kyusuke

May 27, 2018, 03:37 pm Last Edit: May 27, 2018, 03:40 pm by Kyusuke
Bonjour, j'ai quelques questions à propos de "mémoire" sur Arduino.

J'expose le problème (théorique):
J'ai un capteur MPU-6050 (central inertie) qui me renvoie 6 valeurs (3 d'accélération et 3 de vitesse angulaire) et je souhaite enregistrer ces données.

Le problème c'est que je ne sais pas si les 32Kb de la mémoire de mon Arduino Uno vaut suffire.
Donc j'aimerai savoir si possible, si vous me conseiller une mémoire EEPROM 24LC512 ou un module Micro SD.

Tout en sachant que je ne connais pas le taux de transfert maximal du MPU-6050 lorsqu'il est au max de ses capacités.
Je précise que dans ce projet je ne souhaite que enregistrer les donnés (sans besoin de les relire immédiatement) pour après les transféré ultérieurement sur mon PC pour traité les données acquise. Le temps de fonctionnement du système étant d'environ 2H30 par jour.

Je possède la Datasheet du module MPU-6050.
J'aimerai donc savoir quelles est (avec les infos de la Datasheet) le taux de transfert des données du MPU lorsqu'il est en mode ultra précision. Pour savoir si je dois opérer en I2C ou en SPI, et savoir si il mieux de EEPROM ou une SD niveau vitesse transfert et capacité de mémoire (sachant que je dois relativement facilement récupérer les donnés sous une forme utilisable sous PC Windows).

MPU-6050 Datasheet: 
https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf

Merci énormément d'avance pour vos réponse. (Désolé du pavé)
Cordialement, Kyu

kammo

Je ne peux pas te répondre, mais il faut que le temps d'écriture sur SD soit inférieur à la fréquence à laquelle tu écris sur SD.
Les cartes n'ont pas toutes les mêmes temps d'accès, mais je suis certains qu'il y a un spécialiste dans le coin ^^.

En attendant, si tu n'as pas lu cet article, il est intéressant:
https://www.carnetdumaker.net/articles/lire-et-ecrire-des-donnees-sur-une-carte-sd-avec-une-carte-arduino-genuino/
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

Kyusuke

Merci très instructif, cela m'aidera fortement si je dois utiliser une carte SD.
Mes questions sont toujours les mêmes que dans mon premier message. Je ne sais pas qui choisir en fonction de mon module MPU-6050.

Cordialement, Kyu

kamill

Bonjour,

Comme t'as dit kammo, ça dépend de la fréquence d'enregistrement et j'ajouterai aussi de sa durée, c'est à dire du nombre de points à stocker.
A priori, surtout si tu veux transférer sur un PC, une carte SD parait le plus indiqué.

Kyusuke

Sur la datasheet du module, je crois comprendre que cela tourne entre 8000 à 10000 Hz, soit 10K / seconde. Il y a un convertisseur analogique-numérique 16 bits, doit donc comprendre qu'il y a jusqu'à 10K donné de 16 bit par seconde d'émit par le module MPU-6050?

Pourriez me dire comment avec les info de la datasheet connaître le débit de donné maximal que le capteur peut émettre en mode Ultra.

Cordialement, Kyu

kamill

Il faut déjà te poser la question de savoir quels sont les besoins pour TON application.

Kyusuke

Ces besoin ont déjà étaient expliciter dans le premier message. Environ 02H30 de fonctionnement par jour étalonner sur plusieurs morceaux de période. Le truc c'est que si je connais le taux de transfert maxi possible du module en mode Ultra Précision et que je connais le temps d'acquisition (02H30), alors je pourrais savoir la capacité de mémoire dont j'ai besoin.

hbachetti

Salut

Attendu que le module MPU-6050 est un module I2C esclave, il n'envoie pas de données de sa propre initiative.
C'est donc le logiciel que tu vas développer qui va fixer le rythme de la mesure, donc des échanges avec le module.
La question est simple.
De quelle fréquence de mesure as-tu besoin ?
Ensuite en fonction de cette contrainte, il sera possible de déterminer si un bus i2c est adéquat et si une SD va pouvoir suivre, et même éventuellement si un ARDUINO va pouvoir suivre.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

lesept

Et pourquoi pas un ESP8266 qui écrit les données mesurées sur un serveur web, en wifi ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Tarasbulba

Hello,
J'ai un MPU6050 que j'interroge 200x par seconde en I2C.
On peut sans doute aller plus vite mais pour mon usage c'est suffisant.
Si tu récupères 6 valeurs de 2 octets à chaque fois, je te laisse faire le calcul du volume.
Mais l'eeprom de l'arduino n'est pas faite pour ca. Il faut stocker sur un module externe.
A+

hbachetti

Quote
J'ai un MPU6050 que j'interroge 200x par seconde en I2C.
Donc une acquisition toutes les 5ms.
Ce qui serait intéressant de savoir, c'est le temps que prend chaque acquisition.
Ainsi il serait possible de connaître le temps disponible pour stocker les données.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

kammo

J'ai l'impression que c'est encore un cas qu'on peut traiter en lisant les datasheets et en faisant des calculs complexes à la pépé (je comprends rarement ce qu'il dit^^), ou en testant à la kammo (attention certains composants brulent^^).

J'aurais tendance à essayer, pousser le machin, essayer, pousser, et voir sa limite.

En fonction de la carte (qualité, vitesse, capacité, d'autres trucs de chinois), des données, de l'arduino, de la connectique, du cheval blanc d'Henri IV, il va être megafficile d'avoir un calcul sûr.

Teste avec ce que tu as, si ça marche, tu as gagné une journée de maths.

Je reprends l'idée de fond des collègues, c'est pas de savoir combien de données max on peut écrire en un temps T, mais de savoir de combien de données tu as besoin.

Si le but c'est de relire le parcours d'un drone dans un modèle 3d, ça sert à rien d'avoir plus de 30 data/s, à moins de faire du slowmotion sur 2h30? Quel est ton besoin, quelles sont les contraintes?

D'un module à un autre, je suis presque certain qu'on n'aura pas les mêmes données REELLES.
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

Go Up