Arduino arduino_goodfields_64.jpg25 conserver l'heure
 
Sommaire

Avoir  la bonne heure ! Ou le bonheur ? Ah, la bonne heure ! Avoir la bonne heure ! Ou le bonheur ? Ah, la bonne heure ! Ajustement  de fréquence du quartz Ajustement de fréquence du quartz Compensation  logicielle Compensation logicielle
Circuits  spécialisés Circuits spécialisés serveur  NTP serveur NTP
La page principale ... La page principale ...
   
Vers le début Vers Page 2 Vers sommaire Avoir la bonne heure ! Ou le bonheur ? Ah, la bonne heure !

   
Vers le début Vers Page 2 Vers sommaire Ajustement de fréquence du quartz
Dans les applicatiosn gérant le temps (avec Time.h par exemple), il peut être intéréssant d'ajuster le quartz de l'ARDUINO pour une meilleure précision.
Normalement, un quartz devrait être précis à 30ppm, soit une écart maxi de 2,59 secondes/jour.
Sur l'ARDUINO UNO V3, si l'horloge va trop vite, on peut mettre en paralèlle avec l'un des condensateurs de 22pF qui sont autour du Quartz un condensateur de 5, 10, 15 ou 22 pF pour le ralentir.
Si l'horloge va trop lentement, cela devient plus difficile : il faudrait éliminer un condensateur de 22pF et le remplacer par uen valeur plus faible.
Quant à l'ARDUINO ETHERNET, le quartz est tellement petit que l'intervention au fer à souder est très risquée ! Je pense d'ailleurs qeu c'st un résonnateur, le mien est décalé de 1800 ppm environ (trop rapide).

Existe-t-il une solution 'logicielle' ?
La vitesse du quartz est déclarée dans le fichier 'C:\Program Files (x86)\Arduino\hardware\arduino\boards.txt'.
Suffit-il d'ajuster cette valeur pour que les calculs de temps soient plus exacts ?

Recopier le paragraphe correspondant à votre modèle d'ARDUINO en fin de fichier, et le modifier : ajouter un indice au radical ('ethernet' devient 'ethernet1'), changer le '.name' pour le reconnaitre, et changer la valeur de 'ethernet1.build.f_cpu=16000000L' -> 'ethernet1.build.f_cpu=8000000L' .
Sélectionner alors ce type d'ARDUINO dans le menu 'Outils' 'Type de carte', et le tour est joué !

NOTA IMPORTANT : seules les valeurs 16000000 et 8000000 sont reconnues par le système !
Donc, fausse piste, sauf pour l'ARDUINO sans QUARTZ qui oscille à 8 Mhz, mais bien sûr pas stable !

   
Vers le début Vers Page 2 Vers sommaire Compensation logicielle
La seule solution est de faire une compensation logicielle, telle que :

// Dans la pratique, l'horloge ADRDUINO dérive de quelques secondes par jour (30ppm = 2,59secondes/jour), 
//          une synchro horaire est très suffisante !
// On peut tenter d'ajuster l'horloge de l'arduino en mettant en paralèlle sur l'une des
//      2 capacités du quartz de 16 Mhz un condensateur ajustable de 20 à 40 pF
//      Si l'horloge va trop lentement enlever cette capacité et la remplacer par 
//      le condensateur ajustable.

// Compensation logicielle du décalage connu du quartz ... 
// Etherner 'B' avance de environ de 6 secondes/heure soit 1666 ppm (théorique quartz 30 ppm)
    if ( tempo_ntp == 0 && (minute()%10 == 9) && second() == 45 ) {
       horodatage_serial(); Serial << "rattrapage d'une seconde ";
       setTime(now()-1);    // si avance
//       setTime(now()+1);    // si retarde
       horodatage_serial(); Serial << endl;
       tempo_ntp = 3000;
    }

   
Vers le début Vers Page 2 Vers sommaire Circuits spécialisés
Ou d'utiliser un circuit externe spécialisé : DS1307 par exemple ou autre soolutions.


   
Vers le début Vers Page 2 Vers sommaire serveur NTP
Sur internet, on peut récupérer l'heure sur des machines dites 'serveurs NTP'. NTP est un protocole qui permet de synchroniser l'heure entre ma machine et des horloges atomiques très précises. Des serveurs 'secondaires' sont à disposition de tous pour synchroniser tout type d'horloge, celles des ordinateurs (y compris le vôtre à la maison, les dernières versions de Windows l'intègrent automatiquement), mais aussi des horloges ou stations météo connectées.

Chapitre 24 : synchronisation sur NTP Chapitre 24 : synchronisation sur NTP

La page principale ... La page principale ...
Photos de la page :

Dernière mise à jour : 11:40:07 18/09/2020