• No se han encontrado resultados

ABC PROYECTOS ELECTRÓNICOS ABCelectronica.net 1. Descripción

N/A
N/A
Protected

Academic year: 2021

Share "ABC PROYECTOS ELECTRÓNICOS ABCelectronica.net 1. Descripción"

Copied!
9
0
0

Texto completo

(1)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1

Descripción

Este es un reloj de tiempo real con batería de respaldo (RTC – Real Time Clock) que permite al microcontrolador mantener tiempo; hora y fecha, aún si el circuito electrónico en el que se encuentra se queda sin energía. Es perfecto para llevar registro de datos, reloj de capacidad, sellado de tiempo, temporizadores y alarmas, etc. Este RTC se usa en conjunto con un microcontrolador.

El DS1307 RTC es el más popular, y funciona mejor con los microcontroladores basados en 5V como el Arduino. Un reloj de tiempo real es básicamente un reloj que funciona con una batería y mantiene la hora, incluso cuando hay un corte de energía. El uso de un RTC, puede realizar un seguimiento de los plazos largos, aunque se reprogramar el microcontrolador al desconectarlo del USB o de un enchufe de alimentación.

(2)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 La mayoría de los microcontroladores incluyendo el Arduino, tienen incorporado un reloj llamado

millis y también cuentan con temporizadores incorporados en el circuito integrado que puede realizar un seguimiento de los períodos de tiempo más largos como minutos o días. Millis sólo realiza un seguimiento del tiempo transcurrido desde la última vez que se usó Arduino. Esto significa que cuando la alimentación se enciende, el temporizador de milisegundos se ajusta a 0. El Arduino no sabe que es "Lunes" o "09 de abril", lo único que puede decir es "Hace 14.000 milisegundos desde la última vez encendí”.

Si desea ajustar la hora en el Arduino sin tener el modulo DS1307 Tendría que programar en el la fecha y hora para que empiece a contar desde ese momento. Pero si debe corta la alimentación, tendría que reajustar la hora. Al igual que los relojes de alarma muy baratos: cada vez que pierden la alimentación quedan parpadeando con la hora 12:00.

Si bien este tipo de cronometraje básico está bien para algunos proyectos, algunos proyectos tales como registradores de datos, relojes, etc., tendrán que tener cronometraje consistente que no se restablece cuando la batería Arduino muere o se reprograme. Por lo tanto, se incluye un RTC independiente. El circuito integrado RTC se especializa en mantener la noción del tiempo. Se puede contar con años bisiestos y saber cuántos días se encuentran en un mes, pero no hacerse cargo de horario de verano (porque cambia de un lugar a otro, y de un RTC a otro).

La imagen de arriba muestra una placa base con un reloj de tiempo real y dentro hay una batería de litio, es por eso que es tan grande.

(3)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 El RTC que es más común y de bajo costo es el DS1307, fácil de soldar, y puede funcionar durante años en una placa de PCB muy pequeña del tamaño de hasta una moneda.

DS1307 En encapsulado DIP

En conjunto se utiliza una pila de botón (batería de litio 3V CR2025 o CR2032), el DS1307 se activara lo largo de mucho tiempo, incluso cuando el Arduino se apague o se reprograme.

Librería de Arduino

Cualquier microcontrolador de 5V con protocolo de comunicación i2c integrado puede utilizar fácilmente el DS1307 y el más usado con este es el Arduino. Para la biblioteca RTC, se debe utilizar la librería RTClib de JeeLab, permite obtener y establecer el tiempo de un DS1307 (originalmente escrito por JeeLab). Lo pueden descargar del siguiente link:

https://github.com/adafruit/RTClib

(4)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1

Cableado del módulo a la plataforma Arduino

Primero se debe de colocar la batería en el porta batería del módulo, el cual se encuentra en la parte inferior. El modulo posee 6 pines: SQ, DS, SCL, SDA, VCC, GND y BAT. De los cuales para esta práctica, 4 son de vital importancia: SCL, SDA, VCC y GND los cuales corresponden a:

• VCC y GND: Se utilizan 5V para alimentar el circuito integrado RTC cuando se desea “consultar” por el tiempo desde el microcontrolador. Si no hay señal de 5V, el chip se va a “dormir” usando la energía de la batería de litio de 3V para efectuar la copia de seguridad. • SCL es el pin de reloj i2c - es necesario para la comunicación con el RTC

• SDA es el pin de datos I2C - es necesario para la comunicación con el RTC

En caso de utilizar Arduino UNO o LEONARDO el cableado deberá de ser de la siguiente manera:

En caso de Arduino UNO y LEONARDO los pines de comunicación I2C se encuentran cerca del pulsador de RESET y corresponden a SCL y SDA:

(5)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 En caso de utilizar Arduino MEGA 2560, los pines 20 y 21 corresponden a SDA y SCL

(6)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1

Descripción del código

El código consta de la escritura y lectura del horario, pero para una mayor comprensión iniciaremos con la lectura.

LECTURA DE HORA

//Ejemplo básico para la lectura de la hora y fecha //del módulo DS1307

//www.ABCelectronica.net

#include <Wire.h> //llamado de libreria

#include "RTClib.h" //llamado de libreria DS1307 RTC_DS1307 RTC; void setup() { Serial.begin(57600); Serial.println("Inicio de lectura"); Wire.begin(); RTC.begin(); } void loop() {

DateTime now = RTC.now();// funcion que regresa tiempo Serial.print(now.year(), DEC);//año Serial.print('/'); Serial.print(now.month(), DEC);//mes Serial.print('/'); Serial.print(now.day(), DEC);//dia Serial.print(' '); Serial.print(now.hour(), DEC);//hora Serial.print(':'); Serial.print(now.minute(), DEC);//minuto Serial.print(':'); Serial.print(now.second(), DEC);//segundo Serial.println(); delay(950); }

Utilizando la función callnow() esta nos regresa el objeto DateTime el cual describe el año, mes, día, hora, minuto y segundo. Dentro de la librería se encuentran RTC.year() que proporciona el año, RTC.hour() que proporciona la hora y así sucesivamente.

(7)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 Una vez cargado el código, en el monitor serial (herramientas>monitor serial) se observara algo como lo siguiente:

Esto significa que el RTC no posee la hora, por lo que el tiempo será de 0:0:0, debido a que anteriormente no tenía la batería instalada o no fue “escrita” la hora y fecha. Por lo que una vez instalada la batería se recomienda no quitarla para no “perder” la hora.

(8)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1

ESCRITURA DE HORA

El código a continuación corresponde al mismo de lectura pero con tres líneas de programación adicionales:

//Ejemplo basico para la lectura de la hora y fecha //del modulo DS1307

//www.ABCelectronica.net

#include <Wire.h> //llamado de libreria

#include "RTClib.h" //llamado de libreria DS1307 RTC_DS1307 RTC; void setup () { Serial.begin(57600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) {

Serial.println("RTC is NOT running!");

// La siguiente linea de codigo permite escritura de la hora y fecha de la PC

RTC.adjust(DateTime(__DATE__, __TIME__)); }

}

void loop () {

DateTime now = RTC.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); delay(950); }

(9)

| 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 La función RTC.adjust que se encuentra en la línea de código siguiente:

Permite tomar la fecha y hora según el equipo (PC) en que se encuentra conectado el Arduino y permite programar el RTC. Por lo que se debe tomar en cuenta que la PC tenga la hora correcta. OJO: Una vez abierto el software deberá de cargar inmediatamente el código de escritura, ya que si lo compila y lo carga más tarde, el reloj se apagará y el tiempo se encontrara atrasado.

Una vez cargado el código, en el monitor serial (herramientas>monitor serial) se observara algo como lo siguiente:

Una vez realizada la escritura de la hora en el RTC, se recomienda cargar nuevamente el codigo de LECTURA u otro codigo que no posea las tres lineas adicionales ya que puede existir una sobreescritura cada vez que se conecte el arduino a la PC.

Tomar en cuenta que los baudios del monitor serial deben ser iguales al de código programación ya que de lo contrario aparecerán símbolos de modo aleatorio.

Referencias

Documento similar

Es importante mencionar, que en los últimos 5 años, China ha venido mostrando un gran avance en la industria textil y de la confección, ingresando en mercados como Europa,

Las lecturas de francobordo/calado se toman para establecer la posición de la flotación y determinar a su vez el desplazamiento del buque en el momento de realizar la prueba

Un método de estudio aparte de ser una herramienta muy útil al momento de estudiar también nos ayuda a agilizar nuestra mente y tener una buena memoria para futuro?. Palabras

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

En cada antecedente debe considerarse como mínimo: Autor, Nombre de la Investigación, año de la investigación, objetivo, metodología de la investigación,

El quincenario de los frailes de Filipinas, condena para el Archipiélago los propósitos de nivelación jurídica que para todo territorio español, peninsular o ultramarino, se

Aunque en relación con su volumen de capital al mo- mento de su fundación (1 O millones de pesos) ocupara el segundo lugar entre las empresas manufactureras (el pri-