Général Ajuster la fréquence quartz d'un Arduino

  • Auteur de la discussion JCS
  • Date de début
N

nopxor

Compagnon
Bonjour, et Bienvenue sur le forum JFP,

Il existe un moyen simple et peu couteux d'obtenir une base de temps extrêmement précise avec un arduino.
il suffit de lui relier un module GPS et d'utiliser la librairie TinyGPS.
Les satellites GPS sont en effet équipés d'horloges atomiques qui envoient en continu des tops horaires.

On trouve sur Ebay des modules GPS à moins de 5€:
http://www.ebay.fr/itm/GYNEO6MV2-Mo...491338?hash=item25d07ab00a:g:oJYAAOSwux5YQmFu

Si vous voulez en savoir plus sur les liaisons GPS, il y a ce lien:
https://learn.sparkfun.com/tutorials/gps-basics
 
J

JCS

Compagnon
Merci pour toutes ces infos.

C'est bien joli tout ça, mais comment je fais pour mesurer avec précision des temps de moins d'une seconde en microsecondes avec vos suggestions ?

Pour info, j'ai résolu mon problème de façon très simple et satisfaisante. Voir les messages précédents.

Joyeuses Pâques !

JC.
 
N

nopxor

Compagnon
Bonjour JCS,

Il suffit de mesurer le nombre de "microsecondes arduino" entre chaque top de une seconde GPS pour étalonner la "vraie" durée d'une microseconde.
 
J

jfp91

Nouveau
Bonjour Nopxor, JCS,

Oui c'est vrai que j'aurai pu également mentionner les solution radio type GPS ou DCF77 pour lesquels il existe des librairies pour Arduino.

L’inconvénient de ces solutions est qu'en intérieur la réception de ces signaux est assez aléatoire...

Dans ce cas précis, le but étant d'étalonner, et ce périodiquement, la mesure de temps fourni par l'Arduino et de corriger sa dérive, la comparaison d'une valeur fournie par l'Arduino
et d'une horloge réputée juste permet de calculer cette dérive, et plus la durée de comparaison sera longue et plus le calcul sera juste.

JF
 
M

moissan

Compagnon
il ne faut surtout pas croire qu'un quartz a haute frequence soit plus precis qu'un quartz basse frequence parce qu'avec le quartz haute frequence on compte un plus grand nombre

c'est plutôt le contraire ! un quartz haute frequence a un bon couplage electrique : les caracteristique de l'oscillateur peuvent faire varier la frequence , et les oscilateur des microcontroleur sont fait au plus simple sans but de precision

les quartz de montre a 32.768 khz sont des diapason avec un très faible couplage electrique : l'oscilateur ne peut pas faire grand chose pour changer la frequence et sa qualité a une faible influence : ce qui explique leur bonne precision ... mais bien sur on ne peut pas mesurer directement les microseconde avec un diapason basse frequence

mais ça peut etre utile quand même : le quartz haute frequence de l'arduino manque peut etre de precision mais il est stable : il ne change pas de frequence par surprise : on peut donc faire du logiciel pour comparer la haute frequence de l'arduino avec une horloge a diapason 32.768 et faire un calcul de correction
 
S

stanloc

Compagnon
Donner à un quartz une fréquence de résonance déterminée c'est UNIQUEMENT une question de "patience". On règle son épaisseur et la masse de ses électrodes pour avoir la fréquence voulue. Que celle-ci soit à 1-10 MHz ou 32 kHz. Ou bien c'est une question de tri sélectif après fabrication. La stabilité de la fréquence d'oscillation est une tout autre affaire. Pour l'optimiser il faut préférer certaines plages de fréquences que d'autres car elle dépend pour commencer de la "taille" du cristal. Par ailleurs il est clair que quand l'épaisseur mécanique du quartz diminue beaucoup (il est d'autant plus fin que sa fréquence de résonance est haute) il est moins aisé de le manipuler et du coup on peut être amené à le faire vibrer non plus sur sa fréquence fondamentale mais sur un harmonique de celle-ci et cela au détriment de la stabilité.
Stan
 
V

vres

Compagnon
Un site fiable pour tout savoir : http://www.iqdfrequencyproducts.fr/

Un autre site très intérressant sur le fonctionnement de millis(): https://ucexperiment.wordpress.com/2012/03/16/examination-of-the-arduino-millis-function/
Millis fonctionne avec une interruption déclanchée par un overflow sur le timer0
Comme son nom l'indique millis retourne des millisecondes avec une erreur possible de 1 milliseconde. il ne faut oublier non plus les instructions programme et les appels de fonction qui bouffent des cycles.


Donc il ne faut pas s'attendre à mesurer des microsecondes avec prècision avec un Arduino.
 
Dernière édition:
Haut