Author Topic: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE  (Read 57278 times)

0 Members and 1 Guest are viewing this topic.

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #45 on: April 24, 2011, 05:41:45 pm »
bueno, armé el circuito hasta el ultimo código que hice, ya con el despliegue multiplexado de los displays de 7 segmentos usando el 74ls48

lo bueno:

-despliega de forma apropiada los numeros
-la frecuencia de 100hz parece bastar para hacer parecer todos los displays encendidos
-el multiplexeo funciona bien.

lo malo:
-el tiempo no esta correcto, se adelanta segun veo,  creo que es porque estoy usando el oscilador interno y los calculos los hice tomando en cuenta un cristal externo.

dificultades técnicas:
-dos displays que tengo venian defectuosos, el segmento "e" no se enciende como los demas y no se nota cuando esta encendido (vean el video)

les dejo el video  que grabé desde la programacion del PIC hasta la prueba ya en físico.

pic microcontroller 16f627 clock using 74ls48 and 7 segment display. count test

TO DO:
- reemplazar los 2 displays y buscar un set de 4 displays ya multiplexados.
- corregir el tiempo
- agregar el codigo y los botones de configuracion de hora.  :drinks:
« Last Edit: September 11, 2011, 04:56:42 pm by naruto »
N/A

Offline hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Posts: 3345
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #46 on: April 24, 2011, 06:09:24 pm »
De paja en paja ya agarro forma el proyecto, bien por ti naruto  :thumbsup: haber que dia te echas algo con arduino.

Offline vlad

  • Global Moderator
  • The Communiter-
  • *
  • Posts: 6351
    • Qualium.net
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #47 on: April 24, 2011, 06:55:18 pm »
-el tiempo no esta correcto, se adelanta segun veo,  creo que es porque estoy usando el oscilador interno y los calculos los hice tomando en cuenta un cristal externo.

Estuve viendo el video y asumiendo que el video no haya comprimido el tiempo si hay un cambio de 2:42 a 3:39, son 57 segundos.

Y en el simulador te da el tiempo exacto?. Ademas, como estas generando el retraso?, un loop de NOPs?

PD:
Muy apropiado:
http://www.sonofsofaman.com/hobbies/electronics/pic/16f84/code/delays.asp

En especial esta nota:
If you are driving your CPUs clock with a resistor/capacitor, all bets are off. The only way to get a remotely accurate calculation is to measure the clock rate with a frequency counter. Even then, temperature changes can alter the run rate significantly.

jejeje al principio yo estaba en contra del cristal pero al parecer hasta para esto tan simple será necesario...

PD2:
http://www.piclist.com/cgi-bin/delay.exe?Delay=1&Type=seconds&Regs=d1+d2+d3+d4&clock=4&name=Delay&CPU=PIC
« Last Edit: April 24, 2011, 07:06:48 pm by vlad »

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #48 on: April 25, 2011, 11:02:24 am »
Estuve viendo el video y asumiendo que el video no haya comprimido el tiempo si hay un cambio de 2:42 a 3:39, son 57 segundos.

Y en el simulador te da el tiempo exacto?. Ademas, como estas generando el retraso?, un loop de NOPs?

PD:
Muy apropiado:
http://www.sonofsofaman.com/hobbies/electronics/pic/16f84/code/delays.asp

En especial esta nota:
If you are driving your CPUs clock with a resistor/capacitor, all bets are off. The only way to get a remotely accurate calculation is to measure the clock rate with a frequency counter. Even then, temperature changes can alter the run rate significantly.

jejeje al principio yo estaba en contra del cristal pero al parecer hasta para esto tan simple será necesario...

PD2:
http://www.piclist.com/cgi-bin/delay.exe?Delay=1&Type=seconds&Regs=d1+d2+d3+d4&clock=4&name=Delay&CPU=PIC

En los post anteriores explicamos con ecuaciones y calculos como se obtiene el retardo, se hace a traves de interrupciones, y lo que hay que hacer notar es que el calculo para el retardo de la interrupcion es distinto entre oscilador externo y el interno, el detalle fué que el cálculo que se posteó aqui fue hecho para un oscilador externo  y yo en el circuito usé el interno.

Voy a revisar la configuracion y usaré un cristal de 4Mhz

El próximo circuito que armaré será usando una pantalla gráfica (que teniendo la libreria, es mucho mas facil que desplegar la información en display se 7 segmentos).

esoy revisando con el simulador la rutina de interrupcion y estoy viendo donde se me generan los retardos o adelantos innecesarios.

cuando la tenga depurada se las pongo  :drinks:
N/A

Offline vlad

  • Global Moderator
  • The Communiter-
  • *
  • Posts: 6351
    • Qualium.net
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #49 on: April 26, 2011, 11:59:48 pm »
En los post anteriores explicamos con ecuaciones y calculos como se obtiene el retardo [snip]

Y en consecuencia del evidente problema en ellos es la sugerencia de utilizar un generador de codigo para retardos  :thumbsup:

Pero supongo que la idea es aprender, asi que suerte  :thumbsup:

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #50 on: April 27, 2011, 07:57:31 am »
Y en consecuencia del evidente problema en ellos es la sugerencia de utilizar un generador de codigo para retardos  :thumbsup:

Pero supongo que la idea es aprender, asi que suerte  :thumbsup:
se usan interrupciones, que es la solucion mas apropiada para controlar tiempo.

usar NOP o loops no es la mejor forma de resolver este problema.

y el problema no es la tecnica en si, pues para eso está, lo mas exacto es el uso del contador interno en lugar de confiar en los ciclos de ejecucion de código y esperando que loops y NOPs se tarden x cantidad de tiempo.
El problema aqui es que estoy usando el oscilador interno y el momento cuando le recargo la variable al contador, estuve haciendo pruebas ya con el simulador moviendo varias lineas de código y ya estoy consiguiendo resultados estables.

Otro detalle es que no estoy programando en Assembler directamente, si no en BASIC, y como bien se sabe, entre mas se eleva uno en el lenguaje, menos control del codigo ensamblador tenés. siempre hay código extra que se va a ejecutar para poder ejecutar esas rutinas de alto nivel.

publicaré resultados dentro de poco  :drinks:
« Last Edit: April 27, 2011, 08:08:21 am by naruto »
N/A

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #51 on: September 09, 2011, 03:29:44 pm »
por cuestiones de trabajo ya no habia podido seguir con este proyecto.

y pues, muchos no le veian la gracia a diseñar un simple reloj de displays.

como todo buen geek a mi me gustan las cosas geeks, es asi como decidí cambiar los displays por algo mas interesante.

Pensando en la idea de g00mba de hacer un reloj BINARIO me puse a buscar otras posibilidades siempre dentro del campo geek.
Descarté lo del reloj binario porque lo siento muy rebuscado, talvez algo mas llamativo que le guste  mas gente.

Q&A: How Do I Read Your Binary Clock?

asi que me decidi por un modelo distinto y me gustó este reloj que vende ThinkGeek ($US 39.99)

Think Geek: TIX Clock Review

es facil de leer
solo usa leds
es decorativo
bien geek

a mi me saldria mucho mas barato hacerlo de lo que lo vale en thinkgeek.

TO DO:
-revisar las rutinas de tiempo para tener la base del segundo lo mas exacta posible.
-simular el circuito con leds
-construir prototipo
-construir circuito final

TO DO para upgrades:
- poner alarmas
- crear animaciones
N/A

Offline yaasurs

  • Sv Jr.
  • **
  • Posts: 84
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #52 on: September 09, 2011, 04:49:30 pm »
mi opinión es que en vez de estar haciendo un reloj, se debería de tratar de buscar hacer algo no inventado, algo innovador.
es solo mi opinión.

Offline hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Posts: 3345
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #53 on: September 09, 2011, 04:57:03 pm »
mi opinión es que en vez de estar haciendo un reloj, se debería de tratar de buscar hacer algo no inventado, algo innovador.
es solo mi opinión.

Date una leida a todo el topic...el objetivo de este topic es educativo...al menos segun entiendo ese fue el objetivo de naruto desde el principio

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #54 on: September 09, 2011, 05:54:34 pm »
mi opinión es que en vez de estar haciendo un reloj, se debería de tratar de buscar hacer algo no inventado, algo innovador.
es solo mi opinión.
asi es, yo se que se pueden hacer mejores cosas, pero que sentido tiene comenzar a utilizar modulos, hardware y lenguaje mas especializado  cuando es un tema de introduccion al diseño por microcontroladores.

Para serte sincero el primer proyecto de muchos es encender un LED y ya, este tutorial va orientado al estudiante/practicamente de electronica/sistemas para introducirlo al mundo de los microcontroladores a un nivel intermedio.

cuando se complete este haremos otro proyecto mas práctico y facil de hacer :thumbsup:
N/A

Offline yaasurs

  • Sv Jr.
  • **
  • Posts: 84
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #55 on: September 10, 2011, 01:44:57 pm »
@~ deverias de mostrar tu invento funcionando.
solo veo lo que hiciste, pero creo que hace falta verlo en accion. si funciona vien me cambio.
no he estudiado electronica pero me imagino que ha de gastar mas de 1watt pero y la fuente? gasta o no.
yo no lo se, como te digo no he estudiado electronica ni nada parecido.

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #56 on: September 12, 2011, 11:21:06 am »
UPDATE: estuve modificando el código por la impresición en el calculo de la base de 1 segundo que habiamos tenido.

a pesar de que los cálculos estaban correctos, siempre hay que tomar en cuenta el tiempo que toma la rutina de interrupción en ejecutarse.
Revisando foros donde gente exponia el mismo problema, muchos conocedores recomendaban que, a pesar de que el microcontrolador puede calcular tiempos exactos, era mejor utilizar un chip aparte de tipo RTC (Real Time Clock), esto para avitarse lidiar con el tiempo en el microcontrolador y estar totalmente seguros que la base de tiempo se esta generando aparte y sin ningun retardo ni interacción externa.

Para este proyecto vamos a seguir con el cálculo como lo habiamos estado llevando, se puede hacer un ajuste en la práctica para que la base sea lo mas exacta posible.

cambié el codigo a C modificando el código que publicó SmRenderos, hice el cálculo para
F = 4Mhz
Preescaler =  1:16
precarga al TMR0 = 6
Cuentas calculadas = 500   (se desborda cada 0.00200000 sec)

en la práctica hice la prueba haciendo 499 cuentas (osea restarle un approx de 0.00200000 sec)
Dejé corriendo el codigo en el simulador como 3 horas y media y en todo ese tiempo no se atrasó ni se adelantó ni un segundo. asi que creo que ya procederé a la etapa de pruebas físicas y luego hare el diseño de los controles y luego del display de leds

los que nos leen me gustaria que nos comentaran sobre el proyecto, que les parece? les gustaría tener un reloj de patrones bien geek como el recientemente propuesto?

« Last Edit: September 12, 2011, 11:30:52 am by naruto »
N/A

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #57 on: September 13, 2011, 09:46:37 am »


en el diseño de el nuevo estilo del reloj me topé con algo.

y es que hay que manejar 27 leds con los pines del pic elegido (16F627)
se que hay que usar multiplexeo, pero a alguien se le ocurre la mejor manera de agrupar o como tratar los valores para convertirlos a los leds
y tomar en cuenta que se debe tener la posibilidad de crear patrones aleatorios.

he designado 8 lineas de datos y 4 de control para el multiplexeo

alguna idea?
N/A

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #58 on: September 13, 2011, 01:15:06 pm »
nadie?  x_x
N/A

Offline Jaru

  • The Communiter-
  • *
  • Posts: 13252
  • some text
Re: [PROYECTO COMUNO] DISEÑEMOS UN RELOJ DIGITAL - OPEN SOURCE
« Reply #59 on: September 22, 2011, 08:48:30 am »
usando como base el código de SmRenderos programé completo el calculo de las horas minutos y segundos

en pseudocodigo

Code: [Select]
while (1) {

if(se_cumple_segundo){
segundos++
if (segundos == 60) {
segundos = 0
minutos++
if(minutos == 60){
minutos = 0
horas++
if(horas == 24){
horas = 0

}
}
}
}

}

para la simulación solo queria estar seguro que todos los valores se estaban calculando apropiadamante asi que lo simule con 6 displays multiplexados



integrados usados:

►PIC 16f627 ( microcontrolador )
►7448 ( decodificador BCD a 7 segmentos )
►74138 ( decodificador/multiplexador de 3 a 8 )
►set de 6 display multiplexados

Proxima prueba:

eliminar el 7448 y generar en software el código para generar los caracteres en los displays
 - Que se gana con esto?
    * eliminar un integrado
    * no estar limitado al set de caracteres que el 7448 ofrece
    * Flexibilidad para desplegar letras y caracteres a voluntad.

el código completo y los archivos se los debo
« Last Edit: September 22, 2011, 08:53:48 am by naruto »
N/A