Mesure du temps très précise


13

Je vais mesurer des temps très courts aussi précisément que possible. L'appareil recevra une première impulsion et, dans les 150 microsecondes, six autres, chacun sur ses propres fils. Le temps entre le premier signal et chacun des six autres signaux doit être mesuré aussi précisément que possible. La précision doit être d'au moins 100 nanosecondes, mais plus c'est mieux.

Quel microcontrôleur serait le mieux pour cela? J'ai trouvé ça . Ils semblent avoir une minuterie avec une période de 4 nanosecondes. Ce serait assez précis pour moi.

Un autre microcontrôleur serait-il préférable de le faire? Cela peut-il être fait avec AVR?


2
Je pense que vous parlez de précision, pas d'exactitude. Et si vous avez une précision en nanosecondes, mais que l'horloge sous-jacente est éteinte de 10%? Ensuite, les mesures ne sont pas précises.
Kaz

À quelle distance sont les six impulsions? Arrivent-ils sur une entrée commune ou sur six entrées distinctes?
starblue

Ils ont tous leurs propres entrées. Les légumineuses peuvent parfois venir toutes en même temps, mais elles surviennent généralement à des moments différents.
Kestis

Réponses:


8

La vitesse du microcontrôleur n'est pas toujours le facteur limitant. Le MSP430 peut être une solution appropriée, non pas parce qu'il ne fonctionne que jusqu'à 25 MHz, mais parce que plusieurs périphériques MSP430 ont le périphérique Timer D qui permet une période de temps allant jusqu'à 4 ns (256 MHz). C'est plus rapide que presque tous les microcontrôleurs. Même le STM32 dans ses dernières versions (F4) ne peut faire que 180 MHz.

La minuterie D est disponible sur les appareils MSP430F51x1 et MSP43051x2 tels que le MSP430F5131.

Cependant, cela ne résout que la possibilité de capturer le temps. La grande question est de savoir ce que vous en faites car le traitement lui-même sera plus lent. Vous pouvez échantillonner le temps entre deux impulsions, mais vous ne pourrez faire aucun traitement entre elles, si c'est ce que vous voulez dire.


Mon mauvais, n'avait pas complètement RTFM du MSP430, principalement parce que le site Web de TI déclenche des convulsions pavloviennes de haine.
John U

@JohnU: Jamais eu cette réaction. La vérité est que le PO n'a pas précisé beaucoup d'informations sur ce qu'il fait, il est donc difficile de donner une suggestion appropriée.
Gustavo Litovsky

Le traitement n'est pas un problème. Il y a plusieurs secondes pour faire les calculs une fois que les temps ont été capturés et que les algorithmes ne sont même pas complexes. Un MSP430 peut-il gérer les six impulsions ou devrait-il y en avoir plus?
Kestis

@Kestis: Le Timer D contient 6 registres de comparaison de capture, et certains MSP430 ont plus d'un module Timer D, il devrait donc répondre à vos besoins.
Gustavo Litovsky

4

Le chronométrage à une résolution de 100 ns nécessite un minuteur fonctionnant à 10 MHz. De nombreux microcontrôleurs devraient être capables d'exécuter une minuterie aussi rapidement.

Le problème survient lorsque vous essayez de chronométrer l'arrivée de 6 signaux. Ces signaux sont-ils tous sur le même fil, ou chacun sur un fil différent?

S'ils sont tous sur le même fil, il est possible de le faire avec précision sur n'importe quel MCU avec une seule minuterie de 10 MHz. Naïvement, le code pour ce faire ressemblerait à ceci:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

Le problème est qu'il faut un temps limité pour réinitialiser la minuterie. Cela provoque deux problèmes:

  1. Les temps mesurés seraient erronés de quelques 100 ns, selon votre implémentation. Cependant, ils devraient toujours se tromper. IE mal à chaque fois exactement le même montant. Cela signifie que vous pouvez facilement le compenser en ajoutant une petite quantité à chaque mesure.

  2. Il y aurait un temps minimum que vous pourriez mesurer. Si une impulsion quelconque est arrivée 100ns après la précédente, vous la manquerez probablement. Je ne sais pas si vous pouvez faire quelque chose à ce sujet dans le logiciel. Vous devrez trouver un microcontrôleur capable de gérer plusieurs impulsions dans le matériel.


Quel microcontrôleur peut gérer plusieurs impulsions dans le matériel? Le Cypress PSoC ! Il s'agit d'un microcontrôleur qui contient également des blocs numériques configurables, ce qui signifie que vous pouvez facilement faire fonctionner 6 minuteries distinctes, chacune à 60 MHz, vous offrant une résolution meilleure que 20 ns.

6 temporisateurs PSoC Cypress

Voici un exemple que j'ai fait rapidement pour vous montrer le genre de choses que vous pourriez faire avec. J'ai 6 minuteries distinctes, toutes fonctionnant sur l'horloge du bus, qui peut aller jusqu'à 67 MHz. Il y a une broche de déclenchement qui démarre tous les chronomètres en cours d'exécution et 6 autres broches, chacune provoquant un événement de capture dans le chronomètre. Un registre d'état permet à votre code de surveiller les minuteries qui capturent une impulsion. Le code peut lire les valeurs des minuteries.


Ce PSoC semble très intéressant. Cependant, je préférerais AVR ou MSP430 car ils sont beaucoup plus courants.
Kestis

0

Réponse révisée : un oscilloscope à stockage numérique rapide ou éventuellement un compteur de fréquence.

Ancienne réponse :

En termes simples, "le microcontrôleur le plus rapide que vous puissiez trouver", au motif que plus votre horloge / échantillonnage est rapide, plus vous pouvez être précis. Les MSP430 ne sont pas des appareils rapides.

Les STM32 sont 32 bits et fonctionneront plus rapidement, en plus d'avoir des cartes et des outils de développement similaires à bas prix, mais même cela est assez lent par rapport à certaines des choses les plus puissantes disponibles (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Cependant, plus vous avancez vite, plus le processeur est compliqué, de sorte qu'il peut y avoir un compromis dans la courbe d'apprentissage.

Ajouté: Benji a raison, vous avez peut-être aussi besoin d'un oscillateur précis pour le micro si vous voulez des mesures très précises (vous ne spécifiez pas vraiment les limites d'erreur dans votre question).


Fondamentalement, il existe d'autres types de temporisateurs, autres que le microcontrôleur échantillonnant le signal dans une boucle.
Nick Alexeev

Et cela aiderait si le microcontrôleur est équipé d'un oscillateur / cristal externe très précis.
BenjiWiebe

Vous avez tous les deux raison, j'ai édité.
John U
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.