# Reloj despertador con pic y cristal de 32.768khz



## lucassiglo21 (Jul 26, 2009)

bueno, hice otro reloj, este con un PIC16F628A (aunque a meta no le guste este micro)
como base de tiempo usa un cristal de 32.768Khz conectado a RB6/RB7 que acciona al timer1.
tiene despertador con un buzzer con oscilador de 3v que conseguí, que suena realmente fuerte.

tiene varias configuraciones: 12/24Hs, Alarma y si queres que esté encendido siempre o cuando apretas el boton.


el boton rojo es para que te prenda los displays si está en ese modo, y para apagar el despertador, que no da para estar buscando un micropulsador con los ojos cerrados cuando recien te despertas  .

el brillo de los displays es variable, usé un lm337 igual que con el otro reloj.

si alguien pretende encarar la construccion de esto, recomiendo leer el manual que escribi y adjunto dentro del zip.

saludos


----------



## mabauti (Jul 26, 2009)

te quedo muy vistoso. Buen trabajo, buen aporte lucas!


----------



## lucassiglo21 (Jul 26, 2009)

nueva version del soft!, en esta el despertador hace bipbip...bipbip...bipbip... en vez del bip..bip...bip... de antes.

saludos


----------



## lucassiglo21 (Jul 27, 2009)

otra version, esta no prende los ceros a la izqueirda de las horas


----------



## manuel:_zazu (Feb 6, 2010)

podrias poner un esquema del circuito por favor...


----------



## manuel:_zazu (Feb 16, 2010)

podrias decirme al menos a cuanto de frecuencia funciona tu buzzer, yo tngo dos parecidos y no  los puedo hacer funcionar, todavia falta para q inicie la u y no tngo a la mano un generador de señales...


----------



## Meta (Feb 16, 2010)

Está muy bueno el proyecto. ¿has usado el reloj calendario DS1307?


----------



## carlos rs (Jul 28, 2010)

Hola  ojala alguien me pudiera ayudar, lo que pasa es que quiero construir un reloj pero que suene cada hora por 5 minutos, a través de un pic16f84a ya he estado buscando distintas formas de programarlo pero no puedo necesito ayuda.


----------



## rascueso (Jul 29, 2010)

muy lindo lucassiglo21. ahora una pregunata el pcb con que programa esta echo?


----------



## ldpe04 (Sep 15, 2010)

grax, voy a probar.

Salu2


----------



## Tavo (Nov 1, 2010)

Ni tengo ni la más mínima idea sobre microprocesadores, pero este proyecto es lo que estaba buscando. Creo que puedo conseguir fácil el 16F628A. Es la versión "actual" del 16F84A, creo.

Este proyecto está EXCELENTE, muchas gracias por el aporte Lucas!! 
Voy a tener que incursionar en esto de microprocesadores, no tengo ni la más p*ta idea en esto, pero bueno, todo se aprende.

Muchas gracias Lucas.
Saludos!


----------



## g.corallo (Nov 19, 2010)

Tavo dijo:


> Ni tengo ni la más mínima idea sobre microprocesadores, pero este proyecto es lo que estaba buscando. Creo que puedo conseguir fácil el 16F628A. Es la versión "actual" del 16F84A, creo.
> 
> Este proyecto está EXCELENTE, muchas gracias por el aporte Lucas!!
> Voy a tener que incursionar en esto de microprocesadores, no tengo ni la más p*ta idea en esto, pero bueno, todo se aprende.
> ...



asi es aunque hay una version mas nueva del 16f84 que se le pone la letra A al final pero el 16f628A es mucho mejor creoq ue le agregaron unos comparadores y son mirocontroladores por que todo lo necesario para que ande esta adentro a diferencia de un mricoprocesador que necesita de elementos externos para funcionar

saludos.


----------



## Meta (Nov 19, 2010)

Hola:

El 16F88 aún mejor y tienen convertidores analógico digital entre otras mejoras.

Puedes leer a partir de la página 71 de este manual sobre el posible sustituto del 16F84A.

http://electronica-pic.blogspot.com/2010/02/mplab-inicio-rapido.html

Saludo.


----------



## g.corallo (Nov 19, 2010)

meta sabia que habia todabia algo mejor que el 16f628A por que siempre los van mejorando


----------



## Meta (Nov 19, 2010)

Hay mejores todavía que le 16F88. Este PIC16F88 está bien para practicar convertidores analógicos digitales y usarlo al final. Para aprender el 16F84A. A la hora de usarlo como proyecto final depende de las necesidades. Si el 16F84A se te queda corto, el 16F88 es mucho y más caro, es preferible usar uno que se adapte como a tus necesidades como el 16F628A.


----------



## Tavo (Nov 20, 2010)

Que tal Meta... Una preguntita:


lucassiglo21 dijo:


> bueno, hice otro reloj, este con un PIC16F628A (aunque a meta no le guste este micro)


¿Por qué no te gusta este micro?
Es solo cuestión de gustos o le viste alguna deficiencia...?

Saludos.
PS: El *PIC16F628A* lo estuve por conseguir, pero comprando varias cosas me quedé sin $ y no llegué. Lo dejo para la próxima. (compro los componentes en otra ciudad, a 130Km de distancia; no está para ir y venir todos los días.. jeje)


----------



## Meta (Nov 20, 2010)

Tavo dijo:


> Que tal Meta... Una preguntita:
> 
> ¿Por qué no te gusta este micro?
> Es solo cuestión de gustos o le viste alguna deficiencia...?
> ...



Hola Tavo:

Para aprender ese tipo de PIC prefiero el PIC16F88 porque tiene entradas convertidores analógicas  digital ADC y cada vez se usa más. Empezaré hacer pequeños docuemtnos con ejemplos reales sobre el 16F88.







Lee este manual a partir de la página 71 y te hará ver otro punto de vista lo aceptes o no lo aceptes, es cuestión de gustos, de encontrar sólo un PIC determinado, etc...

http://electronica-pic.blogspot.com/2010/02/mplab-inicio-rapido.html


----------



## Tavo (Nov 20, 2010)

Muchas gracias por tu respuesta Meta!! 

Si, veo claramente en ese cuadro comparativo las características de cada micro; el más simple es el 16F84(A), que vale decir que sirve para muchas cosas... Luego el 16F628(A) que agrega algunas cositas más, y por último el de tu preferencia, el 16F88(A); se puede ver claramente que tiene mayores ventajas en cuanto a disponibilidad de "usos" que los otros...

Voy a ver a que precio está el 16F88.

Y una última pregunta (espero no molestar):
Me tiene bastante intrigado eso de las "A" al final de los micros; la vez pasada ya estuve leyendo algo sobre eso, y entendí que los que llevan la "A", son más recientes y actualizados. Pero todavía no me cierra mucho la idea... No entiendo algunas cosas...

Saludos Meta!!


----------



## ByAxel (Nov 20, 2010)

bien pero mmm el PIC16F628A y familia al tener el módulo CCP si tiene PWM (Capture-Comparator-Pulse Widch Modulation), el cuadro se equivoco/falto en eso.

saludos.


----------



## Meta (Nov 20, 2010)

Hola:



El 16F84A-04 cuesta como el PIC16F88 o similar
El 16F84A-20 cuesta más caro que el 16F84A-04, 16F628A y el 16F88.
El 16F628A cuesta más barato que el 16F88.

La A significa mejoras de otros PIC del pasado. Lo explica en el manual de arriba.

En cuanto a PWM, lo hace hasta el 16F84A codeando todo.

El 16F628A en su hojas de datos no tiene PWM o es que estoy ciego.
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010210

Te compras un PIC o otro depende de las nececisades y que es lo que vas a usar.

Saludo.


----------



## ByAxel (Nov 20, 2010)

Meta dijo:


> Hola:
> En cuanto a PWM, lo hace hasta el 16F84A codeando todo.
> 
> El 16F628A en su hojas de datos no tiene PWM o es que estoy ciego.
> http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010210


Me refiero a un PWM por hardware donde el módulo CCP hace tres trabajos y uno de ellos es generar PWM "*C*apture/*C*ompare/*P*WM Peripherals"; página 58 (60 del visor pdf).

Saludos


----------



## Meta (Nov 20, 2010)

Es verdad:

He cometido un error. 
http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf

Menos mal que con cualquier PIC a código se puede ahcer PWM.

Hay que corregir el cuadro. Si ven más errores me avisan.

Gracias por la aclaración.


----------



## neoguzman (Nov 30, 2010)

esta buenisimo el proyecto...felicidades, solo me queda una duda y es que al ver el esquematico hay una seccion que no me queda bien claro a donde va conectada y te pediria me lo aclares porfavor, ya que tengo ya armado gran parte del circuito y pues quiero evitar dañar mi PIC, subo una imagen en la que encierro en un circulo la parte que me esta causando problemas.

gracias y saludos 

edito:

y otra pregunta mas, no  consegui un cristal como el que tu especificas y le coloque uno de 20 efecta mucho esta variacion o solo es cuestion de precicion...?? y el voltaje de alimentacion cual es...???


----------



## LU5JCL (Abr 15, 2011)

LucasSiglo21, estoy por ponerme manos a la obra a armar tu reloj despertador (llego tarde a la facultad siempre sino jaja), mi pregunta es si tendrias el diseño de la placa con los componentes en el lugar donde vas(nose si me entenderas...), osea para saber en que lugar va cada cosa y de que valor.

Quedo a la espera, ojala me puedas dar una mano


Gracias


----------



## LU5JCL (Abr 15, 2011)

perdon LucasSiglo21, ya lo pude solucionar a lo que te pedi en el comentario anterior.

Anda que es un espectaculo el relojito, muchas gracias por el aporte.

suerte


----------



## lucassiglo21 (Sep 9, 2011)

realmente no sabía que alguien habia preguntado cosas del reloj..el foro no me avisó. y ahora que LU5JCL me mando un MP me entero que estaban preguntando cosas.

bueno..
1- el cristal es de 32.768khz. es muy importante. es la base de tiempo. (suele haber en mothers viejas, sino en las electrónicas suele haber)

2- IMPORTANTE, hice un par de versiones nuevas.
este es similar, pero con batería de backup y una placa mejor: 
http://elcoyotequesuelda.blogspot.com/2010/02/reloj-v13-ahora-no-pierde-la-hora.html
y este lo hice hace poco, es un concepto diferente. permite alarmas diferentes cada día de la semana:
http://elcoyotequesuelda.blogspot.com/2011/04/despertador-v2-mucho-mucho-mejor.html

el codigo no esta perfecto del todo todavia (la alarma se escucha rarito, pero anda bien). pero si lo quieren avisenme


----------



## joshuerm (Sep 9, 2011)

felicitaciones esta muy bien, ya que es tu proyecto y con respeto te digo que si quieres compartirlo, te agradeceria mucho, no soy muy bueno en programacion pero con una buena guia podre hacer proyectos tan buenos como este

saludos

jose


----------



## Meta (Sep 10, 2011)

Buen trabajo. 

Y eso que me fijaba por aquí.
http://www.pic16f84a.org/index.php?...w=article&id=66&Itemid=87#Proteus_Capitulo_24

PD: Le interesa enlazarnos entre nosotros.


Mi Blog es:


----------



## velociraptor (Sep 17, 2011)

lucassiglo21

Por favor, estoy desarrollando un proyecto similar pero en C, es decir soy experto en C no en Basic, sin embargo mi preguna no va por ahi, mi pregunta va por la exactitud, ya que he conseguido hacerlo con mi 16f88 pero veo que mi tiempo se adelanta, en promedio 100milisegundos cada minuto, aproximadamente y yo necesito medir el tiempi exacto, lo mas exacto posible y en milisegundos. finalmente mi pregunta:

TU RELOJ SE ATRASA O SE ADELANTA? QUE TAN EXACTO ES?
Lo has probado con un cronometro de tu movil o de algun otro?, que datos de retraso has obtenido,.. por favor responder es de suma importancia, nose si alguien ya le hizo esta pregunta a Lucas, sin embargo esta muy bonito tu resultado final en acrilico, yo postearte la foto de mi proyecto.
Saludos desde PERU


----------



## killer1 (Sep 20, 2011)

se puede programar con el ic-prog y el programador jdm


----------



## cristian_elect (Sep 21, 2011)

Hoal velociraptor dices que ya sabes de C de pic pero te falta leer la hoja de datos del pic si te fijas del timer1 se configura para cristal externo de 32.768khz(RTC) con ese valor tienes un reloj de buena presicion.


----------



## Meta (Sep 21, 2011)

¿No será que son 32.768 Hz en vez de KHz?


----------



## cristian_elect (Sep 21, 2011)

?????
Estas seguro....


----------



## Meta (Sep 22, 2011)

En el libro http://www.pic16f84a.org/index.php?...w=article&id=66&Itemid=87#Proteus_Capitulo_24 te explica claramente que es así. La gente se confunde mucho.


----------



## velociraptor (Sep 30, 2011)

cristian_elect, asi es, mi pregunta es que si con el valor de 32 768 Hz (algunos lo referencian como 32khz), puedo medir milisegundos? o solo segundos, segun lo que necesito, mi objetivo es medir el tiempo en mili o micro segundos, segun lo que me demore detectar un evento,(especificacmente en una vuelta ya que si averiguo esto vere cuantas vueltas da en un minuto), con este dato me ayudaria bastante en mi proyecto, la pregunta era si con ese cristal y con ese PIC, se consiguen tiempos exactos? pero en mili o micro segundos?, o ese pic es para medicion de tiempo segundo a segundo nada mas?... como te digo llevo programando en C, desde q tenia 12 años ahora soy ing. con mas de 30,asi que conosco del tema, pero estoy con el PIC 16f88, ahora por necesidad tengo que aprender PICs solo llevo semanas con esto, asi recurro a ustedes los expertos...
Gracias por las repuestas , y claro el cristal que venden en Peru es tipo cilindrico diminuto de 32768Hz =32.768kHz (punto decimal)

aqui les dejo el video de mi proyecto, aunque no se note muy bien pero estoy usando un LCD


----------



## cristian_elect (Sep 30, 2011)

Tendrás que buscar un valor de cristal para tener esa precisión de tener valores para mostrar de seg, decimas, centésimas y milésima, con 32.768Khz solo tienes la cuenta del 1 segundo preciso.
Bueno con atmega si logre eso de contar hasta los milisegundos con cristal de 4MHz lo del reloj es de buena precision.


----------



## velociraptor (Oct 1, 2011)

Se que el tema, es un reloj despertaror, mi intencion no es desvirtuar el tema, pero este es el unico topic, donde pude encontrar gente interesada en el tiempo, es decir en medir el tiempo real, sea segundo a segundo, usando cristales especificos.
El codigo que uso con el cristal de 4MHz es:

*#include <16F88.h>

#FUSES NOWDT,NOBROWNOUT,NOLVP,NOPROTECT,XT
#FUSES NOMCLR
#FUSES CPD
#FUSES IESO//Internal External Switch Over mode enabled
#FUSES PUT
#FUSES FCMEN
#use delay(clock=4000000)
#include "LCD.c"

unsigned int16 cont500mS;
unsigned int16 contS=0;
unsigned int16 contM=0;
unsigned int16 contH=0;
unsigned int8 unocero=0;

#int_TIMER1
void  TIMER1_isr(void) 
{
setup_timer_1(T1_DISABLED);
set_timer1(3036);//para desbordarlo en 500ms osea medio segundo
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
cont500mS++;if(unocero==0){unocero=1;}else{unocero=0;}
if(unocero==1)
      {contS++;if(contS==60){contS=0;contM++;}
      if(contM==60){contM=0;contH++;}
      lcd_gotoxy(1,1);printf(LCD_PUTC,"%Lu:%Lu:%Lus....",contH,contM,contS);

      }

}

void main()
{

   setup_adc_ports(sAN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   Setup_Oscillator(OSC_4MHZ|OSC_INTRC);


set_timer1(3036);//adelantamos el tiempo en esa cantidad para que desborde en 500ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);


lcd_init();

while(TRUE)
   {

   }

}
*
Como comentario: se crea una interrupcion por desbordamiento, cada 500mili segundos, cada dos interrupciones se cuenta un segundo y se pone el valor en el LCD. he borrado parte del codigo que hace la conversion del modulo Analogico digital para mi proyecto, asi que me disculpan si hay una linea por ahi que se filtra (esa conversio AD funciona a la perfeccion).
Por ahi lei que en el LCD.C, hay DELAYs, ahora la respuesta podria estar por ahi??, en ese mismo comentario lei en ingles que durante un DELAY, las interrupciones no funcionan? es decir si debiera producirse el desbordamiento del timer pero el PIC esta dentro de un DELAY, esta interrupcion no se produce? que hay de cierto en esto? no he tenido oportunidad de comprobar esto, que pienso yo aqui ya se deben haber encontrado con este inconveniente?
Gracias por las respuestas...

mil disculpas por hablar del cristal de 4MHz cuando el tema es con el 32KHz 
Los resultados: Pues el reloj se atrasa, en promedio un segundo cada 30minutos, es demasiado.


----------



## cristian_elect (Oct 1, 2011)

No se recomienda funciones que consumen  tiempo bastante largo dentro de las interrupciones.


----------



## velociraptor (Oct 2, 2011)

*while(TRUE)
   { 
if(contS!=contS_ant){lcd_gotoxy(8,1);printf(LCD_PUTC,"%Lu:%Lu:%Lu",contH,contM,contS);contS_ant=contS;}
lcd_gotoxy(1,1);printf(LCD_PUTC,"%1.4f/",CorA);
lcd_gotoxy(1,2);printf(LCD_PUTC,"%Lu/%1.3f/%1.3f",tension,tensionV,tension2V);
   }
*He sacado el codigo de la interrupcion y lo he puesto en e main, he tratado de pintar en el LCD solo cuando hay cambio entre segundo y segundo, para optimizar recursos pero el retrazo continua...

comparado con un cronometro de un movil NOKIA,muy pronto colocare el video, por ahora una foto 





PD.PIC=11:23 (pasaron 11 minutos 23 segundos), NOKIA= 11:27, el PIC se atraza


----------



## velociraptor (Oct 3, 2011)

Solo un comentario, en el video se observa la conversion analogica digital , para esto se coloca un sensor de temperatura LM que arroja la temperatura en milivoltios, 0.23 quiere decir 23°C, aver si a nuestro reloj tambien le sumamos, la temperatura ambiente y un cronometro, creo que con esto quedaria mejor, y si se puede poriamos colocarle un anemometro, y asi, medimos las condiciones de tiempo en general no?... saludos desde Lima Peru


----------



## baterod3 (Dic 16, 2011)

Hola mi proyecto no es con DS1307 es simplemente con pic. Mi problema es el siguiente quiero implementar 5 alarmas programadas internamente en el pic, pero no he podido lograrlo, espero me ayuden por favor, adjunto mi codigo en PBP, a ver si me dan una manito gracias....


----------



## lucassiglo21 (Dic 17, 2011)

la precisión es la del cristal de 32.768khz, no la medí, pero es dificil, puesto que es muy poco lo que varía, y lo hace con la temperatura y otros factores. a veces hay que corregirlos, ponele que +- 1 minuto cada 2 o 3 meses, es lo normal.


----------



## Arsenic (Ene 20, 2012)

como le puedo meter el hex al 16F628A? tengo el IC Prog abro el archivo y le doy click a "Programar todo" y me devuelve un error de código o algo así... me pueden ayudar? soy novato en el tema programación de circuitos pero se electrónica y algo de programación...


----------



## shura (Feb 23, 2012)

que tal amigos...

Que tal luccassiglo21, estoy analisando los relojes que compartes y el programa, deantemano estan buenisimos los circuitos...gracias por compartirlos...
una pregunta o solicitud jeje, lo que pasa es que yo trabajo mas con el PIC-BASIC PRO, casualmente puedes poner los codigos en este porgrama de alguno de tus diseños...???

mas quenada para que le entienda mejor al mismo....

De antemano muchas gracias...
Saludos///


----------



## Nefestoli (Ago 11, 2012)

Hola a todos.
Estoy trabajando con el DS1307, y tengo el siguiente tropiezo: Cuando le retiro la alimentación principal la hora no se actualiza. Tiene instalada la pila de 3V que se sugiere en la hoja de datos, pero aun así no se actualiza. ¿Cuál podrá ser el problema?


----------



## ByAxel (Ago 13, 2012)

Nefestoli dijo:


> Hola a todos.
> Estoy trabajando con el DS1307, y tengo el siguiente tropiezo: Cuando le retiro la alimentación principal la hora no se actualiza. Tiene instalada la pila de 3V que se sugiere en la hoja de datos, pero aun así no se actualiza. ¿Cuál podrá ser el problema?



- Bateria baja.
- Conexión defectuosa con el cristal.
- El cuerpo del cristal debe estar lo mas cerca posible de GND (ver hoja de datos).

un saludo


----------



## mao12 (Ago 13, 2012)

Nefestoli dijo:


> Hola a todos.
> Estoy trabajando con el DS1307, y tengo el siguiente tropiezo: Cuando le  retiro la alimentación principal la hora no se actualiza. Tiene  instalada la pila de 3V que se sugiere en la hoja de datos, pero aun así  no se actualiza. ¿Cuál podrá ser el problema?





Amigo nefestoli coloca aqui  el codigo, asi es mas facil ayudarte a resolver el problema



Proba de esta forma:

En esta parte del codigo puedes realizar el cambio:

 //Set date for -> 21-Abril-2010 Martes
 //Set time for -> 22:14:00
   ds1307_set_date_time(21,4,10,1,22,14,00);

Como ves en el ds1307_set_date_time tenemos (21 del mes 4 del año 2010 Martes a las 22H 14m), modificando estos numeros
cambiaras la fecha del reloj, pero ojo tienes que programar dos veces el micro.

Me explico: Teniendo el DS1307 conectado con el pic via i2c, y con la pila puesta (3v) en el DS1307 para que no pierda la 

hora programaras el pic con la linea ds1307_set_date_time(21,4,10,1,22,14,00); como si fuera parte del codigo, para despues 

borrar el pic y esta misma parte del codigo debes ponerla como comentario //ds1307_set_date_time(21,4,10,1,22,14,00); y 

volvemos a programar el pic.
Lo hacemos de esta manera porque de no ponerla como comentario, cada vez que el programa pasara por dicha linea, el RTC 

DS1307 volveria a empezar en la fecha programada.


----------



## angelo123 (Sep 12, 2012)

hola, cual seria la programación para poder utilizar un oscilador de 12hz o de 20hz? ya que no consigo uno de ese valor
gracias


----------



## Mushito (Abr 10, 2013)

El software esta en proton, lo pase a PBP, pero aun no lo montè, ¿como cambiaria el programa en caso de usar un cristal de 4 MHz o no se puede? ¿en caso de usar un cristal de 32.768 KHz como escribiria en PBP para que sea exacto?


----------

