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

JCS
Compagnon
22 Juin 2007
1 719
Cher
  • Auteur de la discussion
  • #1
Salut à tous,

Je cherche à savoir s'il est possible d'ajuster la fréquence du quartz d'un Arduino. J'ai constaté une dérive d'environ 0,6 % sur le mien. C'est à dire que si je commande une horloge avec mon Arduino, je vais avoir un écart d'environ 8 mn par jour, soit environ une heure en 1 semaine !
J'ai besoin de mesurer des temps courts avec une grande précision. Je suis obligé de bidouiller et d'utiliser, une "variable d'ajustement", dans laquelle j'indique le nombre de micro secondes pour une seconde. Mais c'est pas top et après traitement, le résultat est faussé !
La solution serait de pouvoir ajuster le quartz afin qu'une microseconde soit vraiment une microseconde.

Merci pour votre aide.
@+
JC.
 
Le débutant
Compagnon
bonjour
...ajuster la fréquence d'oscillation d'un quartz est effectivement possible, dans des limites relativement faibles autour de la fréquence nominale (appelée "résonnance") mais ! .... c'est l'ajout (ou le retrait) d'un composant (condensateur ) qui va modifier cette fréquence, avec tout les désagréménts que cela peut apporter (en fonction de la qualité de cet élément), dérive en fonction de la température, dérive en fonction du taux d'humidité, dérive en fonction des "parasites externes" ...Si le quartz est extérieur au circuit,,il y a la possibilité d'implanter un quartz de "haute qualité...(fréquence, stabilité)"... ou d'implanter un quartz de référence (enceinte thermostatée) qui est conçu pour assurer une stabilité à long terme. Une autre solution consiste, à obtenir cette fréquence par "un synthétiseur de fréquence" qui, lui, est capable d'assurer cette stabilité.
Ils existent d'autres solutions techniques mais qui ne sont pas à la portée des amateurs que nous sommes.
Cordialement
 
M4vrick
Compagnon
12 Août 2015
1 061
Si tu as besoin de mesurer des temps court avec une grande précision un Arduino ne sera pas une bonne solution.
Ce que je te conseille c'est de développer une carte avec un Atmega 328P en standalone et à ce moment tu pourras choisir un quartz externe avec une précision correspondand à tes besoins.
Ca se programme avec un programmateur USB type USBASP et l'environnement Arduino, tu peux même le faire sur une breadboard pour tes essais.
 
M4vrick
Compagnon
12 Août 2015
1 061
Oui suivant la précision demandé il faut choisir la bonne méthode de cadencage du µC.
L'important c'est de s'affranchir de la carte Arduino en elle même, de ne garder que l'Atmega en standalone avec l'environnement Arduino.
 
gégé62
Compagnon
26 Février 2013
2 502
Harnes (Pas de Calais)
Je ne suis pas expert en bidouille, donc j'utilise les armes que je connais....
Est-ce que cet écart (0.6% parait effectivement un peu gros pour un quartz) est toujours le même, à ce moment tu pourrais le corriger par le programme (avec des jours de 1432 minutes (ou 1448, selon...) :wink:
Sinon peux-tu remplacer le quartz présent sur ta carte ? dans la mesure où tu est certain d'avoir bien mesuré, je ne sais pas si c'est facile ou non, il pourrait y voir un écart dû au déroulement du programme lui-même ? comment as-tu fait la mesure ?

si l'écart n'est pas constant, certes cela semblerait bien mettre en cause le quartz.
 
stanloc
Compagnon
29 Octobre 2012
5 120
J'ai comme l'impression qu'il y a mauvaise interprétation par nos électroniciens de ce qu'a voulu exprimer JCS car il n'a pas utilisé le bon vocabulaire. Vous êtes tous partis sur le terme dérive alors que moi je comprends que c'est d'un écart entre la fréquence observée et la fréquence souhaitée que JCS veut parler. Si c'est de cela qu'il s'agit il n'y a que deux solutions : un ajustage dans une certaine mesure par un condensateur au mica ou un tri jusqu'à trouver le bon quartz.
Stan
 
M4vrick
Compagnon
12 Août 2015
1 061
C'est bien une dérive, le microcontrolleur se base sur la fréquence du quartz (ou du résonateur, ou de l'oscillateur.. ) pour faire sa base de temps. La précision de cette fréquence conditionne la précision de la mesure de temps, plus cette différence entre la fréquence réelle et la fréquence que pense avoir le microcontroleur est importante et plus cela amène une dérive de plus en plus grande au fur et à mesure du déroulement du programme.
Pour mesurer plus ou moins une seconde ce n'est pas critique, quand tu dois mesurer plusieurs intervals de quelques microsecondes avec précision c'est rapidement handicapant.
Et il n'y a pas de tri à faire, il faut simplement choisir un composant avec la technologie et la tolérance correspondant au besoin. On sait faire des bases de temps extrêmement précise sans devoir en acheter une douzaine en espérant avoir le "bon".
 
Loulou31
Compagnon
21 Janvier 2010
1 902
Toulouse.. coté Est
Bonjour,
La question est de savoir si c'est une erreur ou une derive ( la fréquence était bonne et s'est décalée). Quoiqu'il arrive il faut remplacer le quartz ou mettre un oscillateur précis : TCXO.
0,6% ne peut être corrigé sur un quartz quoiqu'il arrive. On arrive à quelques dizaines de ppm en general en modifiant la valeur du condensateur en série.
Est ce que tu as un moyen de mesurer cette fréquence car je suis étonné d'une telle imprecision, même avec un quartz de mauvaise qualité.
Pour mesurer avec precision des temps il vaut mieux utiliser des interruptions et les fonctions timer.

Jean-Louis
 
Dernière édition:
JCS
Compagnon
22 Juin 2007
1 719
Cher
Merci à tous pour vos réponses et suggestions.
Stan a parfaitement résumé ma demande mal exprimée.

Pour faire simple, je vais garder ma variable d'ajustement qui donne néanmoins de bons résultats.
Je la détermine à partir du signal d'un module d'horloge à quartz analogique.

En fait, j’espérais une possibilité de recaler la fréquence du quartz de l'Arduino par le soft.

Merci encore à tous.

JC.
 
tronix
Compagnon
6 Mars 2012
1 066
Toulouse
Si c'est un quartz externe (bien lire jusqu'au bout...), habituellement taillé pour une résonance parallèle, il n'oscille à la bonne fréquence que s'il est chargé par la bonne capacité. En jouant sur les 2 capacités en parallèle, on peut ajuster la fréquence, mais cela reste délicat car les valeurs sont faibles, et il faut une référence. Si c'est un oscillateur externe, c'est plus simple, il suffit de prendre la bonne référence. Passer d'un quartz à un oscillateur ne pose normalement pas de problème, il est même probable que l'on puisse se passer de changer la configuration, en utilisant la bonne broche. Reste à trouver le bon oscillateur. Selon les fréquences, on peut trouver du très bon oscillateur, à moins de 1ppm, ou même du TCXO, pour moins de 2€. C'est vraiment la solution que je préconise. Quant à la précision liée au processeur, si on sait bien utiliser les périphériques (et programmer...), on peut avoir des résultats étonnants sans sortir la grosse artillerie (processeur rapide ou fpga).
 
f6exb
Compagnon
13 Juin 2013
1 301
91300 Massy
Est-ce vraiment un problème de base de temps ou est-ce que le code n'introduirait pas des biais de temps en temps ?
J'ai essayé le programme de la réponse N°12 en adaptant l'affichage pour un I2C, mais étant donné que je n'ai pas de pendule pour tester, j'ai juste mis la sortie d'un 555 comme signal. Faudrait voir ce que ça vaut :
http://www.gammon.com.au/forum/?id=11504&reply=12#reply12
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut