DS1307 et DCF77 : conflit ou pas ? [Resolu]

Bonjour,

Je suis sur un projet d'horloge.
J'utilise un DS1307 (adafruit) pour la sauvegarde de l'heure.
J'utilise un DCF77 (pollin.de) pour receptionner l'heure atomique.

Indépendamment, les deux modules fonctionnent très bien.

Ma difficulté est de faire cohabiter les 2, car ils utilisent tous les deux la librairie Time. Du coup, j'ai 2 sources qui essayent de mettre à jour l'heure et j'ai l'impression que ça crée un conflit.

Actuellement, j'arrive à avoir l'heure depuis mon DS1307 mais l'heure DCF ne synchronise pas et reste à 0.

Avez vous une piste ?

Merci.

Tarasbulba:
Bonjour,

Je suis sur un projet d'horloge.
J'utilise un DS1307 (adafruit) pour la sauvegarde de l'heure.
J'utilise un DCF77 (pollin.de) pour receptionner l'heure atomique.

Indépendamment, les deux modules fonctionnent très bien.

Ma difficulté est de faire cohabiter les 2, car ils utilisent tous les deux la librairie Time. Du coup, j'ai 2 sources qui essayent de mettre à jour l'heure et j'ai l'impression que ça crée un conflit.

Actuellement, j'arrive à avoir l'heure depuis mon DS1307 mais l'heure DCF ne synchronise pas et reste à 0.

Avez vous une piste ?

Merci.

bonsoir
sans code difficile d'essayer de voir où çà coince

Au temps pour moi, je crois avoir dit une bêtise. Le RTC ne semble pas utiliser la librairie TIME. Donc a priori pas de conflit.

Néanmoins, voici un sketch qui ne marche pas (il compile ok).
J’ai pris un sketch exemple pour le DCF77 qui marche très bien tout seul.
J’ai ajouté la lecture de l’heure depuis le RTC et l’heure du RTC retourne une valeur improbable.

Je n’ai plus les yeux clairs, donc si l’un d’entre vous peut me mettre sur la voie…

A+

RTCDCFtest2.ino (2.13 KB)

Bonsoir,

J’ai refais un autre test. J’ai pris le sketch exemple du DS1307 et j’y ai intégré le sketch exemple du DCF77.

Dans ce sketch la, le RTC fonctionne, mais le DCF ne synchronise pas.

J’ai donc l’inverse que dans l’exemple précédent ou le DCF synchronise mais le RTC ne fonctionne pas.

Je sèche, donc je suis preneur de votre aide.

Cdlt.

ds1307-dcf77-fusion_sample.ino (2.23 KB)

Tarasbulba:
Bonsoir,

J'ai refais un autre test. J'ai pris le sketch exemple du DS1307 et j'y ai intégré le sketch exemple du DCF77.

Dans ce sketch la, le RTC fonctionne, mais le DCF ne synchronise pas.

J'ai donc l'inverse que dans l'exemple précédent ou le DCF synchronise mais le RTC ne fonctionne pas.

Je sèche, donc je suis preneur de votre aide.

Cdlt.

Bonsoir
à chaud

  • Module DCF OK
  • RTC OK

J'irais regarder les ressources "timer" utilisées par les 2 libs (RTC et DCF)

Bonsoir,

Bon, je viens de reessayer et la ca marche... avec le sketch posté à 21h35

0:02:54 1 1 1970
RTC CLOCK : 2015/10/5 21:51:51

0:02:57 1 1 1970
RTC CLOCK : 2015/10/5 21:51:54

Time is updated
21:52:02 5 10 2015
RTC CLOCK : 2015/10/5 21:51:57

21:52:05 5 10 2015
RTC CLOCK : 2015/10/5 21:52:0

J'arrive donc à avoir les 2 RTC et DCF fonctionnels en même temps.

Je vais retourner au code de mon horloge pour comprendre les écarts.

A suivre...

Tarasbulba:
Bonsoir,

Bon, je viens de reessayer et la ca marche... avec le sketch posté à 21h35

0:02:54 1 1 1970
RTC CLOCK : 2015/10/5 21:51:51

0:02:57 1 1 1970
RTC CLOCK : 2015/10/5 21:51:54

Time is updated
21:52:02 5 10 2015
RTC CLOCK : 2015/10/5 21:51:57

21:52:05 5 10 2015
RTC CLOCK : 2015/10/5 21:52:0

J'arrive donc à avoir les 2 RTC et DCF fonctionnels en même temps.

Je vais retourner au code de mon horloge pour comprendre les écarts.

A suivre...

peut etre que ton code impose que le DC soit valide pour "travailler"
Pour ce qui est des ecarts ce n'est surement pas ton code qui est "defaillant"
il faut bien avoir à l'esprit que ta RTC "embarque" sa propre Bdt ( le qz 32.768 kHz)
Bdt qui a ses propres caracteristiques de derives
Le DCF77 lui "top" en asservissement avec une precision surement largement plus importante
Bon , faut pas non plus "prendre une plombe" pour afficher la seconde ;D

Merci Artouste pour tes retours.

Je crois avoir compris mon erreur. Pas de problème dans le code, c'est seulement mon interprétation qui était fausse.
Voici mon analyse :
Dans le sketch uploadé ici ce soir, le DCF met à jour l'horloge interne de l'arduino avec settime ().
Donc, dès que le DCF chope le signal, l'horloge interne de l'arduino est à l'heure.

Dans mon projet, je n'affiche que l'heure du DCF et non l'heure de l'arduino. J'en viens donc à penser que le DCF ne retourne l'heure qu'une fois par minute, quand il a complètement décodé le signal (le signal DCF est codé sur 59 secondes). Le reste du temps, il retourne 0.

Donc, pour avoir les 2 heures en même temps il faut :

  • afficher l'heure RTC DS1307 qui a son propre quartz comme le dit Artouste
  • afficher l'heure interne de l'arduino (fonction now()) qui a aussi son propre quartz.
  • mettre à jour l'heure du RTC (et donc de l'arduino par rebond) avec le DCF (fonction RTC.adjust (DCFtime);

Et voila le travail, je suis dessus depuis quelques temps et je suis bien content d'avoir trouvé. Je vais pouvoir finir mon projet, je vous enverrai une photo du montage fini.

Cdlt.

Tarasbulba:
Et voila le travail, je suis dessus depuis quelques temps et je suis bien content d’avoir trouvé. Je vais pouvoir finir mon projet, je vous enverrai une photo du montage fini.

Il faut se servir du “meilleur eleve” pour “reajuster” 8)
apres tout depend de ton appli
et de ce que tu decide de qui sera ton “maitre du temps”