Canalblog Tous les blogs Top blogs Maison, Déco & Bricolage Tous les blogs Maison, Déco & Bricolage
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU
BRICOLSEC
Publicité
29 juillet 2021

Date, heure… et secondes GPS

Date, heure… et secondes GPS

1    Pourquoi cette nécessité de l'heure

UBLOX_NEO_P10100351.1    Très peu de sémantique
1.2    Les raisons personnelles
1.3    Un but pour l'étalonnage
2    Les procédés
3    Le quartz
3.1    Les principes
3.2    Rendre un quartz plus précis
3.3    Autres sources de temps
3.3.1    GPS
3.3.2    Horloge atomique
3.3.3    EDF
3.3.4    Un PIC
3.3.5    Module DS1307
3.4    Régulation de température
4    Quelques circuits électroniques
4.1    DS1307
4.2    DS3231
5    Comment avoir du 1 Hertz
5.1    DS1307 ou DS3231
5.2    DCF77
5.3    Essais amplification 77.5 KHz
5.4    Par Internet www.time.is
5.5    Par GPS UBLOX NEO-6M
6    L'étalonnage (avec GPS)
6.1    Le montage utilisé
6.2    Schéma réalisé
6.3    Étalonnage
7    Conclusions
8    Le mot de la fin
9    Expérimentation modules UBLOX NEO-6M (article complémentaire)

Si vous arrivez directement sur cette page par un moteur de recherche, vous pouvez avoir accès à la table des matières et à chaque article, en page d'accueil.    L'accès se fait par l'un des deux liens en tête de colonne de droite ----->

ATTENTION à compter du 15/09/2019 les commentaires ne seront plus possibles à causes de quelques imbéciles qui font du spam pour le plaisir de nuire ! désolé  !

 


Préambule

Avec beaucoup d'humilité, j'aborde le sujet du temps, car je viens de m'y frotter avec quelques difficultés, quelques succès aussi, et quelques d'incertitudes...
Ainsi que je l'ai déjà esquissé dans quelques articles précédents comme l'I²C, le DS1307 ou le DS3231, le Tracker photovoltaïque, j'ai été souvent confronté au problème de l'heure pour mes réalisations basées sur l'heure (solaire, le plus souvent).
Ce sujet revient systématiquement et toujours avec un peu plus d'acuité lorsque l'on creuse davantage le sujet.

La notion de temps est extrêmement complexe dans la précision, et les définitions. Le temps fait appel aux technologies les plus délicates associées à la physique des particules comme pour les horloges atomiques, à l'astronomie..., mais pour ma part je reste à mon niveau et je suis seulement un utilisateur qui désire avoir la date et l'heure de façon simple et locale, sans avoir à utiliser des sources horaires distantes EN PERMANENCE.
Notez déjà que le GPS donne un temps UTC (Voir Wikipédia les différentes définitions), contrairement au DCF77 qui donne le temps légal mais dérivé du temps UTC. Ce temps UTC est déconnecté du temps de rotation de la terre (Temps universel TU) car il est issus du temps atomique (TAI) et l'un et l'autre sont mis à jour périodiquement pour suivre au mieux la réalité. Bref ce n'est pas très simple car il y a encore d'autres définitions.... et j'espère ne pas avoir dit de bêtises à ces sujets très techniques et astronomiques.

Le plus important dans ce sujet est de garder date et heure de quelque type que ce soit tout au long des mois et d'une bonne dizaine d'années, avec au maximum quelques centaines de secondes d'erreur, et encore mieux si possible !

En corollaire, je ne me suis que très rarement inquiété de la mise à l'heure précise de mes montages avec micro contrôleur PIC, car si nécessaire, je profitais de la nuit pour me synchroniser sur le DCF77, mais c'est également important, et j'ai rarement (ou jamais) utilisé le réglage OSCTUN, car toujours dans les bonnes limites pour la RS232 par exemple (Baudrate).
La réalité est que j'avais bien supposé qu'il était nécessaire de remettre à l'heure régulièrement les systèmes, qu'ils soient à quartz ou non, mais sans aucune preuve formelle, et par simple bon sens.

AVERTISSEMENTS :
Pour couronner le tout, en cherchant sur Internet le schéma des GPS achetés, je me suis aperçu que j'ai dit une bourde à propos de la tension de fonctionnement des MODULES GPS achetés. En effet je me suis aperçu après coup, que ceux-ci comportent un régulateur LDO qui assure le passage de 5V à 3.3V pour la puce GPS. Ceci permet de brancher directement sur 5V le module GPS, alors que le circuit UBLOX NEO 6M fonctionne effectivement en 3.3V. Attention donc à cette particularité avec le terme GPS souvent confondu par facilité avec le Module GPS, ce qui n'est pas rigoureusement la même chose.
Cette erreur est due à ce que les Chinois ne sont pas capables de fournir un minimum de documentation à leurs produits.
 
Ceci concerne l'inutilité, (voire l'erreur mais sans conséquence) concernant le circuit d'adaptation qui comportait un régulateur 3.3V et deux conversions de niveau pour TIMEPULSE et l'autre pour RX (Une conversion pour chaque sens).

A ce jour, et sans utiliser la pin RX qui est réaffecté à TIMEPULSE, il suffit de brancher simplement le module sur le Vcc 5V, et tout fonctionne correctement pour l'utilisation prévue (Pas de paramétrage par RX).
On fera cependant très attention à la batterie de sauvegarde que l'on protégera par un scotch épais car c'est la partie extérieure qui est le +, et une masse est vite proche, surtout si l'on empile antenne et circuit l'un sur l'autre, ce qui est possible tant physiquement que fonctionnellement.

Cette facilité de branchement ne doit cependant pas cacher la nécessité de convertir le 5V en 3.3V pour tout signal entrant vers le GPS (Cas de la pin RX si elle devait être utilisée). A l'inverse, il semble acquis que les tensions 3.3V sortantes restent compatibles avec les entrées CMOS des principaux circuits utilisés sous 5V.
Il est donc possible qu'il reste quelques bribes de ces particularités dans les textes et schémas.

NOTA : Quelques éléments de texte n'étant plus exacts ont cependant été laissés mais rayés (rayés) pour bien souligner quelque chose qui a été vrai à un instant donné mais qui ne l'est plus maintenant.

1 Pourquoi cette nécessité de l'heure

1.1 Très peu de sémantique

Lorsque je parle de l'heure en général, il faut comprendre la date et l'heure.
Par date il faut détailler le jour du mois, le jour de la semaine, le mois et l'année.
Pour l'heure il faut comprendre par dérision l'heure, les minutes, les secondes et même les fractions de secondes parfois.

Pour la date qui ne pose pas de véritable problème une fois initialisée, le jour de la semaine peut même être recalculée par différentes méthodes.
On remarquera que le jour et la nuit sont des limites qui évitent toute erreur d'interprétation.

En ce qui concerne l'heure, celle-ci est beaucoup plus petite et sujette à des DÉRIVES qui se matérialisent seulement au fil des jours. Ainsi maintenir une heure "précise" durant de nombreuses années reste un chalenge difficile, car les contraintes matérielles sont nombreuses.

Je vais concentrer mes propos sur l'heure seulement au sens général et complet englobant l'heure jusqu'aux fractions de secondes avec peut-être la création d'un système d'étalonnage. (Ainsi qu'évoqué, la date est un peu mise de côté car elle est habituellement respectée avec la précision des matériels et logiciels traditionnels).

1.2 Les raisons personnelles

Pour mes applications solaires, il y a longtemps que j'ai abandonné le positionnement par cellules, au profit des équations solaires. J'y suis venu petit à petit, en premier avec l'heure issue de vieux PC sous DOS, et j'y ai vu les limites des anciennes horloges 146818 ou DS1287.
Le principal problème de toutes ces horloges RTC est la DÉRIVE dans le temps qui pourrait amener à l'extrême limite à un changement de date.
Il faut dire en exagérant un peu, que confondre le jour et la nuit au niveau d'un panneau solaire est tout de même très gênant !!!

J'ai donc un vrai besoin d'avoir l'heure sans faire appel à une source externe de façon journalière, mais de pouvoir disposer localement des informations SANS dérive durant un délai "acceptable", c'est-à-dire de quelques semaines, mois ou années.

Pour être plus précis je dirai que je souhaiterais avoir l'heure durant 10 à 20 années sans intervention et en acceptant par exemple sur 15 ans une dérive de 5 minutes ou 300 secondes…
Pour simplifier tout, disons 473 secondes de dérive et 15 années c'est 473040000 secondes… C'est donc une précision de 1 ppm (1 partie par million)
Cette précision est plus que bonne, elle est même excellente, mais est-elle à ma portée ou à celle d'un amateur ?
(Je pense que mes prétentions devront être revues à la baisse !)

1.3 Un but pour l'étalonnage

Le seul but final pour l'étalonnage est d'obtenir une référence 1 Hertz très précise permettant de valider une fenêtre de comptage d'impulsions. (Un peu comme un fréquencemètre). Cela permettrait d'étalonner des modules DS1307 rapidement en obtenant en quelques minutes la bonne fréquence de ces modules.
Je pense que l'on peut raisonnablement rester sur des températures ambiantes vers 22.5°. Avec une petite régulation de température, peu gourmande en énergie, on pourrait obtenir à la fois une bonne référence et permettre  un étalonnage assez simple…
Cette température correspond aux quartz dits "horlogers", et il est certain qu'en période de canicule, on ne pourrait pas étalonner du fait de cette faible température (Il y a cependant une parade à cela, voir la suite). Celle-ci a cependant l'avantage d'utiliser des quartz standard peu onéreux, et au niveau amateur c'est tout de même intéressant.

2 Les procédés

Les différents procédés sont liés en premier lieu aux oscillateurs et à leur stabilité. J'ai donc fait un petit tableau des avantages et inconvénients pour mieux cerner les meilleures adaptations. ****tableau_oscillateurs.

tableau_oscillateurIl est évident que certains oscillateurs à quartz sont associés à des micro contrôleurs et qu'ils apportent alors date et heure.
Cependant la précision a un grand intérêt pour le maintien A LONG TERME de la date et de l'heure, et c'est là le point le plus important.

Il faut aussi regarder si ces sources de référence sont pérennes, et à ce sujet on peut penser que les coûteux émetteurs de grande puissance en GO comme le DCF77 avec leurs immenses antennes à gérer sont appelés à disparaître à cause des coûts d'exploitation très élevés.

Les procédés de laboratoire ne sont pas  accessibles au profane, aussi pour obtenir un étalon de temps avec une sortie logique de temps (à la seconde ou à quelques KHz), je ne vois à ce jour que le GPS qui est accessible au particulier avec des coûts de quelques Euros  pour un module qui donne date et heure (Sans le jour de la semaine qui nécessite un algorithme de calcul).
Ce GPS a cependant l'inconvénient d'un démarrage à froid d'environ 27 secondes et d'une consommation de 65 mA assez (trop) importante pour le module utilisé. Un tel module en fonctionnement permanent, ne peut donc pas équiper un équipement embarqué avec peu d'énergie.

J'ai essayé des modules TCXO type DS3231 qui ne sont pas réglables et dont la fréquence de base est totalement à côté de la valeur initiale. Ils ont en théorie la stabilité en température, mais la fréquence étant fausse au départ, je n'ai malheureusement pas pu les utiliser. Cela aurait été pourtant très intéressant et certainement un bon choix, mais pour avoir des éléments de qualité il faut mettre des sommes d'argent conséquentes, ce qui est donc hors sujet.
J'ai relevé la courbe d'un DS3231 et je pense que c'est un composant foutu d'origine (Courbe ci-dessous, sans commentaires ! en X les températures, et Y le nombre d'impulsions en moins)


Alors, on peut déjà essayer un des principes que je vais mettre en œuvre pour avoir date et heure avec une bonne précision sur de longues périodes.
On calibrera donc à partir des éléments GPS des modules ajustables DS1307 dont l'accès est IMMÉDIAT et RAPIDE par I²C.

Cela nécessite plusieurs outillages malheureusement, et je suis hélas obligé de faire l'impasse sur l'aspect stabilité en température, et cela exclu de faire fonctionner les appareils en extérieur avec des variations importantes de température pour de longues périodes sans re-calibration.

Seul revers à ce principe, il faudra mettre ces équipements, dans un environnement tempéré. Je pense que c'est possible par le fait que ces modules DS1307 sont en réseau I²C et que 4 fils suffiront (avec l'alim) pour récupérer les informations. L'autre possibilité et de recalibrer plus souvent

3 Le quartz

3.1 Les principes

Le principe général à ce jour est un oscillateur électronique avec un cristal de quartz. Ce matériau oscille lorsqu'on lui applique une tension. C'est un matériau piézoélectrique.
La taille (Au sens de "tailler" comme une pierre -et non de dimensions-) d'un quartz détermine sa fréquence, mais aussi sa courbe de variation en température.
Le mot a été lâché : la température !
Voir aussi Wikipedia https://fr.wikipedia.org/wiki/OCXO

Tout serait merveilleux si ce cristal ne dérivait pas en fréquence en fonction de la température, et c'est le principal problème. Cependant la taille au sens de la taille d'un cristal définit le sommet d'une parabole dont celui-ci est calculé pour une température de fonctionnement précise.

releve1_freqf_T__Un autre point important concerne la fréquence de base qui malheureusement n'est en principe exacte que pour une température donnée, mais variant peu vers le sommet de la parabole.
(J'ai aperçu d'autres modèles de courbes avec variation non parabolique).
Ci-contre, mon premier relevé fait à partir de la température ambiante.
Enfin pour dorer un peu plus le sujet, le merveilleux quartz vieilli aussi, et sa fréquence dérive aussi au fil des années, en plus de la température. (Un peu comme un ressort qui s’avachit à force de fonctionner !)

A ce jour, je pense que d'autres procédés de stabilité existent au niveau mécatronique, mais là mes compétences s'arrêtent (MEMS) !

3.2 Rendre un quartz plus précis

- Une première solution consiste à installer le quartz dans une enceinte régulée en température souvent entre +50 à +75°C. Cependant la taille du quartz doit être prévue pour une telle température de fonctionnement. La taille du quartz est faite pour que la variation de fréquence soit la plus faible pour le point de température choisie (Sommet de la parabole).
Bref, il ne serait PAS judicieux de mettre n'importe quel quartz dans une enceinte thermostatée si le quartz n'a pas été taillé pour la température de fonctionnement. La précision serait même catastrophique car on se trouverait alors dans l'une des pentes de la parabole.

Cette façon d'obtenir une grande précision est malheureusement énergivore, et elle n'est pas acceptable pour un fonctionnement permanent ou en embarqué.
Elle est seulement acceptable en laboratoire pour des mesures de haute précision. Pour les équipements alimentés sur pile ou batterie, c'est donc impensable.

- Quelle autre possibilité pour rendre un quartz moins sensible à la température ? Corriger par des condensateurs en // la fréquence. C'est de cette façon que devrait fonctionner le circuit de DALLAS DS3231 (TCXO). Inconvénient, il faut mesurer la température, mais le circuit s'en charge !  Ceux que j'ai eu sont en dehors de tout et bons à mettre à la poubelle. (Voir courbe au § 2 ci-dessus)

Si on travaille à température ambiante 20 à 25°, les quartz horlogers à 32768 Hz sont une bonne solution à priori, mais j'ai quelques interrogations, car nos montres bracelets sont à température du corps humain, non à 37°,mais un peu moins vers 32/33°.

Ces quartz horlogers pour montres bracelet ne sont donc pas taillés spécifiquement pour la température ambiante de 20-25°C.
Cette autre façon de traiter la dérive en température n'est pas applicable en composants discrets car trop volumineux, mais seulement au niveau de la gravure électronique au niveau des masques des circuits intégrés spécialisés.
(Une parenthèse à dire à cet effet, est qu'il n'est pas recommandé d'utiliser le quartz d'une vieille montre pour avoir une meilleure précision).
- Je viens de penser à une solution dont je viens de voir une thèse, et qui est l'utilisation d'une diode varicap (VCXO), soit pour caler la fréquence de façon précise (à une température donnée),  soit pour corriger les variations de température et/ou les deux à la fois. Je dois dire que cette solution remporterait mes suffrages, si elle était facile, car modifier  par une tension de polarisation  permettrait de tomber exactement sur la fréquence souhaitée. Cette solution parait simple, et c'est à vérifier ! Si ça pouvait marcher …
Il faudrait cependant faire coïncider tension et variation de fréquence due à la température et ce n'est pas trop simple à priori.

Une autre question que je devrais bientôt éclaircir est de savoir si le fait de mettre des condensateurs en // sur le quartz déplace d'autant le sommet de la parabole, ou n'a aucune action sur le sommet température qui reste en place ? (Bien entendu la fréquence change)
Après essais avec et sans condensateurs, je ne suis pas en mesure de dire si on est dans un cas ou dans l'autre, car bien entendu le sommet d'une parabole est flou, avec en plus des mesures de températures moyennées et "presque au vol", mais il semble tout de même que la parabole se soit déplacée "un peu" !!! La théorie pourrait peut-être venir à mon secours ?
En réfléchissant quelque peu on peut imaginer que seul le quartz dérive et non la capacité ajoutée, mais c'est un raccourci un peu rapide, car condensateur et torsade sont certainement aussi affectés par la température et il me semble donc plausible qu'il soit difficile de statuer sur le sujet. (Voir la courbe Rouge au § 3.3.5 ci dessous)

3.3 Autres sources de temps

3.3.1 GPS

Le GPS semble une approche intéressante, car il y a de nombreux systèmes de localisation similaires, voir cet article sur wikipédia https://fr.wikipedia.org/wiki/NMEA_0183 qui présente bien le sujet pour la partie des informations disponibles dans les trames.
Les références de fréquences disponibles ne sont pas bien explicitées, car elles sont seulement le reflet des puces dédiées à l'exploitation du GPS.

En résumé, les systèmes GPS sont basés sur des satellites qui émettent des données de temps, données très précises issues d'horloges atomiques synchronisées et correction des temps de propagation. On peut ainsi par triangulation définir une position x,y,z.

Tous ces satellites ont donc des horloges atomiques de très grande précision qui se corrigent mutuellement etc…
Bref c'est très complexe et hors de mon sujet et de mes connaissances.
Ces horloges sont donc très précises, et peuvent donner date et heure tout au long des jours et années.
Un signal de temps programmable en fréquence est extrait de la réception satellite et des trames RS232 sont émises dans le protocole NMEA avec l'heure en tête de trame, ceci réalisé par les puces réceptrices des GPS .

Ce système est très fiable car largement redondant. C'est un système assez gourmand en énergie mais de faibles dimensions (Celui que j'ai utilisé est de marque UBLOX modèle NEO-6M).
C'est aussi un système qui restera toujours pérenne, car ce sont les armées de nations ou d'unions de pays qui sont au centre de ce sujet, et ce n'est donc pas demain qu'il sera abandonné car trop vital pour la sécurité défense (USA, CHINE, EUROPE…)

3.3.2 Horloge atomique

Non je ne peux pas me payer ce petit joujou…  Les horloges atomiques équipent beaucoup de laboratoires pour leur excellente précision, et elles équipent aussi tous les satellites dédiés au GPS, ce qui leur donne toute leur précision. Ces horloges fournissent le temps TAI.

3.3.3 EDF

Le secteur n'est pas très précis en instantané, mais il l'est à long terme, car le nombre de périodes est compté annuellement (je n'ai malheureusement pas retrouvé cette information officielle).
Il y a bien eu une petite dérive, il y a quelques années suite à des transferts d'énergie entre pays Européens, mais cela a été identifié et certainement corrigé pour ne plus se reproduire. (C'est ainsi que votre radio-réveil secteur a bugué, et qu'il a retrouvé sa jeunesse depuis !)
Ce réseau est très fiable mais encore faut-il pouvoir utiliser le secteur pour référence ! Dans le cas des montages embarqués sur pile ou accu, ce n'est pas le cas, mais il y a aussi un revers à la médaille qui est la coupure secteur suite à la foudre ou aux perturbations de distribution. (A noter que c'est le cas général de TOUS les dispositifs qui ont TOUS un talon d'Achille quelque part).
Ce réseau est donc fiable à la production mais un peu moins à la distribution.
En cas de coupure, il est évident qu'il faut un système de reprise pour compenser ponctuellement une coupure, ce qui est vrai aussi pour tout autre dispositif.
Ce réseau est précis à long terme mais pas en instantané, mais ne donne pas l'heure de façon formelle ce qui est très gênant pour une reprise suite à coupure.

(Même les satellites GPS peuvent être affectés par les orages solaires et les informations peuvent devenir manquantes ou peut-être erronées ?)

3.3.4 Un PIC

Il est possible d'utiliser un PIC avec son horloge temps réel bien calibrée, mais le problème principal reste sur les variations avec la température que ce soit un oscillateur RC ou un quartz
Aussi le PIC pourrait mesurer cette température avec un  DS18B20 par exemple, et à l'aide d'une varicap corriger la fréquence du quartz par une tension asservie… Est-ce une voie ? Ou au contraire corriger par varicap en asservissement par des tables mémoire.  Tout cela parait tout de même assez délicat, car il faudra nécessairement faire appel à une régulation PID.

Sur un montage avec PIC, il ne faut pas oublier que si on passe le micro contrôleur en "SLEEP", l'oscillateur s'arrête, et c'est un problème majeur pour le maintien de l'heure.

3.3.5 Module DS1307

Tiny_modif_P1000867C'est une solution possible de garder un module DS1307 en référence de temps, après avoir beaucoup "titillé" l'ajustement de la fréquence. Mais cela reste incertain car la température d'utilisation n'est pas toujours stable, et ce qui est bon un jour, ne l'est plus le lendemain !
C'est un premier pas qui permet d'arrêter un micro contrôleur et de le remettre à l'heure rapidement, car le DS1307 est équipé d'une pile (ou accu) qui consomme réellement  très peu.
Alors…

J'ai donc réalisé une petite enceinte thermostatique avec un module PELETIER pour faire des relevés de fréquence en fonction de la température, et j'en ai donc tiré des conclusions intéressantes :

20210731114159822147NOTA : la courbe bleue concerne le premier relevé avec correction de la fréquence de base avec condensateurs.

La courbe rouge tente de montrer un éventuel décalage de température sans correction de la fréquence (ou réciproquement)

 (*******courbe relevée DS1307_Temp_Impuls_quartz.ods).

Ces petits modules bon marché ont leur température optimale vers 22.5°C et sont peu divergents entre 17° et 27.5° de quelques 5 ppm environ.
Ces modules comportent également un emplacement pour un capteur de température de type DS18B20 et que cela peut permettre en mesurant cette température de compenser par une table, les variations de fréquence.
Cette table peut même être intégrée au circuit lui-même car il y a environ 50 octets disponibles ou si c'est nécessaire, dans une EEPROM située à côté du DS1307 sur le même module.
Le seul problème est qu'il faut ajouter un protocole complémentaire à l'I²C (ONEWIRE) pour le capteur de température, et qu'un programme spécifique devra appliquer ces corrections.

3.4 Régulation de température

On a vu que le principal problème du quartz est la température. Pour s'en affranchir, il faut une bonne régulation et on pourrait ainsi disposer d'une référence de bonne qualité, mais le problème devient vite assez onéreux avec des quartz spécifiques à commander et donc hors de prix. Ceci ne peut concerner que des étalons et non des montages d'applications.

P1010026
J'avais déjà réalisé une enceinte thermostatée sur secteur et le sujet n'est pas trop difficile, car le plus délicat reste la régulation PID.
http://bricolsec.canalblog.com/archives/2013/01/13/26133974.html

Très récemment j'ai commandé un petit module à effet Peletier et je suis assez surpris de l'efficacité de ce petit carré de 4 cm de côté… J'ai choisi un modèle pouvant monter jusqu'à 6 A, mais il fonctionne très bien sous faible tension. (Cela m'a permis de descendre vers 6°C)

J'en ai tout de même réalisée une plus petite à effet PELETIER avec double radiateur chaud et froid (photo ci-contre)

Ce sujet méconnu pour moi, m'ouvre quelques horizons, principalement par le fait qu'il est possible de réguler à une température ambiante, notamment vers 20 à 25°C quelque soit la température ambiante RÉLLE, car il est possible d'inverser le chaud et le froid en inversant la polarité d'alimentation du module.
En effet pourquoi monter si haut en température, alors que l'on peut créer du froid. (Cela n'était pas possible de façon simple  il y a quelques années). Attention, cela reste très énergivore cependant !

Cela sous-entend qu'un tel module monté en pont peut tout à fait réguler une température de 20° si l'extérieur est à 25°C, ou tout à fait l'inverse soit réguler à 25° alors qu'il fait 20°C en extérieur. Attention cependant aux inerties thermiques !

Ce principe énergivore ne peut cependant servir qu'à créer un étalon de temps, mais PAS à gérer un montage utilisant un circuit de type DS1307. Ce principe permettrait de créer un étalon assez facilement soit avec des quartz 20/25°C ou même des quartz "véritablement horloger" (issus d'une montre bracelet pour être précis) qui seraient alors régulés vers 33°C comme la température du poignet.

4 Quelques circuits électroniques

DALLAS / MAXIM sont sur ce créneau de produits liés au temps avec différentes productions dont quelques unes sont très anciennes comme certains circuits intégrant directement une pile, avec l'erreur de souder le composant, ce qui rend l'ensemble inutilisable par bêtise. La bêtise revient non pas vraiment à DALLAS mais aux concepteurs utilisant les DS1287. Ce circuit est obsolète je n'en parlerai plus.

4.1 DS1307

P1010036Initialement, ce module/circuit DS1307 monté sur un petit CI m'avait séduit par son faible coût, et en abordant ce problème du temps, j'avais commis l'erreur de croire à la bonté du monde…. Il n'en est rien ! Ce circuit doit être étalonné et fonctionner dans une ambiance 15-30°C pour ne pas trop dériver.
Je ne l'ai vu qu'à posteriori.
Un élément en la faveur du module disponible chez les chinois, son prix, mais aussi un circuit sous forme de module autonome que l'on peut intégrer à ses propres montages.

Il est dommage qu'un emplacement sur le CI n'ait pas été réservé pour placer un petit condensateur ajustable de correction de la fréquence et une torsade (Queue de cochon !).

J'avais pensé à tort remplacer mon DCF77 par un tel circuit, mais j'ai dû abandonner faute d'une précision initiale suffisante (Sans parler de la dérive).
Il reste juste la place pour souder un petit condensateur CMS de 4.7 à 6.8 pf aux bornes du quartz et d'ajouter en plus une torsade pour terminer finement la fréquence. *****photo quartz avec condensateurs ajoutés.

Ce système un peu délicat est la seule manière de mettre à l'heure ce circuit pour une température "ambiante".
Il serait illusoire d'utiliser des minuscules condensateurs ajustables, car outre la visibilité de rotation, l'angle de rotation reste trop difficile à maîtriser de façon progressive (par 10° d'un coup au moins)
On notera que la torsade devra être immobilisée par un point de colle au pistolet.

4.2 DS3231

P1000990Vu la difficulté de calibration du DS1307, j'ai vu que ce circuit DS3231 était compensé en température (TCXO), ce qui n'est pas vraiment ce que je recherchais en premier, mais c'est surtout la fréquence initiale à température ambiante qui me pose problème.
J'ai cru mon problème résolu, mais il n'en était rien, car "l'AGING" (Cde interne spécifique de correction) permet d'ajuster simplement la dérive en température, mais ne permettrait pas (Du moins le datasheet semble le dire et je n'ai pas pu non plus, faire un véritable offset de fréquence). Est-ce moi qui ait mal fait ? Je ne sais pas !
Ce circuit tel quel, serait presque encore pire que le DS1307, car il est impossible de modifier par un condensateur la fréquence de base, contrairement à ce circuit DS1307.
Attention cependant de bien choisir le suffixe de ce composant pour avoir la meilleure précision. Viser le suffixe SN. J'ai bien commandé SN mais c'est l'indice M reçu ! Y-a pas moyen avec ces filous !!!

5 Comment avoir du 1 Hertz

Au final, c'est cette opération d'avoir une fréquence de 1 Hz qui m'est nécessaire pour pouvoir étalonner très rapidement des modules DS1307. Mais comment obtenir cette fréquence ?
A remarquer qu'avoir du 1 Hz n'est pas une nécessité permanente, mais seulement nécessaire le temps d'un étalonnage.
On veut donc un étalon de temps très précis durant plusieurs secondes, minutes ou heures, mais pas au-delà. Ce fait simplifie un peu le problème.

5.1 DS1307 ou DS3231

Le DS1307 étalonné est la première façon d'avoir du 1Hz à bon prix, mais la valeur précise est totalement illusoire puisque variant avec la température.
Le sujet est un peu différent pour le DS3231 qui manque de précision initiale, du moins pour les modèles reçus, qui sont très certainement des fonds de tiroirs ou de piètre qualité…
Il est possible de mettre un DS1307 dans une enceinte thermostatée et d'avoir une certaine stabilité, mais ce 1Hz peut seulement être utilisé pour un étalon, car l'énergie nécessaire reste le point critique.

5.2 DCF77

U4224_P1000872_1Ce DCF77 est un signal radio sur la fréquence de 77.5 KHz comme déjà largement documenté dans mes autres articles.

Ce qui m'intéresse ici est tout à fait différent puisque j'entends obtenir des secondes de référence par ce signal. Or il s'agit d'une modulation de la porteuse en amplitude de maxi -25%, mais c'est la durée des impulsions qui code en BCD les valeurs de temps.
Il y a 1 bit par seconde, et cela pourrait être intéressant pour avoir du 1 Hz précis ? Hélas c'est une vue de l'esprit, car le début d'un bit de donnée n'est pas garanti et entre 2 bits il peut y avoir un certain flottement dû au fait que l'on ne sait pas sur quelle alternance de la porteuse et à quelle position angulaire de la porteuse on va se trouver.

Le DCF77 est précis sur une longue durée, mais pas mieux que des dizaines de millisecondes entre 2 impulsions.
Sur ce sujet, on peut aussi remarquer que le décodeur peut affecter les fronts (qui ne sont certainement pas très précis à la micro seconde près) de façon anarchique car seul le contenu des données est recherché ! (Et non la position précise du bit data) De plus il faudra recréer le front manquant de la 59ème valeur.

- Ce qui est très intéressant c'est la fréquence porteuse très précise puisqu'elle est asservie à une horloge atomique. Aussi pour obtenir du 1 Hz précis, il serait possible de diviser cette fréquence par 77500 pour avoir du 1 Hz.
C'est une bonne solution, mais un peu lourde à gérer car la division est importante et très particulière. Voici la décomposition en facteurs premiers = 2^2  x 5^4  x 31.

A savoir qu'il faudra commencer par fortement amplifier cette porteuse, puis la mettre en forme, et enfin la diviser en logique traditionnelle.
Une petite idée… diviser d'abord par 775 puis par 10 et 10 de nouveau. On aurait ainsi 1/100 et 1/10 Le système est intéressant, puisqu'il permet d'avoir le calendrier par le décodage ainsi que l'heure complète, mais le plus intéressant est qu'il donnerait par sa propre fréquence porteuse un temps très précis, aux rotations de phase ou perturbations près. (Il faudrait alors synchroniser au mieux les secondes des datas codés avec les secondes issues de la HF si on voulait la totalité de l'heure).

J'ai réalisé un petit montage amplificateur qui n'a pas donné entière satisfaction et que j'ai abandonné car il fallait encore amplifier un peu plus, le signal étant trop faible. Vu la difficulté et le contexte incertain, j'ai abandonné d'autant que cela ne permettra que de créer un étalon, pour calibrer un module DS1307. Photo ci-dessous du circuit réalisé mais sans intérêt !

P10100275.3 Essais amplification 77.5 KHz

J'avais regardé cette fréquence assez basse (GO) et j'avais décidé de l'amplifier pour obtenir  par division cette valeur de 1 Hz.
Voici le schéma réalisé avec de vieux transfos MF 455 KHz. Il faut ajouter environ 6.8 nF pour obtenir la résonance vers 77.5 KHz.
J'ai prévu 2 étages d'amplification 77.5 KHz sur circuit résonant et un étage sur résistance pour amener au niveau TTL.
2 LED ajoutées témoignent de chaque demi alternance du signal à 77.5 KHz.

Un 3ème étage aurait été nécessaire car le signal de sortie est trop faible. De plus, comme me l'avait fait remarqué un copain, un comparateur rapide aurait aussi été très utile en

schema_ampli_77sortie.
Ce montage a mal commencé, car débuté avec un  circuit imprimé de mauvaise qualité, mal soudable c'est un comble !
Ensuite, la  mise au point a été délicate, car je me suis aperçu que l'oscilloscope TEKTRO TDS 220 était un véritable générateur de champ magnétiques à la fréquence de 77/80KHz, et assez instable et trop proche de la fréquence du DCF. (Pas de chance !)

Cette perturbation est due à l'alimentation à découpage du scope et cela fausse toutes les mesures, car le rayonnement est très important et arrive à rayonner sur le cadre ferrite du DCF77.
En plus, en relisant la documentation du DCF77, je me suis aperçu qu'il y avait aussi  une modulation de phase.
Cette modulation de phase dans notre cas n'est pas intéressante car elle perturbe la précision de la HF par ce décalage, mais à notre niveau ce n'est pas trop grave..
Trop de problèmes pour cette solution juste ébauchée… Abandon !
Au niveau alimentation, c'était quelques mA et ça aurait été intéressant.

5.4 Par Internet www.time.is33

Image_son_timeCe site pour lequel je n'ai aucune action répondait bien à ma recherche, puisqu'il peut donner un bip de fréquence 1 KHz pour chaque seconde et un bip aigu pour les secondes 58 et 59 et encore un autre encore plus aiguë pour la seconde 0.
Si cela permet de se synchroniser en utilisant la BF sortie casque du PC, c'est tout de même très aléatoire, car le front d'onde à 1 KHz de la modulation monte progressivement et comme pour le DCF il manque également la précision de l'instant de début de la seconde.
On peut voir ce signal sur l'oscillogramme (\son_time.is_P1000973.JPG *****à insérer)
C'est le seul site que j'ai trouvé qui donne un signal BF simple pouvant permettre une synchronisation automatique sans utilisation de procédures particulières (USB par exemple)

D'autre part le site informe sur la précision du temps affiché qui est de l'ordre de 200ms dûes au principe du réseau Internet. On voit donc que le problème de front avachi n'est qu'une partie de l'imprécision.
Le même site indique aussi si l'horloge de votre PC est à l'heure ou non.
On notera que ce site fonctionne aussi très bien sur smartphone.
Sur le fond, c'est bien, mais insuffisant pour un étalon, et nécessite un PC ou smartphone.
De plus jours et heures sont données sur écran sans liaison externe au PC et cela aurait été peu pratique.

5.5 Par GPS UBLOX NEO-6M

Pour commencer voici le lien vers le datasheet de ce circuit UBLOX NEO-6M, cela permet de comprendre un peu mieux ce qu'il y a sur le module GPS utilisant cette puce.

Terminal_log_GPS2Avec ce circuit, la Norme NMEA permet de recevoir en RS232 à 9600 bps par défaut, date et heure. (https://fr.wikipedia.org/wiki/NMEA_0183) sans aucun paramétrage.
Les trames $GPRMC sont les plus complètes puisqu'elles contiennent outre des coordonnées, l'heure et la date.
Les trames GGA contiennent l'heure mais pas la date.

Il est évident que l'envoi de trames RS232 n'est pas un gage de précision, quelque soit la vitesse de transmission, car c'est du micro logiciel qui gère l'envoi, et des fluctuations sont donc probables. C'est cependant aussi précis qu'un signal sonore de time.is.

Voir ci-dessus l'un des premiers exemples reçus. En jaune un ensemble de trames qui recommence indéfiniment au temps près.
Si j'ai bien retenu ma leçon, il y a 11 satellites en liaison dont les 3 trames $GPGSV témoignent. Trame 3,1 3,2 3,3.

La solution pour l'étalonnage est basée uniquement sur le signal "TIMEPULSE" à 1Hz  (Pin 3 UBLOX NEO-6M) qui est généré par les circuits de décodage de la modulation de phase des porteuses GPS. La fréquence de ce signal est paramétrable mais est par défaut à 1 Hz. Juste ce que j'attendais !

(Il est cependant indiqué que ce signal est le plus précis lorsqu'il est paramétré au moins au niveau du mégahertz). On peut déduire que cette division à 1 Hz se fait par interruptions, et que le temps peut fluctuer un peu. Sur plusieurs secondes, on peut l'admettre comme "suffisant". Je m'en contenterai car c'est déjà un progrès très important relativement aux autres solutions. (Fréquence très précise et indépendante de la température)

Ce signal "TIMEPULSE" pris sur la pin 3 qui alimente aussi la LED témoin de la synchronisation avec les satellites, est très précis et a un temps de montée de 15µs à 99% de l'amplitude, et à 25ns pour la descente.

Il est certain qu'un industriel ou une entreprise dont le temps est le métier ne peut pas se contenter de ce qu'un amateur peut se permettre, mais c'est ainsi, et nous, amateurs, ne pouvons pas investir des sommes considérables pour "titiller" les 2 ou 3 ns qui manquent !!!

NOTA1 : ces mesures sont faites sur le montage d'étalonnage après les 4 mètres de liaison filaire entre le GPS lui-même et le montage, ce qui est un peu normal mais souligne la nécessité d'utiliser le front descendant pour une meilleure précision.

NOTA2 : Toutes les mesures ont été faites avec en plus un régulateur 3.3V qui alimente le module GPS. (Il y a donc une petite perte de niveau du régulateur interne au module. -voir Avertissement en tête d'article-)

6 L'étalonnage (avec GPS)

principe__talon_scan1166.1 Le montage utilisé

Schéma de principe *****


Je n'ai pas d'autre schéma de principe que ce gribouillis, mais il m'est familier et il est simple à comprendre, contrairement au schéma.
Voici comment ça fonctionne :
On commence par appuyer sur le switch pour débuter une session de comptage d'impulsions. La synchronisation ne peut avoir lieu qu'au front descendant du signal de référence à 1Hz.
Alors la mesure commence car le XOR exclusif 1A 1B initialement à 0 0 voit 1A passer à 1 ce qui libère la gate de comptage du TIMER1 et le T1CKI recevant la fréquence de l'appareil à étalonner peut alors compter sans discontinuer avec report sur 8 octets.

Il faut accepter que la boucle d'attente de synchronisation au départ ne dépasse pas 1 µs car on tourne sur 2 instructions et il n'y a aucune interruption.
Lorsque le comptage des 74HC4518 est atteint, une sortie poids 8 des compteurs passe à 1 ce qui bloque par le XOR la gate T1G du Timer1.
On connaît la fin du comptage par RA1 qui passe à 1. (Boucle de surveillance totalement indépendante du comptage)

Le programme reste ainsi  bloqué et affiche les résultats au display.
Le fait de repasser RA0 à 0 fait le reset du XOR 2A 2B et des compteurs et autorise un nouveau cycle de mesures par appui sur le switch.
On connaît approximativement la sortie de compteur utilisée par le temps mesuré sur RA2, signal à 1 Hz. On connaît donc le temps à +- 1seconde par cet artifice et cela évite de mettre 1 signal de + pour connaître la sortie utilisée.

6.2 Schéma réalisé

Le schéma était basé à l'origine pour un TCXO et l'arrivée du GPS a compliqué un peu les liaisons qui restent compatibles cependant, au prix que quelques "acrobaties" au niveau de la connectique. Il faut comprendre que l'on n'a pas besoin du RX du GPS puisque celui-ci donne tous les éléments dont on a besoin sans aucun paramétrage. Ainsi J7 est présent seulement pour information. De même sur J2, le connecteur principal, le signal 32KHz n'existe pas ou que sur un TCXO DS3231, et il n'est pas utilisé, sans parler de BAT du DS3207 qui n'est pas utilisé.

Il est évident que ce schéma ne peut être qu'une idée, certes qui fonctionne, mais devrait évoluer vers un ensemble plus complet permettant en plus de la calibration du module, la mise à l'heure, ce qui n'est pas le cas à ce jour.

L'utilisation d'une autre référence de temps à la seconde est possible et le câblage de J2 est fait en conséquence et permet de prendre un DS1307 ou un DS3231 en référence. La programmation de ces circuits est assurée systématiquement dans le programme de mise à l'heure qui assure le bon paramétrage pour l'étalonnage.

ATTENTION : le circuit GPS UBLOX NEO 6M est uniquement alimenté en 3V ou 3.3V. Ne surtout pas mettre du 5V !  (Ceci est vrai pour le chip, mais faux pour le MODULE puisqu'un régulateur TPS79133 régule depuis 5V pour alimenter en 3.3V le circuit UBLOX)

A cette fin le schéma de cette adaptation de tension a été réalisé en "volant" sur la plaque d'essais supportant le GPS. Le schéma est indiqué dans l'encadré en violet Il n'est donc plus nécessaire et même contre-indiqué. La sortie 3.3 du signal TX du GPS est suffisante pour le câble d'adaptation FTDI  RS232/USB.
Dans le cas improbable où vous utiliseriez le signal RX du GPS, vous devrez utiliser le réseau mentionné dans ce même encadré (10K/5.6K) en sortie TX de votre PC ou de l'équipement connecté, car tout ce qui rentre en logique directement sur le circuit NEO-6M doit être en 3.3V.

 

etalonnage_avec_GPS

etalonnage_avec_GPS_CI

Attention au circuit, il est juste donné pour information, car il n'est pas à jour.

Je rappelle que ce schéma et ce circuit n'assurent que le comptage précis des impulsions fournies à l'entrée de mesure J11. Ce montage n'assure pas l'exploitation des trames NMEA et donc la mise à l'heure.

6.3 Etalonnage

J'avais initialement réalisé le montage ci-dessus pour l'utiliser avec le signal à 77.5 KHz du DCF77 puis avec le TCXO DS3231.
Je l'ai modifié pour le GPS, et il y a beaucoup de fils en l'air, car la connectique tient de la "bidouille", mais ça fonctionne bien, et je peux régler l'oscillateur des DS1307 à 32768 KHz par un condensateur de 4.7pf ou 6.8pf associé à une torsade qui permet d'ajuster à 2 621 440 périodes pour une durée de 80 secondes de temps de mesure. (A température ambiante)

Cet ensemble capacitif est soudé directement sur les fils du quartz (c'est assez délicat !) la position de la torsade joue aussi sur la capacité et une fois réglé, il faudra immobiliser celle-ci par un point de colle à chaud au pistolet.

Tiny_P1000870Le petit logiciel simplifié sur le montage d'étalonnage avec le PIC 16F688 ne permet pas de mettre les circuits à la date du jour mais seulement d'étalonner l'oscillateur pour qu'il soit à la bonne fréquence (à la température ambiante !).
La mise à l'heure se fait cependant avec un autre montage qui utilise le DCF77. voir cet article photo ci-contre http://bricolsec.canalblog.com/archives/2021/01/05/38743002.html.

NOTA : En l’absence de GPS et si vous deviez utiliser un DS1307 ou un DS3231 comme étalon, avant de passer en étalonnage d'un autre DS1307 par exemple ou de vérifier un DS3231, il est nécessaire mettre à l'heure celui qui sert de référence 1 Hz pour valider la sortie 1 Hz.

Il aurait été intéressant, et c'est tout à fait possible, d'assurer la mise à l'heure à partir du GPS et non du montage de mise à l'heure avec DCF77, mais cela n'avait pas été prévu initialement  et le PIC 16F688 est un trop petit pour assurer cet ensemble de travaux.
Ce montage permet en outre de mesurer des nombres d'impulsions pouvant aller au delà de 32KHz
il y a de larges possibilités de comptage de 8, 80, 800, 8 000, 80 000 etc…

Ce schéma était prévu pour utiliser un DS3231 ou un DS1307 étalonné, aussi il y a un connecteur J2 qui comporte les différents signaux de ces modules.
Il y a lieu de comprendre que l'arrivée du GPS a modifié un peu cela et dans cet aspect, seul le signal TIMEPULSE est utile pour le fonctionnement, mais comme le GPS doit être extérieur à un bâtiment (le positionnement sur une fenêtre à l'intérieur semble cependant suffire).

Une liaison de plusieurs mètres est nécessaire jusqu'à ce montage. Aussi le signal TX issu du GPS transite dans cette liaison de 4 fils pour pouvoir être observé sur un PC (ou tout autre dispositif) car il serait difficile de mettre un autre dispositif en extérieur non prévu pour cela.

Modif_GPS_P1010042Le signal RX du GPS n'est pas utilisé et devrait peut-être servir à la programmation qui n'est pas nécessaire ? Je n'ai pas essayé la programmation ayant d'emblée exactement ce qu'il fallait ! Ce signal RX n'étant pas utilisé, j'ai coupé la liaison vers la pin 21 et réaffecté l'ancienne pin RX du connecteur au signal TIMEPULSE, ce qui évite des fils en l'air.

Au besoin si le signal RX devait être utilisé pour le paramétrage, il suffirait de souder une broche sur la pin 21 du NEO-6M, ce qui arrivera certainement bien moins souvent que l'utilisation du signal TIMEPULSE.

Bien entendu la partie GPS devra être rendue étanche si elle doit être mise en extérieur, mais un rebord intérieur de fenêtre en sous sol m'a permis tout de même d'avoir la synchronisation et de voir jusqu'à 11 ou 13 satellites ! Donc pas trop de problèmes !

Les trames NMEA sont donc observables sur le signal TX ainsi rapporté de l'extérieur vers ce système de comptage et permettent la mise à jour de date et heure sous réserve de créer un montage un peu plus conséquent (Sans le jour de la semaine)
(Voir le complément d'expérimentation après le  § 8 pour le calcul du jour de la semaine).

7 Conclusions

Après avoir examiné avantages et inconvénients, je suis revenu au point de départ, sans pouvoir véritablement trancher de façon définitive. C'est bien là le propre de tout regarder et au final de ne pas pouvoir prendre position en faveur d'un procédé ou d'un autre, car cela dépend aussi beaucoup des applications qui utilisent le temps.

Après quelques essais et avoir examiné beaucoup de possibilités, j'ai d'abord acheté 2 modules GPS UBLOX NEO-6M qui ont fonctionné du premier coup sans aucun paramétrage. J'obtiens donc du 1Hz sur le signal de la LED  qui correspond à la sortie TIMEPULSE du circuit UBLOX NEO-6M (Pin 3). Cela m'avait obligé à mettre un fil volant sur ce point qui n'est malheureusement pas accessible sur connecteur.  (Dommage mais je viens de le corriger en "squatant la pin RX" qui n'est pas utilisée pour l'instant !)

Il faut aussi faire la conversion de niveau pour ce signal 1Hz pour repasser en 5V, car ce module est alimenté en 3.3V. Attention à ne pas mettre du 5V sur l'entrée RX du Module, et à bien alimenter en 3.3V ou même 3.0V ce module GPS . Le signal TIMEPULSE en 3.3V répond à priori aux spécifications CMOS et est parfaitement interprété par le PIC sans aucun artifice.

De même, pour la RS232, sur le TX du module GPS, les niveaux sont suffisants pour être interprétés correctement par le câble adaptateur FTDI USB/RS232 et je ne ferai rien de plus.

En ce qui concerne le DCF77, l'amplificateur de la porteuse à 77.5KHz fonctionne "à peu près", mais un "pompage" se produit au niveau de la sortie. Ce pompage est peut être dû aux changements de la profondeur de modulation. De plus le niveau reste trop faible et la réception pas toujours facile en intérieur.
Ce montage semble un peu "capricieux" et difficile à mettre au point à cause de mon scope TDS TEKTRO dont l'alim à découpage rayonne très fort en magnétisme. Quelques inductions électriques (parasites) sont aussi la conséquence de ce rayonnement magnétique.
J'abandonne donc l'amplification du 77.5KHz

Alors ! Le sujet me semble tellement large que je n'ose pas encore me prononcer, mais surtout je vois le travail à faire si j'emprunte une solution ou une autre. Dans cette optique, je m'étais dit que finalement je suis arrivé à une assez bonne solution très empirique de posséder un étalon de temps avec un DS1307 "étalonné" en temps, mais pour une température "ambiante".

Au final et pour mes applications solaires, j'ai donc opté pour un étalon de temps basé sur la réception du signal "TIMEPULSE" du GPS UBLOX NEO-6M. Ce circuit spécialisé semble assez ancien mais il fonctionne bien. On n'en demande pas plus même si il est assez gourmand en énergie !

En parallèle j'ai réalisé une petite enceinte thermostatée avec un module PELETIER, ce qui m'a permis de relever la courbe (du quartz) d'un module DS1307 qui sera ainsi étalonné à 22.5°C et qui pourra servir d'horloge précise sur bien des montages.
Chaque module DS1307 est donc ajusté à l'aide du GPS et du petit montage de comptage décrit au § ci-dessus.

Certes la température devra rester dans des limites "convenables" déjà évoquées pour maintenir la fréquence la plus proche de 32.768 KHz, mais l'accès très rapide par I²C, le coût, la précision, la facilité d'emploi sont des arguments forts.
Il faut aussi ajouter que l'électronique en extérieur est toujours sujette à aléas par la pluie, le chaud, le froid, la condensation…etc,
C'est donc mon choix d'utiliser le GPS comme étalon pour la fenêtre de temps de comptage pour assurer des étalonnages seulement !
Il pourra servir aussi dans des montages similaires un peu plus perfectionnés à développer.

Je me pose la question de savoir s'il serait utile d'établir localement (Dans un lieu d'habitation) un GPS qui diffuserait en RS232 l'heure complète jusqu'aux secondes, pour les différents montages, ainsi la dérive dans le temps n'existerait plus, et l'énergie nécessaire à la reprise resterait très faible. L'enjeu serait  de maintenir un équipement maître en fonctionnement permanent
(On ne prendrait pas le GPS lui-même en permanent à cause de sa consommation élevée)

Mais dans cette vision de l'utilisation d'une "centrale horaire", on n'a pas besoin d'une grande précision, puisque celui-ci peut très facilement se raccrocher à quelque chose de simple et peu consommateur et diffuser ensuite en permanence à tous ceux qui en ont besoin. Il est évident que cette centrale serait alimentée par le secteur, ce qui n'empêchera pas de réduire au minimum sa consommation. Cette centrale pourrait même être active durant seulement une dizaine de minutes une fois par jour pour que chaque montage puisse se synchroniser !
C'est presque exclusivement en RS232 / radio que cette diffusion du jour et de l'heure pourrait être faite.
Mais en suivant quelle principe ? GPS ? DCF77 ? TIME.IS ? Autres ? Étalon "maison" ?
C'est une idée à creuser !

Il faut aussi signaler que la "reprise du temps à un instant 't'" après un arrêt est un enjeu important des économies d'énergie sur les micro contrôleurs que l'on place parfois en sommeil (SLEEP) quand ils n'ont rien à faire, mais lorsqu'ils sont remis en service, il faut alors les remettre à l'heure, et dans ce cadre, le surcroît de consommation ne doit pas faire perdre tout le bénéfice d'un SLEEP bien au contraire.

Je renouvelle l'objet principal de tous ces travaux qui est d'avoir date et heure avec une précision "correcte", mais surtout de ne pas cumuler les dérives journalières et en ce sens avoir trois possibilités :
- Posséder un étalon de temps suffisamment précis sur 10 /15 années
- Se synchroniser à une fréquence à définir et/ou obtenir date et heure sur demande, pour ne pas cumuler les erreurs des dérives.

Avec tous les essais divers et les changements d'orientation, j'ai bien conscience que cet article n'est pas toujours facile à suivre, car il a été rédigé au fil des essais et la structure est assez désordonnée !!! Toutes mes excuses mais le cœur du sujet est bien présent et montre combien c'est difficile d'avoir le TEMPS !

8 Le mot de la fin

Je pense que la meilleure voie restante à l'amateur est de pouvoir se synchroniser ou recevoir date et heure n'importe quand, en direct ou au pire par les ondes radio de préférence.
 
Le GPS m'a bien intéressé, mais il est décidément très gourmand en énergie pour ce modèle (2 KWH par année) et l'impérieuse nécessité de "voir le ciel". C'est pourtant un choix d'avenir. Il peut aussi être utilisé de façon périodique pour limiter son impact énergétique, en accord avec son plus grand temps de synchronisation qui est de l'ordre de 27 secondes.

Le DCF77 est souvent délicat en réception à l'intérieur et il doit en plus être orienté, mais il a l'énorme avantage d'être très peu gourmand en énergie (109 WH par année). Il ne concerne que la zone circulaire d'environ 2000 Km autour de MAINFLINGEN  (Allemagne). Il peut ainsi faire partie d'une centrale locale fixe bien positionnée, dédiée à la date et l'heure en retransmettant  localement les données de date et heure. Tous les micro contrôleurs d'applications ont alors seulement, besoin d'un petit récepteur radio (avec cadre ferrite), pour se mettre à l'heure.
Les transmissions radio ne sont malheureusement pas toujours très bonnes et c'est un risque. On note cependant que mis à part cette fréquence porteuse très stable, il n'y a aucun signal spécifique de temps très précis ponctuellement et il ne peut donc pas servir d'étalon de temps.

Alors je livre ma dernière IDÉE…

(Je pense abandonner le DCF77 et ses modules toujours chers, mal aisés et destinés tôt ou tard à disparaître).

IDÉE qui devrait permettre de mettre en sommeil un microprocesseur (Arrêt de l'oscillateur) tout en retrouvant très rapidement l'heure "à peu près juste" avec un DS1307 en procédure I²C. Dans cette dernière vision, il faudra bien se remettre à l'heure exacte de façon régulière, par exemple tous les mois et dans ce cas on utiliserait le GPS, ce qui reste acceptable au niveau consommation, pour cette remise à l'heure.
Cette remise à l'heure mensuelle remettrait le micro contrôleur à l'heure précise mais aussi le DS1307 qui pourrait de nouveau légèrement dériver dans des limites acceptables, au fil des 30 jours suivants.

On profite ainsi de la très faible consommation du DS1307 (1.5mA en activité et 200µA standby) et de sa pile 2032 de sauvegarde (300nA), ce qui permet de tout arrêter tout en permettant de recharger l'heure très rapidement pour reprendre un cycle de travail avant un nouveau "SLEEP".
Je crois que cette manière de voir les choses est peut être la plus pragmatique, car la parfaite stabilité des horloges locales au niveau amateur est réellement inaccessible sans moyens importants.

Un récepteur GPS avec antenne vaut moins de 3€ TTC alors que le DCF77, 10 à 15€ TTC. Le choix est vite fait, d'autant que tous les µ ont un port série et que c'est un important avantage de procédure connue.

Un GPS et un DS1307 pourraient cohabiter sur un même montage, mais le GPS ne serait mis sous tension que de façon ponctuelle à cause de sa consommation élevée.
D'une autre façon, le GPS pourrait être simplement "amené" en connexion pour une mise à jour occasionnelle, mais c'est une opération manuelle toujours gênante et que l'on oublie !!!

On notera que dans cette optique de mise à jour, on peut simplement utiliser la RS232 du GPS avec recherche d'une trame $GPRMC, car date et heure sont fournies avec la précision du 1/100 de seconde, car on n'est pas dans ce cas en étalonnage.
Certes, cela fait du matériel redondant pour simplement avoir l'heure précise… Il serait également possible de perdre moins de temps en paramétrant la vitesse de la RS232 par les broches NEO-6M dédiées à la programmation de la vitesse (Voir datasheet NEO-6M)
Tout cela est à voir… (Essai réalisé voir ci-dessous §8 expérimentation)

Voilà, c'est ce que j'ai retenu des éléments décrits, mais il y a peut-être d'autres possibilités comme des clepsydres ou des horloges/cadrans solaires à gnomon !!!

bricolsec
__________________________________________________________________

 

Expérimentation modules UBLOX NEO-6M (article complémentaire)

Ayant reçu ma commande de 2 modules UBLOX NEO-6M, j'ai essayé et relevé quelques éléments pour comprendre et évaluer si ils pouvaient m'être utiles dans ma quête du temps. J'avais à l'époque consigné un peu ce que j'ai appris dans ce court exposé et je mets cela à la suite de l'article précédent car c'est dans la même esprit du temps, et c'est un peu plus précis techniquement que dans l'article, car je ne connaissais pas vraiment le sujet du GPS.

1 Consommation NEO-6M

Le 3.3 V est généré directement par le MODULE GPS (Vu après)
En l'absence de satellite la consommation du MODULE est d'environ 64 mA sous 5 V

Avec satellite on peut avoir 10 mA de moins toutes les secondes environ. Cela peut peut-être être accentué par l'allumage intermittent de la LED.

2 Les temps de mise en fonction

Il y a les démarrages A FROID toujours longs avec 27 secondes. Lorsque le GPS qui possède sa propre horloge considère que la situation précédente est trop ancienne (4 heures si mes souvenirs sont bons) alors il doit redémarrer à froid.
Sinon il a encore la position des satellites et peut donc en 1 seconde ou maximum 3, redémarrer et se synchroniser parfaitement.
(COLD et WARM START)

3 Trames

Dans notre cas, et synchronisé une première fois, avec ou sans synchronisation ultérieure, il y a une trame toutes les secondes. (Trames différentes suivant la synchronisation) Le temps par bit transmis correspond  environ à 100µs soit pratiquement 9600 bps ou  #1000 car/s.
On notera que ces trames 3.3V sont lues sans problème avec l'outillage FTDI/RS232 associé à Terminal de BRAY++ qui est en 5V
Ces trames ne peuvent cependant pas être utilisées en référence de temps. Elles ne peuvent servir qu'à définir la date et l'heure jusqu'aux secondes avec une précision des secondes à ±1seconde environ. (Non réalisé à ce jour)
Tout timing précis ou référence de temps ne peuvent être obtenus qu'à partir du signal TIMEPULSE.

4 contenu des trames

L'ensemble de ces trames se répète indéfiniment et dans ce cas les trames durent environ 300 à 500ms, et elles sont suivies d'un silence correspondant à 1 seconde complète de période.

Essai réalisé le 10/07/2021 avec Terminal de BRAY++, alim 3.3V  (date en $GPRMC en couleur bleue)

exemple_trames_NMEA_color

On peut faire quelques constatations comme l'heure en fond vert clair du programme "terminal" de la RS232 de 17:04:51.506 et l'heure de la première trame $GPRMC en lettres rouges : 150454.00. Il y a les 2 heures de décalage habituel avec l'heure d'été. La différence des minutes est due au PC qui n'est pas rigoureusement à l'heure.

Les trames $GPGSV peuvent être au nombre de 3 et ici on voit qu'il y a 9 satellites visibles et donc un maximum de 12 satellites. Ces trames sont numérotées 3,1 3,2 3,3 et sont suivies du nombre total de satellites. La suite représente les "idents" de chaque satellite. Il y a une différence entre un satellite visible (9 pour trame $GPGSV) et un satellite en poursuite (8 en poursuite pour trame GGA). (Il m'a semblé avoir lu que 4 lignes $GPGSV sont possibles ???)

La trame $GPRMC est seule impérative pour les applications de date/heure, car elle seule contient la date et l'heure. L'heure est UTC c'est-à-dire l'heure légale d'été MOINS 2 heures. (On le voit approximativement par l'horodatage trames de terminal BRAY++)

L'heure GPS est exprimée avec la précision du 1/100, mais on ne sait pas quel est l'instant de ce 1/100 !

Cependant, si l'on veut avoir une idée du nombre de satellites actifs (en poursuite), il faut lire une trame $GPGGA qui indique par ce paramètre, si la réception GPS est bonne ou moyenne ou mauvaise.
Pour aller encore plus loin dans la précision, il semble intéressant de regarder le niveau de réception de chaque satellite dans les trames $GPGSV 4ème valeur d'un groupe de 4 associé à un PRN (Jusqu'à 3 trames et 12 satellites maximum). Cela peut être utile pour choisir le meilleur emplacement pour le GPS.

5 La trame $GPRMC

C'est la trame qui contient toutes les informations nécessaires pour mettre à l'heure les horloges, mais la précision à 9600 bps reste dérisoire du fait de la transmission.
Pour la dernière trame de l'exemple en couleur, les informations sont dans l'ordre (Issu du document NMEA):

150455.00 = Heure du Fix 150455.00 UTC
A = Alerte du logiciel de navigation ( A = OK, V = warning (alerte)
4740.35409,N = Latitude 49 deg. 16.45 min North
00649.19028,E = Longitude 123 deg. 11.12 min East
0.622 = vitesse sol, Noeuds
cap (absent)
100721 = Date du fix 10 Juillet 2021
 Déclinaison Magnétique (absente)
*76 = checksum obligatoire
Non représentés CR et LF
Ces données "minimales", sont le plus souvent utilisées dans les programmes de navigation GPS simples.

Aucune trame ne contient le jour de  la semaine, qui est cependant nécessaire pour savoir quand aura lieu le changement été/hiver puisque cela a toujours lieu un dimanche, aussi il y a lieu d'utiliser l'algorithme le plus simple décrit ci-après.

6 retrouver le jour de la semaine

Méthode 2 (source WIKIPÉDIA)

Pour une date de la forme jour/mois/année où « jour » prend une valeur de 01 à 31, « mois » de 01 à 12 et « année » de 1583 à 9999, utiliser la formule :

c = (14 - mois)/12
En fait, c = 1 pour janvier et février, c = 0 pour les autres mois.
a = année - c  (année en 4 chiffres)
m = mois + 12*c - 2
j = ( jour + a + a/4 - a/100 + a/400 + (31*m)/12 ) mod 7
La réponse obtenue pour j correspond alors à un jour de la semaine suivant :
0 = dimanche, 1 = lundi, 2 = mardi,….  6=dimanche.

Remarques :
Dans toutes les divisions, on ne garde que la partie entière du résultat. Par exemple, 35/4= 8.
Enfin, mod 7 signifie « modulo la division par 7 », c'est-à-dire « le résultat est le RESTE de la division par 7 ».
(Par exemple, 23 mod 7 = 2, car le RESTE est 2). (3x7=21---> 23-21=2 cqfd)

Exemple
Sur quel jour de la semaine tombe le 13 mars 2004 ?
On calcule c, a et m :
c = (14 - 3)/12 = 0, a = 2004 - 0 = 2004 et m = 3 + 12*0 - 2 = 1.
On trouve alors :
j = ( 13 + 2004 + 2004/4 - 2004/100 + 2004/400 + (31*1)/12 ) mod 7
j = ( 13 + 2004 + 501 - 20 + 5 + 2 ) mod 7
j = 2505 mod 7 = 6 (car 2505/7 = 357 et il reste 6.)
Donc le 13 mars 2004 était un samedi.

7 Le signal à 1 Hz

Ce signal "TIMEPULSE" est une impulsion positive de 100ms de 3.3 V qui se répète toutes les secondes.
Ce signal n'existe pas en l'absence d'au moins 4 satellites actifs. Ce signal de 3.3V est disponible en pin 3 et alimente également la LED du module.
Ce signal n'apparaît que lorsque la synchronisation avec plusieurs satellites (4 minimum) est réalisée.

8 Un essai qui en dit long

decalage_2_GPS_P1010047Après avoir racheté plusieurs exemplaires, j'ai d'abord eu la nécessité de charger l'accu de chaque module, car il n'y avait pas grand' chose de tension restante...
Pour cela, j'ai monté sur une plaque d'essai 3 connecteurs 4 broches pour 3 modules alimentés par un petit chargeur standard 5V, et je me suis aperçu que les LED des modules clignotaient en même temps...
Certes en réfléchissant c'est parfaitement normal, alors j'ai poussé les investigations un peu plus loin en regardant les signaux TIMEPULSE au scope, et ils étaient en parfait accord jusqu'à 2 ou 300 ns soit d'un côté ou de l'autre et variant légèrement au fil du temps.

Cela confirme que chaque module "fabrique" son propre temps de référence issu des satellites et enfin que comme l'indique le datasheet UBLOX, il serait préférable de programmer un TIMEPULSE au MHz pour éviter ces petites fluctuations dues vraisemblablement aux interrrupts du circuit.
Globalement c'est tout de même de l'excellente précision du temps et je suis séduit par cette relative facilité d'avoir une référence de temps et d'avoir en plus date et heure !

Alors j'ai essayé de forcer la pin 15 CFG_COM1 du NEO-6M pour essayer de passer à 38400 bps, je l'ai fait et je suis resté à 9600 bps ! Pourquoi ? : Erreur il fallait utiliser la pin 14 ! Et là ça fonctionne comme en témoigne cette recopie d'écran.

GPS_38400bps

Il ne restera plus qu'un seul essai à faire qui est d'essayer l'I²C mais je ne le ferai pas, car c'est trop de bazar, d'autant qu'il n'est pas certain que cela soit à disposition de l'utilisateur, car ce produit est programmable et ce qui est livré est peut-être une version déjà programmée par UBX ?

Publicité
Commentaires
BRICOLSEC
Publicité
Newsletter
Visiteurs
Depuis la création 3 452 365
Publicité
Publicité