DS1307 RTC no funciona con la biblioteca rweather

1

Estoy usando el RTC DS1307 junto con arduino y esta biblioteca enlace

Cuando enciendo el chip directamente desde las salidas de 5V y GND de mi arduino UNO, todo funciona bien.

Cuando enciendo el chip con un pin digital con salida configurada en ALTO para la entrada de voltaje y / o un pin digital con salida configurada en BAJA para GND, la biblioteca no puede leer la hora del RTC.

Esta misma configuración exacta funciona con la biblioteca proporcionada por adafruit enlace

Pero me gustaría usar la biblioteca rweather porque proporciona más funciones (como un acceso más fácil a la memoria RAM y una función de conveniencia de alarma), también está mucho mejor escrito y bien documentado.

El siguiente código funciona con ambas bibliotecas, pero solo falla con la biblioteca rweather cuando no se usan 5V y GND directamente. Al comenzar con 5V y luego cambiar a un pin de salida, la biblioteca puede leer la hora, por lo que parece que esto está relacionado con un problema de inicio de algún tipo.

#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 output\n");
    digitalWrite(7, HIGH);
    digitalWrite(6, LOW);
    Serial.print("output Set\n");
    delay(2000);
    Serial.print("delay over\n");

    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() 
{

}
    

2 respuestas

1

Supongo que el pin arduino no puede generar suficiente corriente para el RTC. Intente usar un transistor para controlar la potencia del RTC. Use npn one, conecte el emitor a + 5V del arduino, la base al pin arduino y el colector a + 5V del RTC.

    
respondido por el haya
1

Mi sospecha es que el dispositivo está generando una corriente pico más alta, tal vez al inicio, y esta es la razón de la falla. Hay una manera de probar esto. Simplemente conecte el dispositivo a VCC y enciéndalo. Luego, conéctelo al pin de E / S que proporciona energía, sin permitir que el riel de alimentación se enrede. A ver si eso funciona.

Otra cosa que debes intentar es conectar varias E / S juntas para probar y ver si eso te permite la corriente extra que necesita. Es posible que se necesiten algunos condensadores de desacoplamiento para estabilizar el dispositivo.

[Editar:] Originalmente no había notado que también estaba ejecutando el terreno desde un pin de E / S. Esto no es necesario y, como dije, hará que la referencia básica sea más alta que la del microcontrolador, y quizás cause una señalización digital marginal que cause problemas.

    
respondido por el Gustavo Litovsky

Lea otras preguntas en las etiquetas