Go Down

Topic: RTC DS 3231 se para sin alimentación externa (Read 438 times) previous topic - next topic

EA2HW

Tienes razón voy a probar. Tengo dos de esos módulos chinos con memoria y los voy a "operar". Pero también tengo otros módulos de Adafruit cuya pila CR1220 se conecta directamente a Vbat y tampoco funcionan.

Voy a seguir investigando y si lo resuelvo lo pondré en este hila. Muchas gracias por la ayuda.

surbyte

#16
Sep 14, 2019, 03:30 am Last Edit: Sep 14, 2019, 03:33 am by surbyte
A ver, tal vez la cosa sea un problema de hardware pero no pierdes nada con probar este código.
Yo usaba una librería y con esto solucioné mi problema

las librerías son de pjrc

Ejemplo TimeRTC.ino

Code: [Select]
/*
 * TimeRTC.pde
 * example code illustrating Time library with Real Time Clock.
 *
 */

#include <TimeLib.h>       // https://github.com/PaulStoffregen/Time
#include <Wire.h>
#include <DS1307RTC.h>  // https://github.com/PaulStoffregen/DS1307RTC

void setup()  {
  Serial.begin(9600);
  while (!Serial) ; // wait until Arduino Serial Monitor opens
  setSyncProvider(RTC.get);   // the function to get the time from the RTC
  if(timeStatus()!= timeSet)
     Serial.println("Unable to sync with the RTC");
  else
     Serial.println("RTC has set the system time");     
}

void loop()
{
  if (timeStatus() == timeSet) {
    digitalClockDisplay();
  } else {
    Serial.println("The time has not been set.  Please run the Time");
    Serial.println("TimeRTCSet example, or DS1307RTC SetTime example.");
    Serial.println();
    delay(4000);
  }
  delay(1000);
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
  Serial.println();
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}


Si miras tiene esta instrucción

Code: [Select]
setSyncProvider(RTC.get);   // the function to get the time from the RTC

Donde se llama la hora del RTC

y con
Code: [Select]
setSyncInterval(900);
puedes decirle que lo repita cada tanto tiempo (en este caso cada 900 seg) como para asegurarte que este sincronizado.

EA2HW

#17
Sep 14, 2019, 05:20 pm Last Edit: Sep 14, 2019, 05:23 pm by EA2HW Reason: Me había equivocado con las imágenes
Bueno... ya me voy aclarando algo aunque aún no encuentro una acción-respuesta segura.

En primer lugar estoy utilizando un módulo chino con un esquema de bloques diferente al que se ha presentado en este hilo. Diferente chip y diferente esquema.

He encontrado por fin un esquema de bloques de este módulo antes ya había dibujado las entradas de Vcc y Vba.

En primer lugar, y lo más importante, es que la batería está conectada directamente a la entrada Vbat, y el circuito de carga viene de Vcc con una resistencia de 200 ohmios y un diodo 1N4148. Este diseño se basa en utilizar una batería recargable ILR2032. No sé en qué le puede afectar a la pila CR2032 tener un circuito de carga conectado. En teoría lo importante es que cuando se desconecta la fuente de alimentación externa (pin 14 del chip DS3231) la tensión que suministra la batería debe ser superior a 2,3V y he comprobado siempre que la tensión es de 3,2V al menos. Eso para mí es un misterio.

Ahora los dos módulos funcionan con pila CR2032, pero no siempre, fallan de vez en cuando. Vol a eliminar la resistencia de 200 con la pila CR2032 en uno de los módulos a ver que pasa y el otro le colocaré una batería ILR2032.

surbyte

Post#2 que te respondí?

Quote
Suele ocurir que algunos modulos DS3231 usan una pila LIR2032 en lugar de la CR y la diferencia es que la primera es recargable y la segunda no.
El resto de la respuesta se lee en el post#2, no voy a repetirlo.

EA2HW

Gracias surbyte,

Utilizo la librería RTClib con la que estoy familiarizado aunque no descarto utilizar otras que permita manipular los registros.

No he contestado antes porque esperaba un par de baterías de litio recargables LIR2032 para probar. Han llegado, lo he probado, y sigue sin funcionar.

Tengo bastante experiencia en el montaje de proyectos de electrónica y aunque con mis limitaciones puedo interpretar esquemas y especificaciones de circuitos integrados. El circuito integrado DS3231 sólo necesita una tensión positiva de corriente continua entre los 2,3V y 5,5V (Valor típico 3V) en el pin 14 (Vbat).

Vbat mantiene la el funcionamiento del reloj cuando la tensión de una fuente externa aplicada en Vcc (pin 2) cae por debajo de  la Vpf (power-fail voltage, 2,4V). No importa si en Vbat hay una batería recargable. una pila desechable o incluso una fuente regulada siempre que la tensión sea mayor de 2,3V e inferior de 5,5V.

Estas condiciones se cumplen con los dos tipo de módulos que utilizo, con pila o con batería. Es evidente que estoy haciendo algo mal y ahora puedo descartar que la causa sea el tipo de diseño de la placa del módulo, con cargador o sin cargador. Es más, si desconecto la fuente de alimentación externa, el RTC no se resetea con los valores iniciales sino con la fecha y la hora de la última compilación.

Llevo un par de semanas sin poder resolver el problema y esperaba encontrar alguna ayuda en este foro, en cualquier caso estoy muy agradecido por la atención que me habéis prestado.

Me disculpo por la forma en el que he subido la imágenes, he leído la forma correcta de hacer y, la verdad, es que no tengo la capacidad suficiente para entenderlo.

tauro0221

#20
Sep 17, 2019, 06:48 pm Last Edit: Sep 17, 2019, 06:50 pm by tauro0221
Hi,
Creo que tu has tratado casi todas las librerias pero yo algunas veces trato dos o res para ve si no es problema de libreria. Adjunto un link de una libreria para que la trates para ver si te trabaja.No pierdes nada con probar. En el link tienen programas para todos los tipos de clocks.

http://www.rinkydinkelectronics.com/library.php?id=73

Go Up