Problème de connection d'horloge RTC

Le circuit intégré DS1302 tout comme le DS 1307 est parfaitement précis ; ce ne sont que des compteurs.

Leur dérive est celle du quartz.
Défaut de coupe du quartz qui provoque un décalage de sa fréquence centrale
Dérive en température.

Les quartz des fréquencemètres de laboratoire sont dans des enceintes thermostatées qu'il ne faut jamais débrancher.
Les produits Made in China ont des quartz bas de gamme.

Maxim garanti les dérives du ds3231 car l'horloge est obtenue par un autre principe (MEMS) qui est corrigé en température. Maxim est maitre de la chaine.

Maxim ne garantira jamais les dérives des 1302 et 1307 (même CI il n'y a que la communication qui change) car la précision et les dérives dépendent de celui qui met le circuit en oeuvre.

Exactement :slight_smile:

Résoudre le problème RTC est un petit pas, nécessaire, mais un tout petit pas.

  • alimentation :
    • solaire, OK, mais quid de la batterie et du chargeur ?
    • autonomie souhaitée ?
    • fonctionnement en hiver ?
  • humidité = oxydation -> protection envisagée ?
  • MEGA : pourquoi un tel bazooka pour abattre un moucheron ?
  • pour info une MEGA consomme 7mA en mode veille
  • et il faut du 5V !
  • connecteurs femelles de la MEGA = usine à faux contacts
  • SD : pas forcément fiable. Il faut sélectionner un modèle et le tester à fond
  • de plus il faut prévoir un emplacement SD sans possibilité d'entrée d'humidité
  • et une SD consomme aussi !

Personnellement je verrais plutôt un ESP32 :

  • alimentation 3.3V : une batterie LIFEPO4 suffit, ou une LITHIUM-ION + regulateur 3.3V
  • même si le WIFI paraît inutile, il peut servir à relever les données (download d'un fichier)
  • FATFS émulé en FLASH : en remplacement de la SD
  • en mode veille un ESP32 consomme moins qu'une MEGA

Comme on le voit dans ce projet : Enregistreur pluviomètre
La RTC est le cadet des soucis.

Bonsoir et merci de vos réponses.
Effectivement ce montage a pour objectif d'enregistrer la météo de façon totalement autonome (pas de wifi, ni Internet ) la station sera dans la garrigue Narbonnaise à 450 mètres d'altitude. Le soleil est très généreux, d'où l'idée de l'alimentation par panneau solaire qui devrait largement suffire à entretenir la charge d'une petite batterie (moto par exemple). Malgré tout, même si l'accès n'est pas simple (4x4 obligatoire et long + marche d'approche) changer la batterie, récupérer les données ou simplement vérifier que les sangliers ne se sont pas frotter sur l'installation sera réalisé régulièrement.
L'idée d'utiliser des batteries 18650 est envisageable avec une alimentation usb le temps de l'échange des batteries.
Nous avons choisit une Méga 2560 car elle nous a semblée appropriée. Nous l'avons, elle devrait faire l'affaire. sur cette Méga, il y a un shield avec des connections Grove pour l'aspect pratique des branchements. Il est vrai toutefois que la connexion du module SD se fait sur les broches 50 à53 et 5v par fils Dupont (cela nous semble être un point faible)
L'ensemble des composants sera installé dans un boîtier étanche et de préférence tropicalisé, mais la météo est souvent très clémente malgré quelques épisodes pluvieux intenses.
Vos conseils pour enregistrer les données autrement que sur SD seraient précieux.
Lors de nos réflexions, il est apparu le problème de dérive de l'horloge interne de la Méga. C'est pour cela qu'une horloge plus précise nous a semblée utile. La DS 1307 était indiquée comme performante...
La précision est toute relative, car il nous faut savoir à quel moment il pleut (avec d'autres paramètres bien sûr) et combien de temps après le niveau du lac varie, puis se vide. La précision est importante surtout sur la durée, mais cela doit rester cohérent. En période normale de météo cela n'est pas très important, par contre lors des épisodes Cévenols d'automne, là cela devient primordial, d'où l'idée de l'horloge.
Cette installation n'a pas pour objet de rester quelques semaines, mais 2 cycles annuel de météo nous semble utile pour moyenne significative (au minimum)
Pour info, les sondes qui seront mise au niveau du lac enregistre la pression, la T° et l'heure en continue. voir :ReefNet Inc. | Sensus Ultra
Merci de vos conseils

Bonjour, Voilà ce qui est disponible et essayé actuellement. Nous les avons essayées à chaque fois sur UNO ou Méga avec les mêmes résultats.
A professional collaborative platform for embedded development · PlatformIO / résultat : erreur de compilation pour les deux exemples.
GitHub - PaulStoffregen/DS1307RTC: Use a DS1307 Real Time Clock chip with the Time library / résultat : les deux exemples indiquent de vérifier les branchements.
GitHub - Seeed-Studio/Grove_High_Precision_RTC_PCF85063TP: Grove RTC base on PCD85063TP / Le module en photo est celui que nous avons actuellement. Résultat : l'heure défile, mais n'est pas correcte, la date est au 1.1.2000
Grove_High_Precision_RTC_PCF85063TP/PCF85063TP.cpp at master · Seeed-Studio/Grove_High_Precision_RTC_PCF85063TP · GitHub / résultat : affiche 45:165:85 165:165:2165:165
[partage]Librairie simpleRTC (DS1307 / DS3231) avec heures été/hiver / résultat des 3 premiers exemples corrects soit en automatique ou manuel, puis cela indique un problème d'accès à l'horloge.
Sur les deux cartes, nous avons également fait un scanner et tous les branchements sont indiqués corrects.
Les autres modules sont la station météo : GRLEX007 - Grove Station météo pour arduino et Raspberry Cela fonctionne bien.
Le baromètre : 101020068 Capteur Grove Baromètre pour arduino et Raspberry
Température humidité : Capteur Grove humidité et température SHT35 101020592
Carte SD : Module pour carte mémoire SD™ pour arduino.
Tous ces modules fonctionnent actuellement de façon indépendante. Il faudra les regrouper, puis écrire sur la carte SD ou les mettre en mémoire de façon différente. Une mesure par quart d'heure est envisagé.

Bonjour,
Comme indiqué déjà ici, je m'orienterai vers une horloge DS3231 en utilisant la bibliothèque de RinkyDink.
Rinky-Dink Electronics.
Elle est très complète et gère unixtime, ce qui est très pratique pour l'enregistrement des mesures.
Selon le nombre de données pourquoi ne pas utiliser une eeprom du genre 24LC512 ou 1024, il existe également une bibliothèque de RinkyDink.
Des notices pdf sont fournies avec.

JChristensen a également écrit des bibliothèques : GitHub - JChristensen/DS3232RTC: Arduino Library for Maxim Integrated DS3232 and DS3231 Real-Time Clocks
et GitHub - JChristensen/extEEPROM: Arduino library to support external I2C EEPROMs.
Beau projet, bonne continuation à toi.

1 Like

La RTCLib de adafruit est fonctionnelle aussi et offre 2 classes pour gérer le temps et faire des calculs qui simplifient la vie). Il y a du choix mais dans tous les cas il faut mettre l’heure à jour au moins une fois :slight_smile:

Avant de prendre cette décision au pifomètre, un bilan sérieux de consommation est nécessaire (dimensionnement de la batterie et du panneau).
C'est à dire qu'il faut additionner toutes les consommations des modules pour calculer la consommation journalière : (conso totale en mA) * 24H = conso en mAH.

Si j’ai bien compris les sensus ultra seront sous terre au fond du lac et enregistreront les variations de pression donc la hauteur de la colonne d’eau (variations de niveau d’eau) alors qu’en surface vous enregistrerez la pluviométrie et d’autres paramètres et ce n’est que dans plusieurs mois que vous irez extraire les Sensus et comparer leur données avec celles du système de surface.

Dans ce cas, La precision des horloges ne doit pas être relative, s’il y a dérive de celle en surface et pas de celles dans le lac, vous risquez au bouts de quelques mois d’avoir des informations erronées.

Je viens de vérifier seul le DS3231 à un registre "Aging".
Ce registre sert à apporter des corrections en fonction du vieillissement du circuit.
Il est possible de s'en servir pour faire une calibration.
NB : il est fort probable que ce paramètre n'est pas géré dans les bibliothèques, mais l'écriture et la lecture des registres d'un DSxxxx est simplissime.

Pour la gestion du temps la DS1307 est pour moi impropre.
Avec des DS3231 des précautions s'imposeront :
Celle au fond du lac sera à température quasi constante et à variation très lentes.
Celle au sol devra être isolé thermiquement pour limiter les variations de température.

Mais rien ne permet de dire que c'est celle du fond qui dérivera le moins :
Dans le DS3231 il n'y a pas une régulation, il y a une compensation.
Ce qui veut dire que le circuit fait des corrections en fonction de la température de la puce.

Les compensations ne sont pas analogiques, mais digitales, c’est-à-dire par pas.
Il y a donc des "sur" et des "sous" compensations qui restent dans les ppm garantis, mais qui en pratique peuvent se compenser. La compensation se fera différemment au sol ou au fond.

C'était l'exposé technique, il reste à vérifier que ce point est important ou pas.

Perso je mettrais immédiatement deux DS3231 en test. Une sur étagère, l'autre dans une boîte de polystyrène dans un frigo (température régulée et polystyrène pour lisser les variations de température quand le compresseur se met en route), histoire d'avoir des valeurs de dérives.

Le temps de développer le restant du projet les premiers résultats devraient être disponibles.

Bonsoir fpaude

Dans la bibliothèque RTClib-master, il y a un exemple ds1307. Il y a une section qui permet de synchroniser ta RTC avec l'horloge de ton PC

  if ( !rtc.isrunning()) {
...

déconnectes ton module, retires la pile bouton, attends un instant, remets la pile, reconnectes ton module et charges l'exemple ds1307, ça devrait remettre à l'heure ta ds1307.

Si ça ne fonctionne pas, essaies de forcer la mise à jour ainsi

  if ( rtc.isrunning()) {
...

en supprimant le !, mais attention de ne pas laisser le sketch dans l'Arduino, quand effectué, charger un autre programme.

Cordialement
jpbbricole

Pour JML:
Sous terre, il y aura 2 Sensus Ultra. C'est du matériel qui a fait ses preuves en milieu spéléo(durée de vie 10 ans). une dans le lac à 3 m de profondeur, l'autre au niveau haut du lac, mais à l'extérieur. Chacune enregistre la pression, T° et heures à intervalles définis (ici, tous les 1/4 d'h). Les deux sondes sont calibrées avant mise en place pour compenser les éventuels écart de mesures. C'est la différence des pressions entre les deux sondes qui indiquent les variations de hauteur d'eau. Simple, mais très efficace.
Lorsqu'une goutte d'eau(ou plusieurs, (c'est mieux)) tombe en surface, le but est de connaître le temps de percolation de 80 mètres dans le lac puis du vidage du lac si pas de précipitations.
J'ai employé le terme "relatif" car sur le long terme, il faut que cela soit cohérent. D'où une horloge en surface qui permet d'enregistrer également tous les 1/4 d'h, mais nous ne sommes pas non plus sur la minute par exemple. Il y a 80 m à parcourir pour la goutte d'eau, mais un épisode Cévenols peut-être surprenant en temps.

Pour Bachetti:
J'ai posé la question à "Lextronic" . la réponse est "l'ensemble de la station à une consommation de 150 mA environ. Donc une batterie de 3 Ah est suffisante sans GSM, mais 8 avec GSM). Nous avons trouvé une batterie de 9 Ah en 12 Volts ce qui nous laisse de la marge car au vue du lieu d'implantation de la station, le GSM ou autre est difficile et nous semble inutile.

Pour 68tjs:
Sous terre, pour le moment, il n'y aura que les deux sondes Sensus Ultra qui sont faites pour cela.
L'horloge est uniquement en surface dans un boîtier étanche.

Pour jpbbricole:
RTClib-master et l'exemple ds 1307 ne fonctionne ni sur la carte UNO, ni sur la Méga, même en enlevant le !
C'est désespérant. Je vais changer la pile au cas où (pourtant neuve à priori!!!), mais ayant deux modules, les résultats sont identiques avec les deux sur les deux cartes.

Cordialement à vous.

Bonjour,
On se disperse, ça part un peu dans tous les sens et personne ne lit vraiment les messages et passe plus de temps à exposer comment il aurait fait plutôt que résoudre le problème.

J'ai suivit ce lien que tu donnes et la description de la carte ne correspond pas avec ta demande.

Ce module intègre une horloge temps réel PCF85063TP

La carte n'utilise pas un DS1307 et, du coup, tu n'utilises pas la bonne librairie. Il faut donc utiliser celle-ci. Et si ça ne fonctionne toujours pas il faudra investiguer sans changer la librairie

Il faut faire tourner SetTimeAndDisplay.ino qui se trouve dans les exemples en décommentant la portion suivante:

    /*
        RTclock.stopClock();
        RTclock.fillByYMD(2016,7,5);//Jan 19,2013
        RTclock.fillByHMS(14,10,00);//15:28 30"
        RTclock.fillDayOfWeek(TUE);//Saturday
        RTclock.setTime();//write time to the RTC chip
        RTclock.startClock();
    */

Et en mettant évidemment les bonnes valeurs pour la date et l'heure. Penser à mettre en paramètres une heure quelques minutes dans le futur pour compenser le temps de compilation et de téléchargement et ainsi lors de l'exécution l'heure ne sera pas trop décalée.
Ne pas laisser ce programme en mémoire sinon la RTC sera réinitialisée à chaque démarrage avec des mauvais paramètres.

Ne surtout pas activer cette ligne, si tu n'as pas fait une mesure de la fréquence du quartz de l'horloge.

//clock.setcalibration(1, 32767.2);  // Setting offset by clock frequency

La dérive doit pouvoir être corrigée avec cette ligne (il faudrait lire la doc en détail):

uint8_t ret = clock.calibratBySeconds(0, -0.000041);

Elle est pas mal celle-là.
Mais on a déjà vu pire.

S’il faut tout revérifier c'est usant.
Quant à la dérive cela ne change rien par rapport à la DS1307 : tout est dans le choix du quartz, de son adaptation et de ses dérives en température.
Paramètres sur lesquels ont ne connait rien puisque cela dépend du sérieux du fabricant du module. Au prix où les modules sont vendus il ne faut pas s'attendre à des miracles.

Un peu HS mais, sur la même idée de départ, j'ai essaie de monter un groupe de travail sur l'instrumentation au sein de la commission scientifique de la fédération française de spéléo. Mais comme j'ai la tête sous l'eau, je n'ai rien animé et ça n'a pas avancé. Je pense néanmoins que le monde de l'arduino offre effectivement des opportunités de développer de l'instrumentation à moindre coût.

Bonjour,
Merci Fdufnews. Effectivement j'avais installé la bonne librairie, mais n'ayant pas dé-commenté la partie indiquée, cela ne fonctionnait pas malgré la bonne date. En cherchant comment régler c'est le terme RTC qui m'a planté et je suis partie sur la 1307 dont tout le monde en disait du bien, c'est aussi bête que cela.
Maintenant cela fonctionne, avec une seule interrogation Dans l'IDE, cela écrit l'heure puis la date et juste avant le jour, cela rajoute le nombre du jour par exemple pour aujourd'hui 19*samedi. Utile? J'ai supprimer la ligne correspondante, cela fonctionne.
Un grand merci à vous.
Pour MarsaMatruh:
Je fais également partie de la com scientifique de la FFS, mais pour la biologie. J'ai vue passé ce groupe de travail que j'ai suivi car je cherchai des infos sur ce sujet, mais c'est vrai que cela pas avancé. Peut-être à relancer!
Merci également aux autres de nous avoir aidé à ne passer le chemin :slight_smile:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.