Bonsoir,
j'ai acheté une carte à base de DS1307 sur futurlec
Cette carte possède une pile bouton pour sauvegarder l'heure en cas de coupure de courant enfin je pense.
Car lorsque je coupe l'alim et que je la rallume l'heure n'est pas sauvegardée elle reprend à l'heure que j'ai réglé dans le programme.
Y a t 'il une fonction à mettre dans le programme pour ne pas perdre l'heure ??
elle reprend à l'heure que j'ai réglé dans le programme
Ton programme écrase l'heure a chaque démarrage .. ?
Il faut réglé l'heure une fois et ensuite lire uniquement l'heure.
Par exemple si la date et heure = 0000... c'est que le composant n'est pas initialisé alors dans ce cas tu règle l'heure ensuite si tu lis qu'elle est dans des valeurs cohérentes, plus besoin de réglé l'heure.
En effet, la pile de 3V permet de laisser tourner l'horloge quand le circuit n'est pas alimenté. Vu que ça consomme 500nA (nano-ampères !), ça peut tenir très longtemps. Il y a la même chose sur les cartes mères de PC, si tu regardes bien. Sur Mac aussi bien sûr...
Si l'heure ne se mémorise pas, ça peut être simplement un problème de pile HS. Mais vu que la carte à l'air neuve et que la pile dure très longtemps, j'ai des doutes. J'en ai encore plus en lisant : "elle reprend à l'heure que j'ai réglé dans le programme" !
En fait, vu que tu as une horloge, pourquoi régler l'heure dans le programme ? Le DS1307 n'est-il pas justement là pour ça ?
En fait, il faut envoyer l'heure une première fois depuis l'Arduino pour la mise à l'heure. Et c'est tout. Il ne faut plus y toucher (sauf pour corriger un éventuel décalage). Bien évidement, il ne faut pas que l'Arduino ai une heure codée en dur dans son programme.
Peux-tu nous en dire plus sur ton programme, et surtout ce que tu appelles "l'heure que j'ai réglé dans le programme". Je pense que ton problème est là. Mais en aveugle, c'est pas non plus garanti...
Merci beaucoup pour vos réponses.
J'ai trouvé mon erreur.
Il faut programmer le ds1307 une fois pour toute puis commenter la fonction réglage dans le programme et reprogrammer.
1ere programmation
RTC.stop();
RTC.set(DS1307_SEC,00); //réglage secondes
RTC.set(DS1307_MIN,50); //réglage minutes
RTC.set(DS1307_HR,9); //réglage heures
RTC.set(DS1307_DOW,1); //réglage jour de la semaine
RTC.set(DS1307_DATE,6); //réglage date
RTC.set(DS1307_MTH,12); //réglage mois
RTC.set(DS1307_YR,10); //réglage année
RTC.start();
2eme programmation avec la fonction réglage commentée
/*RTC.stop();
RTC.set(DS1307_SEC,00); //réglage secondes
RTC.set(DS1307_MIN,50); //réglage minutes
RTC.set(DS1307_HR,9); //réglage heures
RTC.set(DS1307_DOW,1); //réglage jour de la semaine
RTC.set(DS1307_DATE,6); //réglage date
RTC.set(DS1307_MTH,12); //réglage mois
RTC.set(DS1307_YR,10); //réglage année
RTC.start();
*/
Maintenant en cas de coupure de courant ou de reboot, l'heure reste en mémoire.
oui c'est ça
il faudra enlever les commentaires pour le reglage de l'heure, programmer pour mettre la bonne heure et de nouveau reprogrammer en ayant pris soin de recommenter le tout
Pour ne pas devoir changer la pile ou/et re-régler l'heure. Y a t-il possibilité de mettre une petite batterie (voir un condensateur) à la place de la pile qui se chargerais lorsqu'il y a du courant et qui se déchargerais dans le cas contraire ?
De cette façon, plus de problème de pile plate...?
Tout ceci en rajoutant l'électronique adéquat pour que cela fonctionne bien sur.
En effet la pile peut durer des années, et si ta carte est alimenté par l'arduino tu peux changer la pile sans problème.
Les piles lithium (pas lipo) sont faites pour ça, par contre elles ne sont pas rechargeable.
Les batteries (nicd, li-ion, etc ...) ont une durée de vie inférieur aux piles lithium, aussi ce n'est pas un avantage d'être rechargeable.
Par contre la précision fait qu'il y a toujours une dérive de l'heure, c'est un peu comme les montres électronique on a tous l'heure précise mais pas la même ...
Aussi il faut prévoir de remette à l'heure régulièrement, tous les mois par exemple si tu veux une précision à la seconde/minute.
Il existe aussi la technique de synchronisation par l'horloge radio en allemagne ou par réseau le protocol ntp.
Tu peux aussi programmé ta synchronisation dans ton application avec ton pc qui lui se synchronise par le réseau grâce à ntp.
Ne pas oublier aussi le changement d'heure hivers/été qui peut aussi changer ...
Je pensais que les modules RTC avaient peu de dérive :/.
Laisse tourner ton pc pendant un mois sans accès à internet et tu verras ...
Dallas semi, étant le spécialiste de ce genre de circuit, je te laisse lire leur excellent conseil.
Leur dernière génération "RTC/TCXO/Crystal Integration " peut atteindre une précision de ±2.0ppm from 0°C to +40°C soit ±1.0 minute each year, généralement on s'en contente.
Mais c'est un véritable problème pour des longs voyages (comme aller sur Mars , il y a surement des solutions plus précise, mais peut être pas à la porté de l'amateur
En effet, il y a "peu de dérive". Ça ne veut pas dire qu'il n'y en a pas, eh eh. Tout dépend de la précision du quartz (de sa fréquence propre) et des conditions d'utilisation (la fréquence doit varier en fonction de la température, je pense). Dans tous les cas, la dérive n'est pas catastrophique.
Au lieu de mettre en commentaire le réglage de l'heure, prévoyez plutôt une fonction dans votre programme qui permet le réglage. Par exemple avec un LCD (c'est presque donné sur eBay) qui affiche l'heure du DS1307 et qui permet de modifier ces valeurs avant de les réenregistrer. C'est pas aussi simple que les commentaires dans le code, mais c'est plus pratique à l'usage...
Sinon, un GPS pour avoir l'heure, ou un décodeur DCF77 ?
Aussi non, y a ça comme composant qui est plus précis non ?
=> ChronoDot_LRG - DS3231
Tout à fait, ce composant est compensé en température et sa dérive est d'environ 1 minute par an (comme indiqué d'ailleurs dans le lien AppNote Maxim donné par teiva)
Il a été placé au coeur du ChronoDot
Ici une démo live d'un DS3231 qui a été synchronisé en 2005
B@tto, j'adore cette horloge, discrète, un peu polluante mais top précision
Donc en précision pour nos budget on tourne à 2ppm soit 1 min/an maxi, comment ils ont fait chez maxim pour ne pas avoir de dérive depuis 5 ans : c'est eux qui font le chip
Plus sérieusement il doit être dans un environnement protégé des fluctuations de température et autres, car le changement de température est l'ennemi de la précision électronique.
Au fait profitez-en Maxim envoi des échantillons gratuits du chip ( 8 au maximum ), peut être Snootlab pourrais faire un beau circuit bleu pour le recevoir
comment ils ont fait chez maxim pour ne pas avoir de dérive depuis 5 ans...
Plus sérieusement il doit être dans un environnement protégé des fluctuations de température...
Il est fort probable qu'un producteur de tel circuit a tout interet a presenter un test avec les meilleurs resultat.
"L'horloge" est probablement dans un environement clos. Avec control permanent des differents parametre exterieur (temperature, pression, humidite,...).
Desole, on sort un peu du sujet, ceci est une reponse a Teiva.
Il y a pas mal d'information sur Wikipedia. Ne pas oublier les links en bas de pages.
J'ai aussi indique des site en Anglais, car il y a parfois plus dinformation, aussi des images et diagrams non present sur Wikipedia francophone.
Les sites suivant ont une partie de leurs services qui est dedie aux signaux horaire.