Micro controlleur rapide avec horloge précise ?

Bonjour,

j'ai dans l'idée de faire un gravimètre absolue. Pour comprendre mes besoins j'explique un peu ce que c'est.
Le principe c'est de mesurer l'accélération de pesanteur en utilisant la chute libre d'un objet.

La formule qui donne g fait intervenir la hauteur de chute, et la vitesse.

j'aimerais pouvoir arriver au moins a etre précis sur a 2 décimales (9.81 m/s2).

Pour avoir au moins ce degré de précision il faut avoir une vitesse précise.
Pour avoir une vitesse précise, il faut une mesure de distance et de temps précis.

La mesure de distance la plus précise utilise un interféromètre laser. Ca permet de mesurer des variations de distance d'1/4 de la longueur du laser, pour le rouge ça correspond a environ 150nm a chaque fois que l'on passage du rouge au noir.

Voici pour la partie théorie, maintenant la partie plus concrète.
Si on part sur une hauteur de chute de 20cm, ça fait 1.33x106 oscillation sur l'interféromètre.
Le temps de chute pour 20cm est d'environ 0.2s.

Ce qui donne 6.67x106, disons 7 millions d'oscillation. et j'ai besoin du temps pour chaque passage a 0.
Je pense faire la mesure via une photodiode et enregistrer la variation du voltage directement.Ca donnerait donc une sinusoïde. Il faut donc avoir au moins 3 points pour savoir quand on est en haut ou en bas de la sinusoïde. on arrive donc a 3x7 => 21 Millions d'enregistrement a la seconde , soit 1 enregistrement toutes les 50 nanoseconde

D'après mes recherches une lecture analogique sur un arduino prend 100µsec, donc les ATmega des arduino ne permettent pas cette précision.
De plus la précision de l'horloge peut atteindre 500 ns au mieux, donc pas assez précis.

Je cherche donc un micro contrôleur qui puisse
- lire et enregistrer a une fréquence supérieur a 20mhz
- fournir un temps précis a quelque nano secondes

Des micro controleur sont capable de fournir ça ? ou il faut basculer sur des trucs genre raspberry pi ?

merci d'avance !

Pour te répondre en partie, la carte arduino la plus puissante actuellement est la Arduino Due, regarde si elle te suffit, sinon, je laisse quelqu'un d'autre t'éclairer :slight_smile:

Merci pour cette réponse détaillée.
Je pensais qu'en prenant le valeur de tension fourni par la photodiode, il n'y avait pas de conversion analogique/digital.
En fait je suis totalement néophyte dans le monde des microcontrôleur et circuits électroniques.

c'est pourquoi je ne visualise pas du tout comment faire autrement (que la façon décrite dans le premier poste e) en utilisant des circuits électroniques analogiques rapides.

je vais essayer de me renseigner sur ces circuits.

ewaca:
Le principe c'est de mesurer l'accélération de pesanteur en utilisant la chute libre d'un objet.

Tu as un tube à vide d'air ?

La précision ne dépend pas du quartz seul mais de l'ensemble électronique + quartz.

  • L'électronique qui utilise un quartz doit être adaptée : en particulier le choix des condensateurs doit être chiadé.

  • Il faut savoir que la précision d'un quartz dépend de la façon dont il est taillé et bien évidement la taille la plus économique n'est pas la plus précise.

  • Un quartz n'est pas stable en température, les supers oscillateurs utilisent des quartz dans des enceintes thermostatés.

La fameuse RTC DS3221 est précise parce que le quartz est intégré dans le boîtier qui contient le CI, donc absolu contrôle de l'adaptation, et que le CI maintient le quartz à température constante.

Christian_R:
Tu as un tube à vide d'air ?

dans le principe il va falloir en fabriquer un oui. Pour le moment je regarde juste si le projet est réalisable avec de l'électronique plutot bon marché.
Le but n'est pas d'arrivé a la meme précision que les gravimètre absolus qui donne un résultat a 9.810 000 01 pret et qui utilisent des horloges atomiques, mais de voir quel précision je peux atteindre avec un gravimètre maison.

sinon j'ai fait quelque recherches, apparemment en sortie analogique de la photodiode on a des valeurs qui varient entre 0 et 1023 (pour du 10 bit)
si je récupère que ces chiffres, je reste en analogique pur ?

@pepe :
je n'y connais pas grand chose encore en électronique. je pensais qu'on avait directement une tension en sortie d'une photodiode, et j'ai vu que non.
Après je sais ce que je dois avoir : a un endroit précis, un temps précis
Je connais le matériel a utiliser : interféromètre et une horloge
mais n'y connaissant pas grand chose en électronique, je découvre les limites de telle ou telle option au fur et a mesure de mes recherches.

voici l'image du principe d'un gravimetre absolu

pour le moment je n'ai pas de référence, j'en suis juste a regarde si le projet est réalisable.

le coup de la valeur de 0 à 1023 j'ai cru que c'était de l'analogique parce que la fonction qui permet de lire ça est "analogRead" ... :confused:

Après que la photodiode me fournisse des volt, des ampères ... je me fiche un peu de l'unité a vrai dire, je veux juste avoir la variation.

Est ce que l'on peut rester dans le domaine de l'analogique pur en enregistrant les variations fournies par la photodiode ?

Après que la photodiode me fournisse des volt, des ampères ... je me fiche un peu de l'unité a vrai dire, je veux juste avoir la variation.

Pas completement faux mais surement pas juste.
C'est quand on ne cherche pas à comprendre les phénomèmes mis en jeu que l'on est incapable de comprendre pourquoi ce qui devrait marcher les doigts dans le nez ne marche pas.
Il est vrai qu'il suffit de demander sur un forum a ce moment là :smiling_imp:

Comprendre le phénomène mis en jeu évite d'écrire des âneries comme :

Je pensais qu'en prenant le valeur de tension fourni par la photodiode, il n'y avait pas de conversion analogique/digital.

le coup de la valeur de 0 à 1023 j'ai cru que c'était de l'analogique parce que la fonction qui permet de lire ça est "analogRead"

Ces deux citations veulent dire exactement le contraire.
Laquelle est la bonne ?

Une photo diode c'est une DIODE.
Une diode se commande en COURANT pas en volt.
Une photodiode donne du COURANT.

Il faut donc convertir le courant en tension. Cela peut se faire rudimentairement avec une résistance (Loi d'Ohm) ou beaucoup plus compliqué avec des ampli transimpédance en passant par la solution intermédiaire de l'amplification simple.

Donc tant que tu ne sera pas plus clair sur la façon dont tu utilise la photodiode autant "uriner dans un Stradivarius".

Je ne pense pas que tu puisse détecter quoi que ce soit, les variations de gravités sur la terre sont infinitésimales, et surtout, largement perturbées par la lune et le soleil (marées).

je pense avoir écrit pas mal de fois que j'y connaissait encore pas grand chose dans tout ce qui est électronique...
Comme j'y connait pas grand chose, je fais des recherches ... et suivant les sites sur lesquels on tombe, c'est plus ou moins claire la différence entre analogique et numérique.
Ca va du plus simple :

  • analogique = infinité de valeurs
  • numérique = 0 ou 1

au plus complet qui rentrent plus dans les détails et disent qu'une valeur numérique est une valeur analogique ne pouvant prendre que 2 valeurs ... si on veut BIEN mettre la confusion dans l'esprit d'un néophyte y a pas mieux ...

Si je comprend bien ce que vous me dites, si on veut être le plus rapide, il faut rester un maximum dans l'analogique, donc mesurer une intensité en Ampère
Et si j'ai toujours bien compris la description de la fonction analogRead(), il transforme une tension (Volt) en entier allant de 0 a 1024 pour une résolution de 10 bits.

En gros tout ce qu'on veut pas.

Dans mon projet, la priorité c'est la rapidité de mesure. Si je passe par des conversion Analogique/numérique, ça sera difficile de l'avoir d'après ce que j'ai compris.
Du coup pour etre rapide, j'aimerais sortir les variations de courant mesurées par la photodiode.

Mais je me demande si on peut mesurer directement une intensité sans passer par une conversion Analogique/digitale sur un arduino

@Rigolo :
L'électronique c'est pas trop mon truc, mais mon boulot consister à chercher des vides en mesurant la variation d'intensité du champ de pesanteur local.
En gravimétrie, l'unité de mesure c'est le gal.
9.81 m/s-2 = 981 gals.
Lors des plus fortes marrées (alignement soleil/lune/terre) on est sur des variation de d'une centaine de µgals
Je ne prétend pas vouloir etre aussi précis, j'aimerais arrivé à être plus précis que gal, le rêve serait au d'atteindre le milligal avec une répétitive d'une 10aine de milligal. mais j'y suis pas, j'en suis encore a essaye de comprendre le B-A BA de l'électronique

J'oubliais que les variations de pressions et températures de l'air influent sur la vitesse de chute, autre paramètre à prendre en compte sauf à faire plusieurs mesures dans un intervalle de temps limité au même endroit.
Ceci dit, je ne veux pas jouer les rabats joie, ta démarche de réflexion est intéressante.

bonsoir
Les gravimetres absolus actuels utilisent une horloge au rubidium.
Je ne sais pas quel est ton projet exactement, mais ce n'est pas une réalisation à la portée de tout le monde.
Les phénomènes en jeu necessitent un environnement extrement controlé pour obtenir des resultats utiles sortis du bruit de fond.
Le ticket d'entrée sur du gravimetre absolu doit tourner aux alentours de 200.000 US$

  • analogique = infinité de valeurs

Non.

Digital = possible infinité de valeurs discrètes. Une suite de valeurs discrète est une suite de nombre avec des trous entre les nombres.
Les nombres entiers sont une suite discrète.

Analogique = variation continue des valeurs sans trous.
Les nombres réels sont une suite continue donc analogique.

Débuter n'est pas une tare tout le monde a été débutant et le sera encore.

Mais ce qui me déplaît c'est quand je lis :

Après que la photodiode me fournisse des volt, des ampères ... je me fiche

Parce que si tu commence comme cela tu va droit dans le mur.
Ce sont peut être des paroles imprudentes qui ne reflètent pas exactement le fond de ta pensée mais elles sèment le doute.

J'ai aussi des doutes sur la faisabilité de ton projet mais je ne chercherais pas à te décourager.
Toute expérience est formatrice, ne serait-ce si celle -ci t'apprend à ficeler un projet et à lire des datasheets.
Mais pour avoir une chance de réussir il faut absolument qu'avec un sujet pareil tu sortes de l'à peu prés..

Attention aussi au temps de réponse de la photodiode, si ce projet cherche à mesurer de petites fluctuations.

C'est bien pour cela qu'il faut qu'il indique les performances des composants qu'il utilise.
Des photodiodes il y en a qui ne fonctionnent qu'à quelques dizaines de kHz et d'autres qui fonctionnent à 40 GHz.
Ce n'est évidement pas le même prix, quoique la différence n'est pas si énorme , mais surtout il n'y a pas le même matériel autour, et là ça fait la différence de prix.

68tjs:
C'est bien pour cela qu'il faut qu'il indique les performances des composants qu'il utilise.
Des photodiodes il y en a qui ne fonctionnent qu'à quelques dizaines de kHz et d'autres qui fonctionnent à 40 GHz.
Ce n'est évidement pas le même prix, quoique la différence n'est pas si énorme , mais surtout il n'y a pas le même matériel autour, et là ça fait la différence de prix.

Je savais bien que j'avais lu un truc recemment sur un gravimètre absolu
facsimile annoté d'un recent article d'IGN MAGAZINE

lien vers l'article à suivre

Rigolo:
J'oubliais que les variations de pressions et températures de l'air influent sur la vitesse de chute, autre paramètre à prendre en compte sauf à faire plusieurs mesures dans un intervalle de temps limité au même endroit.
Ceci dit, je ne veux pas jouer les rabats joie, ta démarche de réflexion est intéressante.

Les gravimètre absolues sont sous vides donc je ne suis pas sur que ce soit sujet aux changement de pression atmosphérique ... quand bien meme c'est de l'odre du µgal et j'ai l'équation pour le corriger...
Je connais la gravimétrie (ça fait partie de mon boulot), je connais tous les facteurs qui peuvent influencer les résultats.
D'ailleurs tu as oublier la lattitude et l'altitude. Tout ça se corrige par des équation qui au pire font varier les valeurs dans une gamme de 5µgals je cherche a mesurer 1 000 000µgals au mieux je reverais d'arriver a 1 000µgals donc je pense que niveau correction je suis bon

Artouste:
bonsoir
Les gravimetres absolus actuels utilisent une horloge au rubidium.
Je ne sais pas quel est ton projet exactement, mais ce n'est pas une réalisation à la portée de tout le monde.
Les phénomènes en jeu necessitent un environnement extrement controlé pour obtenir des resultats utiles sortis du bruit de fond.
Le ticket d'entrée sur du gravimetre absolu doit tourner aux alentours de 200.000 US$

Je remets ce que j'ai déja écrit :
1er post : j'aimerais pouvoir arriver au moins a etre précis sur a 2 décimales (9.81 m/s2).

un peu plu loin dans les posts : Le but n'est pas d'arrivé a la meme précision que les gravimètre absolus qui donne un résultat a 9.810 000 01 pret et qui utilisent des horloges atomiques, mais de voir quel précision je peux atteindre avec un gravimètre maison."

68tjs:
C'est bien pour cela qu'il faut qu'il indique les performances des composants qu'il utilise.
Des photodiodes il y en a qui ne fonctionnent qu'à quelques dizaines de kHz et d'autres qui fonctionnent à 40 GHz.
Ce n'est évidement pas le même prix, quoique la différence n'est pas si énorme , mais surtout il n'y a pas le même matériel autour, et là ça fait la différence de prix.

Je cherche juste a voir la précision qu'il me faut. Au début je partais juste une une bille tennue par un électro aimant et a al coupure de ce dernier, prendre le temps, et l'arreter quand la bille a fini la chute (par un contact donc fermeture de circuit)
J'ai fait des recherches, pour arriver a 10-2 de précision sur la gravité, il me fallait 10µsec, chose accessible avec l'arduino.
Mais il fallait etre plus précis qu'1mm sur la hauteur de chute, et les distabces metre ont au mieux 1.5mm de précision.
Je suis donc parti sur l'interférometre. Je regarde ce qu'il me faut comme précision pour mesurer les oscillations de l'interférometre, et j'en suis là.
je ne me suis pas mis dans l'idée de faire un truc ultra précis dès le début, je cherche juste le facteur limitant, qui m'empeche d'atteindre cette précision.

ewaca:
Le but n'est pas d'arrivé a la meme précision que les gravimètre absolus qui donne un résultat a 9.810 000 01 pret et qui utilisent des horloges atomiques, mais de voir quel précision je peux atteindre avec un gravimètre maison."

C n'est à ce stade que le terme maison est là AMHA problematique
même à la precision/resolution que tu envisage , tu ne sortiras pas du "bruit" avec un environnement "arduino"

En tous cas , je ne pense pas que tu trouvera la resolution de ton "probleme/souhait" sur ce forum
regarde plutôt vers les forums "dédiés capteurs géodésiques "

De toutes façons , si tu ne dispose pas déjà d'une excellente BdT , tu n'aboutira à rien de cohérent/verifiable.
Les lois admises de la physique à ce jour , restent encore incontournables :grin:

bonjour

Perso je pense relativement utopique ce projet de gravimetre Absolu avec la techno envisagée, mais c'est interessant.
La résolution/precision du problème tient à la qualité de l'horloge (stabilité de F0, stabilité de phase , et autres ) , et meme en tapant sur du moins lourd que de l'horloge atomique (TCXO par exemple) , une excellente bonne horloge est de toutes façons indispensable.

bonjour,

j'ai pas eu le temps de faire des calculs pour savoir quelle dérive peut être acceptable (erreur cumulée <1mm)

Mais comme cette dérive est dépendante de la température, il y a peut être possibilité de mesurer la température de la diode et d'appliquer une correction. J'ai fais quelques recherches a ce sujet, j'ai pas trouvé grand chose :confused:

pepe:
On pourrait donc envisager, avec un Arduino Leonardo cadencé par un quartz précis à ±50 ppm, de mesurer la distance et la durée de chute avec des résolutions de 325 nm et de 62,5 ns (correspondant à ±1,3 ppm et ±0,28 ppm). Si l'on excepte les autres facteurs d'erreur (comme notamment la précision et la stabilité de la longueur d'onde du laser utilisé), alors la méthode appliquée, la hauteur de 25 cm et le laser de 650 nm permettent théoriquement de déterminer l'accélération de la pesanteur avec trois chiffres après la virgule (±0,0005 m/s²).

Là je ne comprend pas vraiment toute cette partie.
Mes recherches on montré l'existence d'une fonction native micro(), précise a 4µs. Une librairie permet de descendre a 0.5µs (surement en jouant sur une préscale si j'ai bien compris)
Mais je ne comprend pas comment tu arrives a cette résolution de quelque dizaine de ns.
En tout cas merci pour toutes ces infos !!