DS1307 RTC ne fonctionne pas avec la bibliothèque rweather

Willem D’Haeseleer

DS1307 RTC ne fonctionne pas avec la bibliothèque rweather


J’utilise le DS1307 RTC avec Arduino et cette bibliothèque
http://rweather.github.com/arduinolibs/classDS1307RTC.html

Lorsque j’alimente la puce directement à partir des sorties 5V et GND de mon arduino UNO, tout fonctionne bien.

Lorsque j’alimente la puce en utilisant une broche numérique avec une sortie réglée sur HIGH pour l’entrée de tension et / ou une broche numérique avec une sortie réglée sur LOW pour GND, la bibliothèque ne peut pas lire l’heure du RTC.

Cette même configuration exacte fonctionne avec la bibliothèque fournie par adafruit
http://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code

Mais je voudrais utiliser la bibliothèque rweather car elle fournit plus de fonctionnalités (comme un accès plus facile à la RAM et une fonction de confort d’alarme), elle est également bien mieux écrite et bien documentée.

Le code suivant fonctionne avec les deux bibliothèques mais échoue uniquement avec la bibliothèque rweather lorsque vous n’utilisez pas 5V et GND directement. Lorsque vous démarrez avec 5 V, puis passez à une broche de sortie, la bibliothèque peut lire l’heure, il semble donc que cela soit lié à un problème de démarrage.

#include <Wire.h>
#include <RTC.h>
#include <SoftI2C.h>
#include <DS1307RTC.h>

void setup() 
{
    pinMode(7, OUTPUT);
    pinMode(6, OUTPUT);
    // provide power for the RTC module
    Serial.begin(9600);
    Serial.print("Setting outputn");
    digitalWrite(7, HIGH);
    digitalWrite(6, LOW);
    Serial.print("output Setn");
    delay(2000);
    Serial.print("delay overn");

    SoftI2C bus(5, 4);
    DS1307RTC controller(bus, 3);

    Serial.print(controller.isRealTime() ? "controller is realtime" : "controller is simulating");
    Serial.println();

    RTCTime theTime;
    controller.readTime(&theTime);

    Serial.print("startup time");
    Serial.println();
    Serial.print(theTime.hour);
    Serial.print(":");
    Serial.print(theTime.minute);
    Serial.print(":");
    Serial.print(theTime.second);
}

void loop() 
{

}
Passant

Réglez-vous les bonnes broches? Si vous branchez la carte directement dans les en-têtes Arduino, vous avez besoin des broches 3 et 2, pas 6 et 7.If you set analog pin 3 (digital 17) to an OUTPUT and HIGH and analog pin 2 (digital 16) to an OUTPUT and LOW you can power the RTC directly from the pins!

Gustavo Litovsky

@Passerby: Mais « Low » n’est pas la référence 0V dans ce cas. La masse de l’appareil peut être supérieure ou égale à 0,3 V à la masse de la carte, ce qui peut entraîner des problèmes.

Willem D’Haeseleer

@GustavoLitovsky c’est pourquoi j’ai également testé la configuration avec le GND du RTC connecté directement au GND de l’arduino, la bibliothèque ne fonctionne que lors de la connexion de RTC 5V et GND à l’arduino 5V et GND directement

Gustavo Litovsky

@ WillemD’haeseleer: Essayez plusieurs broches d’E / S ensemble pour plus de courant, et peut-être mon test que j’ai décrit ci-dessous pour voir s’il s’agit simplement d’un problème de démarrage. Avez-vous ajouté des condensateurs de découplage?

Passant

@ WillemD’haeseleer sur la base des modifications, votre question n’est pas pourquoi cela ne fonctionne pas du tout, mais « Pourquoi cela fonctionne-t-il avec la bibliothèque A, et non la bibliothèque B », correct? Avec la bibliothèque d’Ada, vous pouvez utiliser les sorties numériques pour alimenter la rtc, mais pas avec celle de Rweather? Vous devez modifier la question pour refléter cela plus audacieusement.

Réponses


 haya

Je suppose que la broche Arduino ne peut pas fournir suffisamment de courant pour le RTC. Essayez d’utiliser un transistor pour commander l’alimentation du RTC. Utilisez npn one, connectez l’émetteur à + 5V de l’arduino, la base à la broche arduino et le collecteur à + 5V du RTC.

Passant

Le RTC utilise un courant très très faible et peut être alimenté par les broches numériques, à moins qu’elles ne soient très sollicitées par d’autres broches. Vous pouvez même alimenter certains écrans LCD (Nokia par exemple) directement à partir d’un microcontrôleur. Le RTC n’a besoin que de 1,5 mA, pendant les lectures actives, moins en gardant simplement le temps.

Willem D’Haeseleer

@Passerby j’ai édité ma question avec plus d’informations


 Gustavo Litovsky

Je soupçonne que l’appareil tire un courant de crête plus élevé, peut-être au démarrage, et c’est la raison de l’échec. Il existe un moyen de tester cela. Connectez simplement l’appareil à VCC et démarrez-le. Ensuite, connectez-le à la broche d’E / S fournissant de l’énergie, sans laisser le rail d’alimentation cratérer. Voyez si cela fonctionne.

Une autre chose que vous devriez essayer est de connecter plusieurs E / S ensemble pour essayer de voir si cela peut vous permettre le courant supplémentaire dont il a besoin. Certains condensateurs de découplage peuvent être nécessaires pour stabiliser l’appareil.

[Edit:] Je n’avais pas remarqué à l’origine que vous dirigiez également le sol à partir d’une broche d’E / S. Ce n’est pas nécessaire et comme je l’ai dit, cela rendra la référence au sol plus élevée que celle du microcontrôleur, et provoquera peut-être une signalisation numérique marginale qui causera des problèmes.

 

#la, #pas, avec, bibliothèque, DS1307, fonctionne, ne, RTC, rweather

 

wiki France

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *