[RESOLU] Incompatibilité entre le shield Ethernet et une RTC DS1307

Bonjour,

Je travaille sur un projet pour lequel j'ai besoin d'enregistrer des données horodatées (températures) sur une carte SD.

Je voudrais utiliser pour cela une Arduino Uno, une RTC DS1307 de Sparkfun et le shield Ethernet R3 d'Arduino qui est doté d'un lecteur de carte SD.

J'en suis au début de mon projet et j'ai commencé par tester les fonctions élémentaires, notamment en ce qui concerne l'heure.

Avec la carte Uno seule, j'arrive à régler la DS1307 (avec SDA et SCL reliés à A4 et A5) sans problème avec le code suivant :

#include <Wire.h>
#include "RTClib.h" //bibliothèque Adafruit

RTC_DS1307 RTC;

void setup()
{
Serial.begin(9600);
Wire.begin();
RTC.begin();

RTC.adjust(DateTime(DATE, TIME));

DateTime now = RTC.now();

String heure = "Il est " + String(now.hour(),DEC) + ':' + String(now.minute(),DEC) + ':' + String(now.second(),DEC);
Serial.println(heure);

}

void loop()
{
DateTime now = RTC.now();

String heure = "Il est " + String(now.hour(),DEC) + ':' + String(now.minute(),DEC) + ':' + String(now.second(),DEC);
Serial.println(heure);

delay(15000);
}

L'horloge se met à l'heure de la compilation puis tourne toute seule.

Par contre, quand je monte le shield sur la carte, la DS1307 étant donc cette fois reliée au shield, toujours sur les entrées A4 et A5, j'obtiens ce résultat sur la console : 165:165:85 (tant à la mise à l'heure qu'ensuite), ce qui est un peu bizarre pour une heure !!

Le fait de compléter le code avec les bibliothèques SD et SPI ne change rien.

J'ai cherché sur le forum et trouvé des post évoquant des problèmes similaires, mais je n'ai pas identifié de solution (ou pas compris les pistes suggérées, étant plutôt débutant...).

Je pense qu'il n'y a pas de problème matériel avec le shield car j'ai pu utiliser tant les fonctions réseau que le lecteur SD.

Merci d'avance pour votre aide !

Bonjour et bienvenue,

Apparemment ce serait dû à une tension insuffisante.

Quand la RTC fonctionne sur batterie, peut-être que la tension de la batterie ne suffit pas à faire des opérations de lecture de sa mémoire.

Comment sont alimentés ton arduino et ta RTC ?

Merci guix de ton message de bienvenue !

La RTC est dotée d'une pile bouton, et reliée au +5v de l'Arduino.

L'Arduino (avec ou sans shield) est alimentée via le port USB : je n'en suis qu'au début de mon projet et je n'est pas encore planché sur une alim indépendante !

pepe:
Bonjour

Le branchement miniminum de l'horloge se résume aux signaux I2C (SCL et SDA) et à l'alimentation (GND et 5V).

bonjour
oui , à un petit bemol pres
il faut soit une bat "en forme"
ou si pas de batterie de sauvegarde tirer le pin Vbat à GND
sinon le ds1307 est inexploitable

Bonsoir,

J'ai regardé les tensions d'alimentation dans les deux cas.

En faisant cette manip, j'ai fait tourner le montage avec un code qui lit juste la RTC, sans monter la RTC sur la carte Uno : j'ai obtenu sur la console le même affichage qu'avec le montage carte + shield + RTC, c'est à dire 165:165:85. Cela voudrait dire que le shield se comporte comme si la RTC n'était pas dessus.

Venons en aux tensions mesurées :

Avec l'Arduino Uno seule, je mesure le 5V à seulement 4,6 V (j'avais déjà remarqué que le 5V était faux, ce qui fausse les mesures de température avec un capteur de type TMP36 : du coup je l'ai utilisé avec le 3,3 V qui est bcp plus juste).

Une fois le shield monté sur la Uno, je ne mesure plus la borne 5V du shield qu'à 4,2 V.

Vous pensez que cet écart suffirait à expliquer le problème ?

Avec l'Arduino Uno seule, je mesure le 5V à seulement 4,6 V

Une fois le shield monté sur la Uno, je ne mesure plus la borne 5V du shield qu'à 4,2 V.

Il va falloir être plus précis.
Quelle est l'alim ?
Quelle est sa tension "normale" marquée sur l'étiquette ?
Qu'elle est sa tension à vide ?
On connait la tension avec la carte UNO branchée (4,6V) mais la carte UNO consomme combien au total ?
Une consommation s'exprime en mA.
Qu'elle est la consommation du shield ?

Bonsoir 68 tjs,

Ma carte est alimentée par le câble USB, donc en 5v je pense.

Entre les bornes +5V et Gnd de la carte uno seule (rien de connecté à aucune borne), je mesure 4,6 V.

Si j'enfiche le shield Ethernet dessus, toujours sans rien connecter, cette tension mesurée entre les deux mêmes bornes déportées sur le shield est de 4,2 V.

Ces tensions sont les mêmes que celles mesurées avec le module RTC connecté.

Je ne suis pas équipé là ce soir pour mesurer des intensités, mais en plus, je ne vois pas bien comment faire pour mesurer l'intensité au niveau du câble USB (il me semble que c'est là qu'il faut regarder pour voir la consommation totale de la carte). On peut trouver ça qq part sur le PC ?

Entre les bornes +5V et Gnd de la carte uno seule (rien de connecté à aucune borne), je mesure 4,6 V.

Donc tu es alimenté par l'USB.
C'est vrai que ce n'est pas facile de mesurer la tension à vide , c'est à dire directement sur l'extrémité du cordon, mais ce serait bien de le faire --> attention au court-circuits accidentels.

Le 5V USB est dans la norme s'il fait 5V +/- 5% soit entre 4.76 V et 5,25 V.
Une tension qui s'écroule quand elle chargée c'est un signe :

  • soit que la charge consomme trop.
  • soit que l'alim est en "très mauvaise santé".

Bonsoir à tous,

J'ai changé le port de branchement de mon câble USB : j'étais branché sur un concentrateur USB et je me suis mis directement sur un port du PC.

Les tensions sont bien meilleures comme cela : 5V avec l'Arduino seule et 4,8 V avec le shield monté.

Du coup le module RTC fonctionne dans tous les cas et mon problème est résolu !!

Merci beaucoup pour votre aide !