En los modernos circuitos de sincronización mundial electrónicos son muy importantes. Lo mismo es el caso con Arduino, Arduino tiene un reloj de temporizador incorporado que cuenta con aproximadamente 49 días, pero después de eso se restablece. En segundo lugar, el reloj interno Arduino no es 100% preciso; Siempre hay un cierto porcentaje de tiempo de retraso entre el reloj Arduino y un reloj externo. Entonces, si uno quiere crear un reloj preciso usando Arduino, debemos confiar en un módulo externo conocido como RTC (reloj en tiempo real). Veamos cómo interactuar este módulo RTC con Arduino y crear un reloj digital preciso.
Módulo RTC con Arduino
A veces, trabajar en proyectos de Arduino necesita un reloj de tiempo preciso para mantener a Arduino trabajando y ejecutar instrucciones y comandos especiales en algún tiempo específico. Arduino tiene un reloj incorporado, sin embargo, no podemos confiar en él debido a las siguientes dos razones:
Teniendo en cuenta las razones mencionadas anteriormente, los usuarios prefieren usar un reloj de hardware externo o un módulo RTC. Entonces, un módulo muy barato y súper preciso ampliamente utilizado es DS1307. Veamos cómo conectar este RTC con Arduino.
Configuración del módulo RTC Biblioteca Arduino
Para interactuar Arduino con el módulo RTC, necesitamos instalar algunas bibliotecas necesarias que puedan leer datos del módulo RTC. Siga los pasos para instalar bibliotecas RTC:
Módulo RTC DS1307
El módulo RTC DS1307 se basa en el pequeño chip de reloj DS1307 que también admite el protocolo de comunicación I2C. En la parte posterior del módulo RTC tenemos una batería de celda de litio. Este módulo puede brindar información precisa de segundos, actas, horas, día, fecha, mes y año. También tiene la capacidad del ajuste de tiempo automático durante 31 días al mes junto con el soporte de error de año bisiesto. El reloj puede funcionar en un reloj de 12 horas o las 24 horas.
Algunos aspectos destacados principales de este módulo RTC:
Pinout del módulo RTC
Nombre | Descripción |
SCL | Pin de entrada del reloj para la interfaz de comunicación I2C |
SDA | Salida de entrada de datos para la comunicación serie I2C |
VCC | Rango de alfiler de potencia de 3.3V a 5V |
Gnd | Alfiler |
Ds | Uso para la entrada del sensor de temperatura |
Sqw | Este pasador puede generar cuatro ondas cuadradas con frecuencia de 1Hz, 4kHz, 8 kHz o 32 kHz |
MURCIÉLAGO | Pin para la batería de respaldo si el suministro principal se interrumpe |
Diagrama de circuito
Conecte la placa Arduino con el módulo RTC como se muestra en el diagrama a continuación. Aquí los pines A4 y A5 de Arduino se utilizarán para la comunicación I2C con los módulos RTC, mientras que los pines de 5V y GND le darán la potencia requerida al módulo RTC.
Pin RTC DS 1307 | Alfiler de arduino |
Empuje | 5V |
Gnd | Gnd |
SDA | A4 |
SCL | A5 |
Código
#incluir
#incluir
Rtc_ds3231 real_time_clock;
tiempo de char [32]; /*La matriz de char se define*/
Configuración vacía ()
De serie.comenzar (9600); /*Comienza la comunicación en serie*/
Cable.comenzar(); /*Archivo de biblioteca para comenzar la comunicación*/
reloj en tiempo real.comenzar();
reloj en tiempo real.ajustar (dateTime (f (__ fecha __), f (__ tiempo__)));
/*reloj en tiempo real.Ajustar (DateTime (2022, 09, 26, 1, 58, 0))*/
bucle vacío ()
DateTime ahora = real_time_clock.ahora();
sprintf (tiempo, "%02d:%02d:%02d%02d/%02d/%02d", ahora.hora (), ahora.minuto (), ahora.segundo (), ahora.día (), ahora.mes (), ahora.año());
De serie.imprimir (f ("fecha/hora:")); /*Esto imprimirá fecha y hora*/
De serie.println (tiempo);
retraso (1000); /*Retraso de 1 seg*/
Al comienzo del código primero incluimos cable.H Y Rtclib para comunicación con dispositivos. Luego creamos un objeto RTCLIB con el nombre reloj en tiempo real. A continuación, definimos una matriz de char tiempo de longitud 32, que almacenará información de fecha y hora.
En la función de configuración y bucle utilizamos el siguiente comando para asegurarnos de que se establezca la comunicación I2C entre los módulos Arduino y RTC.
Cable.comenzar y reloj en tiempo real.comenzar asegurará y verificará la conexión RTC.
ajustar() es una función sobrecargada que establece la fecha y la hora.
DateTime (F (__ Date__), F (__ Time__))
Esta función establecerá la fecha y la hora en que se compiló el boceto.
El ahora() Funciones Fecha y hora de retorno, y su valor se almacenará en variable "tiempo".
La próxima hora, minuto, segundo, día, mes, año calculará la fecha exacta e la imprimirá en el monitor en serie con un retraso de 1 segundo.
Hardware
Producción
Serial Monitor comenzará a imprimir la hora y la fecha en que el código se carga en la placa Arduino.
Conclusión
Arduino mismo tiene algunas funciones relacionadas con el tiempo como Millis (), micros (). Sin embargo, estas funciones no dan tiempo exacto; Siempre hay una posibilidad de retraso de milisegundos. Para evitar esto mientras se usa módulos externos Arduino RTC. Estos módulos, como DS1307, nos dan tiempo exacto con una batería de respaldo que puede durar muchos años. Esta guía cubre cómo interactuar estos módulos RTC con una placa Arduino.