9
ABC PROYECTOS ELECTRÓNICOS| ABCelectronica.net 1 | 11 avenida 15-51 zona 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.

Ds 1307 Modulo Arduino

Embed Size (px)

DESCRIPTION

un modulo de medición de tiempo real con ds 1307 muy útil para proyectos donde se requieran mediciones de tiempo real para circuitos electrónicos. Una vez adiestrado en esto el limite es la imaginación

Citation preview

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 1 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 Descripcin Esteesunrelojdetiemporealconbateraderespaldo(RTCRealTimeClock)quepermitealmicrocontroladormantenertiempo;horayfecha,ansielcircuitoelectrnicoenelquese encuentrasequedasinenerga.Esperfectoparallevarregistrodedatos,relojdecapacidad, selladodetiempo,temporizadoresyalarmas,etc.EsteRTCseusaenconjuntoconun microcontrolador. ElDS1307RTCeselmspopular,yfuncionamejorconlosmicrocontroladoresbasadosen5V como el Arduino.Un reloj de tiempo real es bsicamente un reloj que funciona con una batera y mantienelahora,inclusocuandohayuncortedeenerga.ElusodeunRTC,puederealizarun seguimiento de los plazos largos, aunque se reprogramar el microcontrolador al desconectarlo del USB o de un enchufe de alimentacin. ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 2 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 La mayora de los microcontroladores incluyendo el Arduino, tienen incorporado un reloj llamado millisytambincuentancontemporizadoresincorporadosenelcircuitointegradoquepuede realizarunseguimientodelosperodosdetiempomslargoscomominutosodas.Millisslo realizaunseguimientodeltiempotranscurridodesdelaltimavezqueseusArduino.Esto significa que cuando la alimentacin se enciende, el temporizador de milisegundos se ajusta a 0. El Arduinonosabequees"Lunes"o"09deabril",lonicoquepuededecires"Hace14.000 milisegundos desde la ltima vez encend. Si desea ajustar la hora en el Arduino sin tener el modulo DS1307 Tendra que programar en el la fechayhoraparaqueempieceacontardesdeese momento.Perosidebecortalaalimentacin, tendra que reajustar la hora. Al igual que los relojes de alarma muy baratos: cada vez que pierden la alimentacin quedan parpadeando con la hora 12:00. Si bien este tipo de cronometraje bsico est bien para algunos proyectos, algunos proyectos tales como registradores de datos, relojes, etc., tendrn que tener cronometraje consistente que no se restablececuandolabateraArduinomuereosereprograme.Porlotanto,seincluyeunRTC independiente.ElcircuitointegradoRTCseespecializaenmantenerlanocindeltiempo.Se puedecontarconaosbisiestosysabercuntosdasseencuentranenunmes,peronohacerse 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 batera de litio,es por eso que es tan grande. ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 3 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 El RTC que es ms comn y de bajo costo es el DS1307, fcil de soldar, y puede funcionar durante aos en una placa de PCB muy pequea del tamao de hasta una moneda. DS1307 En encapsulado DIP Enconjuntoseutilizaunapiladebotn(bateradelitio3VCR2025oCR2032),elDS1307se activara lo largo de mucho tiempo, incluso cuando el Arduino se apague o se reprograme. Librera de Arduino Cualquiermicrocontroladorde5Vconprotocolodecomunicacini2cintegradopuedeutilizar fcilmente el DS1307 y el ms usado con este es el Arduino.Para la biblioteca RTC, se debe utilizar la librera 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 Para saber cmo instalar una librera visite el siguiente link ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 4 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 Cableado del mdulo a la plataforma Arduino Primerosedebedecolocarlabateraenelportabateradelmdulo,elcualseencuentraenla parte inferior. El modulo posee 6 pines: SQ, DS, SCL, SDA, VCC, GND y BAT. De los cuales para esta prctica, 4 son de vital importancia: SCL, SDA, VCC y GND los cuales corresponden a: VCCyGND:Seutilizan5VparaalimentarelcircuitointegradoRTCcuandosedesea consultar por el tiempo desde el microcontrolador. Si no hay seal de 5V, el chip se va a dormir usando la energa de la batera de litio de 3V para efectuar la copia de seguridad. SCL es el pin de reloj i2c - es necesario para la comunicacin con el RTC SDA es el pin de datos I2C - es necesario para la comunicacin con el RTC En caso de utilizar Arduino UNO o LEONARDO el cableado deber de ser de la siguiente manera: EncasodeArduinoUNOyLEONARDOlospinesdecomunicacinI2Cseencuentrancercadel pulsador de RESET y corresponden a SCL y SDA: ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 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 ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 6 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 Descripcin del cdigo Elcdigoconstadelaescrituraylecturadelhorario,peroparaunamayorcomprensin iniciaremos con la lectura. LECTURA DE HORA //Ejemplo bsico para la lectura de la hora y fecha //del mdulo DS1307 //www.ABCelectronica.net #include //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);//ao 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); } Utilizandolafuncincallnow()estanosregresaelobjetoDateTimeelcualdescribeelao,mes, da,hora,minutoysegundo.DentrodelalibreraseencuentranRTC.year()queproporcionael ao, RTC.hour() que proporciona la hora y as sucesivamente. ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 7 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 Unavezcargadoelcdigo,enelmonitorserial(herramientas>monitorserial)seobservaraalgo como lo siguiente: EstosignificaqueelRTCnoposeelahora,porloqueeltiemposerde0:0:0,debidoaque anteriormentenotenala baterainstalada onofue escritalahora yfecha.Porloqueunavez instalada la batera se recomienda no quitarla para no perder la hora. ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 8 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 ESCRITURA DE HORA Elcdigoacontinuacincorrespondealmismodelecturaperocontreslneasdeprogramacin adicionales: //Ejemplo basico para la lectura de la hora y fecha //del modulo DS1307 //www.ABCelectronica.net #include //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); } ABC PROYECTOS ELECTRNICOS| ABCelectronica.net 9 | 1 1 a v e n i d a 1 5 - 5 1 z o n a 1 La funcin RTC.adjust que se encuentra en la lnea de cdigo siguiente: Permitetomarlafechayhorasegnelequipo(PC)enqueseencuentraconectadoelArduinoy 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 cdigo de escritura, ya que si lo compila y lo carga ms tarde, el reloj se apagar y el tiempo se encontrara atrasado. Unavezcargadoelcdigo,enelmonitorserial(herramientas>monitorserial)seobservaraalgo como lo siguiente: Una vez realizada la escritura de la hora en el RTC, se recomienda cargar nuevamente el codigo deLECTURAuotrocodigoquenoposealastreslineasadicionalesyaquepuedeexistiruna 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 cdigo programacin ya que de lo contrario aparecern smbolos de modo aleatorio. Sobre referencia de la informacin y para conocer ms sobre el cdigo: Adafruit