Fréquence et analyse spectrale

Bonjour à tous !

Je suis tout nouveau dans le domaine arduino et j'ai quelques soucis pour un projet utilisant une carte arduino UNO R2. J'espère que vous aurez un peu de temps à accorder à un néophyte :p.

Le but de mon projet est de mesurer la masse d'un objet.

Pour cela j'ai eu droit à une imprimante ! On aime les challenges. Je suis sûr que vous aussi. Grosso modo je veux attacher la masse à mesurer à un ressort, étirer le ressort et le relâcher. L'idée est ensuite de récupérer la position de la masse en fonction du temps (les pseudo oscillations jusqu'à amortissement). Ensuite j'ai besoin de faire une transformée de Fourier de ce signal pour récupérer la fréquence fondamentale, qui dépend de la masse. Une fois le fondamental identifié un simple calcul donnera la valeur de la masse.

Le problème est donc : récupérer la position en fonction du temps ET la détermination du fondamental / la transformée de Fourier.

En gros j'ai accès à un capteur fourche avec une règle optique pour récupérer la position. ( un capteur d'imprimante AEDS 9640 X10 ). J'ai réussi à utiliser un code permettant d'obtenir une valeur d'un indicateur pos en fonction du sens du mouvement.
( cf Arduino Playground - RotaryEncoders )

Ma question est :

Comment ( est il possible ? ) utiliser cet indicateur pour remonter à une position en fonction du temps. Et après cela par quel moyen est il possible de récupérer le fondamental / faire une transformée de Fourier ? C'est à dire, comment exploiter les résultats visibles dans une boite de dialogue Arduino.

Voilà, la réponse vous paraîtra peut-être évidente mais après de grosses recherches je n'ai toujours rien trouvé.

Merci à tous et passez une belle journée !

Je ne vais pas t-être d'un grand secours mais je dirais :
C'est un problème de dynamique. Il faut commencer par résoudre toute la partie théorique pour savoir ce qu'on veut ou ce qu'on peut mesurer.
Peut-être que tu as déjà fait tout ce travail, sinon il faut le faire, et nous donner ces résultats avec un peu plus d'explications si tu veux qu'on participe avec un peu d' efficacité.
A partir de là on saura quels paramètres il faudra mesurer et avec qu'elle précision.

PS : ou mon pifomètre perd de sa finesse de détection ou ton sujet sent très fortement un sujet scolaire/universitaire.
Je me trompe ?

Haha oui en effet complètement universitaire ...

La partie théorique n'est pas un problème, je sais exactement ce dont j'ai besoin. C'est à dire de la position de la masse en fonction du temps. Une fois que je l'ai il suffit de récupérer le mode propre (1ère harmonique) de ce signal.

Pour cela il doit exister un moyen de récupérer les données fournies par la carte Android et de les traiter dans un logiciel annexe non ?

Et si tu tapais "Arduino transformée de Fourier" dans un moteur de recherche ?
Qwant et gogole regorgent de réponses.

Bonjour,

Je ferais juste une remarque qui est peut-être totalement hors sujet :

  • le principe du projet est peut-être de mettre en relation la dynamique d'un mouvement rectiligne(mouvement quasi sinusoïdal avec un ressort à force de rappel pratiquement constante) dans le but de déterminer une constante (la masse d'un objet)
    Dans ce cas il faut obtenir la position (x) de la masse en mouvement et la date correspondante (t). Donc il faut des mesures de différentes valeurs de x(t)

Une des difficultés qui se dessinent serait de déduire avec une très bonne précision une abscisse rectiligne d'une position angulaire.

Si on conserve le capteur de position angulaire, ne serait-il pas plus intéressant de prendre un mouvement de rotation avec la relation fondamentale de la dynamique (F = mdv/dt) remplacée par celle en rotation ( C = JdW/dt) et de travailler sur une variation de couple, de déduire la variation de masse d'une variation du moment d'inertie J ?

Je suis peut-être totalement à coté de la plaque et parle peut-être "chinois" .... :slight_smile:

Serge .D

aligote:
Une des difficultés qui se dessinent serait de déduire avec une très bonne précision une abscisse rectiligne d'une position angulaire.

Il n'est pas fait mention d'un capteur angulaire.
Polak parle "d'un capteur fourche avec une règle optique"

fdufnews:
Il n'est pas fait mention d'un capteur angulaire.
Polak parle "d'un capteur fourche avec une règle optique"

OK.

J'avais juste parcouru le lien indiqué :

http://playground.arduino.cc/Main/RotaryEncoders

Serge D

Si l'on associe le capteur fourche à une roue codée de ce type :
http://www.rhaaa.fr/capteur-optique-de-vitesse-et-sens-de-rotation-2

Ensuite un programme déclenché par interruptions (un pour Rising, un autre pour Falling) devrait permettre de mesurer les positions de la masse à chaque instant.

Reste ensuite à exploiter une TFD ( ou autre...) pour en déduire ses paramètres.

ard_newbie:
Si l'on associe le capteur fourche à une roue codée de ce type :

Polak parle d'une fourche avec une règle optique.
C'est le capteur de position du chariot de têtes que l'on trouve sur les imprimantes. Donc l'information de mouvement on l'a.

@polak
Si tu connais le pas de la règle optique et si tu comptes le nombre d'impulsions en sortie de la fourche, cela te donne une information sur la longueur parcouru. En utilisant la fonction millis() ou micros() tu peux avoir une information temps que tu peux lier à la longueur parcourue.
Par contre l'arduino UNO n'a pas beaucoup de mémoire à bord tu ne pourras pas mémoriser beaucoup de points.
Il faudra soit compresser les informations, soit les envoyer vers une machine hôte plus puissante.

Bonjour à tous :slight_smile: !

Merci pour vos réponses.

En effet je dispose d'un capteur linéaire avec la règle. Même si il y a aussi des capteurs angulaires dans l'imprimante.

En effet j'ai besoin de suivre la position de la masse en fonction du temps. Ce qui peut se faire via la carte Arduino et en ajoutant le temps via l'application.

Le problème se présente quand je cherche à exploiter ses résultats. Comment les transférer par exemple sur un autre logiciel pour les analyser/traiter ?

@pepe

La transformée de Fourier peut s'appliquer à un signal quelconque. Il est alors décomposé sur une infinité d'harmonique. Le but ici serait de déterminer la fréquence du fondamental, directement relié à la masse.
Si tu as d'autres idées (ce que tu as l'air de fortement insinuer, je suis tout à ton écoute !)

Je veux très bien te croire ! c'est pour cela que je te demande ce que tu as en tête.

Je crois que Pepe pointe le principal inconvénient du concept; à savoir que faire des mesures sur le mouvement pseudo-sinusoïdal d'une masse suspendue à un ressort amène à une fréquence faible.
En conséquence une précision correcte ne peut être obtenue que sur une durée assez longue ....(au moins égale à plusieurs périodes)

@Pepe :

.... Il existe beaucoup d'autres solutions mathématiques pour déterminer la masse à partir du comportement dynamique du système (y compris en exploitant la fréquence), et en général elles permettent d'obtenir un résultat précis beaucoup plus rapidement (pour la plupart elles ne réclament des mesures que sur quelques d'oscillations, et certaines sur moins d'une période).....

Quelles pourrait-être le principe envisagé ?

(mesures à des fréquences nettement plus élevées sur une oscillation entretenue à la résonance ... ?)

Serge .D