Quel module RTC horloge à temps réel me conseillez vous ?

Bonjour,

j'ai fait l'acquisition de plusieurs RTC comme ce modèle

J'avoue cumulé les ennuis : le premier s'est arrêté de "compter" au bout de 3 min, le second faisait rebooter mon arduino et le dernier en date a arrêté de "compter" au bout de quelques heures.

Quels modules RTC utilisez vous pour vos montages ou me conseillerez vous ?

Cordialement

J'utilise le DS1307, très classique.

As tu mesuré la tension de la pile sur ton module?

merci,

qu'entends tu par DS1307 classique ?

Non je n'ai pas mesuré la tension de la pile

Le système s'arrête même connecté via l'USB : l'heure se bloque et ne défile plus

Si tu lis ce qui est marqué sur l'un des deux cachous noir tu verra que c'est ce que as entre les mains :grin: .
Pour info l'autre cachou est une Eeprom I2C -> ça peut servir !

Je plussoie au sujet des piles, changes les et à 99,999 % cela re-fonctionnera. Le circuit fonctionne sans pile mais pas avec une pile morte.
La barque à rame qui livre les produits est tellement lente que les piles ont le temps de se décharger pendant le transport. :grin:

Bonsoir,
j'ai acheté celui-ci (DS3231) qui est correct et fonctionne, le delay pour l'avoir est long aussi, environ une 15-20ene de jours

A+

Simon

Bonjour

DS1307 c'est le code d'une des puces présentes sur ton circuit TinyRTC (c'est marqué dessus).
C'est celle-là qui assure la fonction horloge temps réel.

Pour bien comprendre comment l'utiliser, le mieux est de se plonger dans son datasheet, qui contient en particulier le tableau des adresses mémoires et leur contenu.

Tu dois aussi avoir un minimum de compréhension du fonctionnement des échanges en I2C.

Avant de diagnostiquer que ton horloge ne fonctionne pas, commence par la tester sans pile.

Sur ton circuit, l'autre puce est une eeprom (en principe AT24C32). Les deux vivent leur vie séparément, et sont vues comme deux périphériques distincts depuis ton arduino.
Cette eeprom n'est pas d'une grande utilité car tu en as déjà une sur ton arduino.

Le DS1307 n'est pas super précis (dérive dans le temps).
En fonction de tes besoins, il faudra le remettre à l'heure régulièrement.
Sur un montage communicant, par exemple un montage disposant d'un shield ethernet, cela se fait très bien par une simple requete NTP.

Par ailleurs, le DS1307 embarque une fonctionnalité qui peut être très utile dans certains cas : il met à ta disposition 56 octets de RAM non volatile (enfin, tant que la pile est bonne) qui peuvent être utilisés pour sauvegarder des informations pendant une coupure électrique.

Le DS3231 est nettement plus précis : la dérive annoncée est de moins de deux minutes par an.
Il dispose également d'une fonction alarme : deux horaires peuvent être programmés.
Mais avec un arduino je n'en vois pas trop l'utilité, dans la mesure où l'alarme peut être gérée par l'arduino.
Et il ne dispose pas de RAM non volatile, libre d'utilisation.
Par contre il intègre une sonde de température que l'on peut interroger.
Là encore, une lecture du datasheet te permettra de bien comprendre son fonctionnement et ce que tu peux en tirer.

As tu pu sauver tes trois exemplaires en changeant la pile ?
Parce que c'est bien là la question principale du sujet .

Quant au choix DS1307 DS3221 :

Le DS1307 n'est pas super précis (dérive dans le temps).

Le DS3231 est nettement plus précis : la dérive annoncée est de moins de deux minutes par an.

A-t-on l'explication ?
Parce que la principale cause de dérive que je vois c'est un quartz de mauvaise qualité ou très mal adapté.
Peut être il y a t-il là un début d'explication -> impédances pourries au niveau des acces quartz du 1307 qui rendent l'adaptation impossible ?

bonjour, merci pour toutes vos contributions.

J'ai bien le modèle DS1307.

Je les ai tous testés sans pile.

La dernière en date a très bien fonctionné une journée.

Le lendemain, j'ai rallumé le tout et j'ai observé qu'elle ne s'arrêtait. Je dis qu'elle s'arrête car l'affichage sur l'IDE ne fait plus son loop. Tout semble s'arrêter.

Je suis surpris d'être le seul concerné.

Comme je l'ai dit plus haut, le premier modèle ne "comptait pas" il comptait quelques minutes puis s'arrêtait à chaque boucle il indiquait la même heure.

Le second faisait sauter ma carte.

Le 3e a fonctionné une journée.

Je vais acheter une pile et voir si cela change quelque chose.

Pour les DS1307 y a une petite subtilité piégeuse, qui pourrai expliquer une partie de tes "symptômes" :

Le Bit 7 de l'adresse 0 commande la mise en marche ou l'arrêt de l'horloge. C'est le bit de poids fort du registre des secondes.

A la mise en route du DS1307 (sans pile), l'horloge est arrêtée.
Pour la mettre en route, il faut passer ce bit à zéro.

Ton horloge qui s'arrête au bout d'un moment pourrait aussi être due à la remise à 1 intempestive de ce bit CH dans ton code source, ou bien une brève baisse de tension sur son entrée 5V (raz).

Je réitère mon conseil : lire le datasheet du DS1307

Après, voir aussi si ton bus I2C est correctement cablé.
Par exemple, si tu n'as qu'un tinyRTC connecté à ton bus, il me semble que ce n'est pas la peine d'ajouter les deux résistances de pull up de 4k7 sur SDA et SCL, car elles sont déjà présentes sur le tinyRTC (à vérifier en testant les pin du circuit à l'ohmmetre)

@68tjs : t'es un peu dur, là

  1. le problème de roccesar avec les DS1307

C'est bien ce à quoi je réponds en premier dans mes posts

  1. le comparatif général DS1307 et DS3231

Il m'a semblé intéressant d'élargir le sujet à ce point, pour une simple raison : le topic s'intitule "Quel module RTC me conseillez-vous?"

Au-delà du problème de roccesar, il me semble qu'avec cet intitulé d'autres viendront ici après une recherche, et pourront trouver un intérêt à ces quelques lignes.
Les fonctions annexes offertes par l'un ou l'autre circuit peuvent aussi être des critères de décision.

C'est une petite synthèse que j'aurais bien aimé trouver il y a deux ans quand j'ai commencé à m'intéresser au sujet, plus accessible que les datasheet.

  1. précision DS1307 vs DS3231

Pour le DS1307, c'est vrai que je fais volontiers l'amalgame avec le circuit tinyRTC, car c'est le petit circuit que l'on trouve partout et à pas cher, donc très répandu.
Il aurait en effet été plus précis de parler de la précision globale du tinyRTC, ce qui embarque aussi la qualité des composants posés à côté du DS1307, dont le quartz.

Mon approche n'est pas celle d'un électronicien pur souche, mais plutôt celle d'un intégrateur de petits circuits tout faits. Ce qui me paraît être le cas de la majorité des personnes qui viennent par ici.

Bref chez moi, je peux vous dire que la dérive temporelle d'un circuit de ce type se chiffre en minutes par semaine.

Quant au DS3231, voici tout simplement un extrait des premières lignes du datasheet
"The DS3231 is a low-cost, extremely accurate I2C realtime clock (RTC) with an integrated temperaturecompensated crystal oscillator (TCXO) and crystal."

D'où la présence d'une sonde de température. Le bonus est qu'on peut l'interroger individuellement.

Donc oui je confirme :
Un circuit à base de DS3231 est nettement plus précis qu'un circuit à base de DS1307, au moins pour ceux que l'on trouve communément sur le net

Je ne vois pas en quoi je suis dur.
C'est normal, en prévision de ses futurs achats, de lui indiquer que le DS3231 est meilleur. Si on peut lui dire pourquoi ils sont meilleurs cela ne peut pas faire de mal et au passage à nous aussi..

Mais tel que le sujet partait il allait mettre ses trois DS1307 à la poubelle et acheter des DS3221 sans vraiment savoir pourquoi ses DS1307 ne fonctionnent pas.

Quand même quand 3 exemplaires passent de vie à trépas les uns à la suite des autres, il faut savoir pourquoi parce que si ce n'est pas la pile on ne peut pas exclure que ce soit la conséquence de mauvais traitements invonlontaires bien sûr donc difficiles à identifier.

C'est clair que trois DS1307 qui ne "marchent pas" ne sauraient constituer une bonne justification du changement de modèle de RTC.

Les circuits à base de DS1307, en principe, ça fonctionne bien.

Et avant de prendre l'hypothèse d'un lot défectueux, je pense qu'il convient de vérifier à deux fois le cablage et le code arduino.

merci pour toutes vos contributions que je vais résumé ici pour aider les autres

à la question « Quels modules RTC utilisez vous pour vos montages ou me conseillerez vous ? »

vous conseilleriez :

  • le DS1307
  • le DS3231

Le DS1307 n'est pas super précis car dérive dans le temps et il faudra le remettre à l'heure régulièrement (par exemple via un shield ethernet par une simple requete NTP).
Par contre, il embarque une fonctionnalité qui peut être très utile dans certains cas : il met à ta disposition 56 octets de RAM non volatile (enfin, tant que la pile est bonne) qui peuvent être utilisés pour sauvegarder des informations pendant une coupure électrique.

Le DS3231 est nettement plus précis : la dérive annoncée est de moins de deux minutes par an.
Il dispose également d'une fonction alarme : deux horaires peuvent être programmés mais pas trop l'utilité, dans la mesure où l'alarme peut être gérée par l'arduino. Et il ne dispose pas de RAM non volatile, libre d'utilisation. Par contre il intègre une sonde de température que l'on peut interroger.

La lecture du datasheet permet de bien comprendre le fonctionnement du RTC.

Pour en revenir à mon problème, au niveau câblage, dans le cadre d'un tiny RTC j'ai mis : VCC sur 5 volt, Gnd sur GND, SCL et SDA sur les broches respectives (arduino mega)

Par contre sur ce site http://thepolyscope.com/fr/station-meteo-a-base-darduino/ le câblage de la Tiny est vraiment particulier, je n'ai pas cablé DS :

Reste le pb de code, là c'est plus compliqué...

Ton horloge qui s'arrête au bout d'un moment pourrait aussi être due à la remise à 1 intempestive de ce bit CH dans ton code source, ou bien une brève baisse de tension sur son entrée 5V (raz).

Question de débutant qu'est-ce qui remet à 1 le bit CH car ce n'est pas clair

Par exemple, si tu n'as qu'un tinyRTC connecté à ton bus, il me semble que ce n'est pas la peine d'ajouter les deux résistances de pull up de 4k7 sur SDA et SCL, car elles sont déjà présentes sur le tinyRTC (à vérifier en testant les pin du circuit à l'ohmmetre)

comme dans l'exemple précédent où la Tiny est cablé avec une sonde barométrique BM85.

Toujours est il que j'ai tout rebranché et que la cela fonctionne bien, donc je vais continuer à chercher.

Donc ce devais être une erreur de câblage. On est dans la réalité de la vraie vie.
C'est plus rassurant. Et les modules sont toujours fonctionnels ce qui est encore mieux.