Reloj digital miniatura con atmega328p AU y RTC

Hola,
este es un pequeño reto que me propuse que es un reloj digital tan pequeño y duradero como sea posible
usa un atmega328p AU y leds en paralelo para simular los segmentos de un display de cátodo común
no lo tengo por completo terminado, pero creo que solo me falta conectar el RTC que es un DS1302ZN+
la idea es que el atmega este en sleep mode casi siempre y con un pulsador (que aun no coloco) simplemente lea la hora del RTC y lo marque en los leds durante unos 5-10 segundos

no conozco demasiado de programación así que también agradecería algún consejo, pero creo que voy en buen camino con respecto al código
cualquier sugerencia es agradecida

adjunto imagen del esquematico y la PCBNano Clock PCB Mk1.pngNano Clock SCH Mk1.png
 
Interesante proyecto.

Yo eliminaría los optoacopladores, no veo el porque de usarlos; yo los cambiaría por simples transistores que sería la versión barata o un ULN2003 en la versión un poco mas cara.

En el diagrama y por lo poco que puedo ver en la placa, te falta conectar la masa de los emisores de los transistores y los cátodos de los led de los optoacopladores.

Ademas que, así como están conectados, no vas a poder multiplexar los led para crear los números, la matriz esta mal diseñada.
Por ejemplo, si activas la salida PD6 y PB5 se iluminaran 6 LEDs a la vez. Si en vez de activar PB5 usas cualquier otro pin (PB0-PB4) no se iluminara nada.
 
Leds en paralelo pésima idea.
Optoacopladores inútiles.
¿Como se ve la hora si solo tienes un display de siete segmentos?
¿Para qué esa conexión que gasta dos pines para encender un solo led?

La idea del proyecto me parece bien pero ese esquema no lo entiendo por lo antes mencionado.
 
Edito, ese esquema no funciona.
Presta atención y verás que no se va a encender nada.

Creo que querías hacer multiplexado de varios display pero has hecho un mezclote de un solo display que no llega ni a encender nada.
 
Interesante proyecto.

Yo eliminaría los optoacopladores, no veo el porque de usarlos; yo los cambiaría por simples transistores que sería la versión barata o un ULN2003 en la versión un poco mas cara.

En el diagrama y por lo poco que puedo ver en la placa, te falta conectar la masa de los emisores de los transistores y los cátodos de los led de los optoacopladores.

Ademas que, así como están conectados, no vas a poder multiplexar los led para crear los números, la matriz esta mal diseñada.
Por ejemplo, si activas la salida PD6 y PB5 se iluminaran 6 LEDs a la vez. Si en vez de activar PB5 usas cualquier otro pin (PB0-PB4) no se iluminara nada.
Conecte los leds en paralelo para hacer como si fuera un solo display de 6 digitos
Se verán los diferentes digitos encendiendo uno a la vez en un tiempo corto de tiempo para que el ojo no lo note
Use optos ya que me parecen mas cofiables, pero solo por eso
Leds en paralelo pésima idea.
Optoacopladores inútiles.
¿Como se ve la hora si solo tienes un display de siete segmentos?
¿Para qué esa conexión que gasta dos pines para encender un solo led?

La idea del proyecto me parece bien pero ese esquema no lo entiendo por lo antes mencionado.
Los puse en paralelo para hacer como 1 solo display de 6 digitos y asi ahorrar pines ya que si los hago de manera individual necesitaria alrededot de 50 pines
Los relojes que se hacen con displays de 7 segmentos y microcontroladores de suelen hacer de esta forma para ahorrar pines
Poner la hora se soluciona con el codigo de programacion
Falta conectar el RTC al atmega, quizás 2 baterías tipo boton 1 para el RTC y otra mas para el resto
los modos de sleep están en esta dirección


saludos
Lo se, lo deje asi ya que aun estoy investigando el RTC por lo que no queria conectarlo aun
Puse 2 baterias siendo 1 para el RTC y 1 para el resto del circuito
Lo puse de esta forma por el esquematico ideal en la datasheet del RTC
 
Supongo que sigues sin darte cuenta de lo absurdo de tu esquema.
No funciona nada porque los emisores están conectados entre si pero no a negativo
Si los conectas a negativo irá pero es absurdo porque estás controlando el mismo led por el ánodo y por el cátodo desperdiciando dos pines para una cosa que puede hacer uno solo
Los optoacopladores no aportan nada, penalizan; un transistor tiene una ganancia en corriente grande y así consigues que con un solo pin del arduino que da unos 25mA puedes encender 7 segmentos que cada uno de ellos consume 20mA. La mayoría de los optoacopladores tienen una relación de corriente por el diodo y corriente por el colector de 1:1 así que no consegurás que luzcan correctamente... Eso en el caso de haber hecho un esquema de multiplexado que has hecho un ente.
Los ledes no se deben de conectar en paralelo por razones repetidas en el foro varios billones de veces. Poder se puede, como puedes darles un martillazo también, pero ninguna de las dos cosas son recomendables.
Para multiplexar cuatro dígitos, tendrás que poner cuatro dígitos que has puesto solo uno.
Una vez puestos los cuatro los tendrás que conectar en ánodo común o en cátodo común, que los has conectado en "me lo invento y los conecto por los dos lados" Cuando estén en una de las dos configuraciones, los pines del arduino atacarán por un lado y el transistor por el común, así que necesitarás 4 transistores y 7 salidas para 4 dígitos.
Mientras no corrijas todo eso puedes codificar lo que creas conveniente porque no va a ir.

Claro que ahora que me fijo es que has puesto un esquema y otro pcb que no corresponden.
 
Conecte los leds en paralelo para hacer como si fuera un solo display de 6 digitos
Se verán los diferentes digitos encendiendo uno a la vez en un tiempo corto de tiempo para que el ojo no lo note
Use optos ya que me parecen mas cofiables, pero solo por eso

No veo el porque confiar mas en los optoacopladores. Igual lo mio era solo una sugerencia (ademas que con simples transistores se ahorra muchísimo dinero).

Por el lado del display entiendo lo que quieres hacer, se llama multiplexado. Pero la matriz esta mal diseñada, no vas a poder hacerla andar nunca.
Es mas, dado que son 6 dígitos de 7 segmentos, necesitarías 6 lineas para los dígitos y 7 lineas para los segmentos. Usas 7 y 7, te sobra un pin.

Multiplex.png

Eso es lo que quieres hacer. Como se ve ningún LED esta en paralelo como los tuyos.
 
Hola, el reloj será alimentado a pila tipo 2032?
Cuánta autonomía crees que tendrá si utilizas LEDs?

Según el diseño solo muestra la hora cuando se presiona un botón y por solo unos instantes. Los LEDs actuales tienen un brillo aceptable con baja corriente. Si se elige, por ejemplo 1ma por LED, lo máximo que consumirá aproximadamente será 7mA en funcionamiento.

Osea que no seria un problema. Es mas preocupante que cristal usara para el micro ya que la máxima frecuencia depende de la tensión (para este proyecto yo elegiría 4Mhz) .
Luego esta determinar que LEDs usar y calcular bien las resistencias ya que la tensión mínima de trabajo estará en torno a los 2v; pero depende de los LEDs que elija, osea el color.

Mas allá de todo eso lo primero es que el diseño funcione :LOL:.
 

Emis

Well-known-juntamugre
Realmente el proyecto en su conjunto está muy bueno, el tamaño me encanta.

Hay que mejorar el control de los led y su conexionado, conectados en paralelo deja de ser eficiente y eso es una desventaja por más que sea 1 segundo el tiempo de encendido.

Muestra como quedó el esquemático y su PCB :aplauso::aplauso::aplauso:
 
Supongo que sigues sin darte cuenta de lo absurdo de tu esquema.
No funciona nada porque los emisores están conectados entre si pero no a negativo
Si los conectas a negativo irá pero es absurdo porque estás controlando el mismo led por el ánodo y por el cátodo desperdiciando dos pines para una cosa que puede hacer uno solo
Los optoacopladores no aportan nada, penalizan; un transistor tiene una ganancia en corriente grande y así consigues que con un solo pin del arduino que da unos 25mA puedes encender 7 segmentos que cada uno de ellos consume 20mA. La mayoría de los optoacopladores tienen una relación de corriente por el diodo y corriente por el colector de 1:1 así que no consegurás que luzcan correctamente... Eso en el caso de haber hecho un esquema de multiplexado que has hecho un ente.
Los ledes no se deben de conectar en paralelo por razones repetidas en el foro varios billones de veces. Poder se puede, como puedes darles un martillazo también, pero ninguna de las dos cosas son recomendables.
Para multiplexar cuatro dígitos, tendrás que poner cuatro dígitos que has puesto solo uno.
Una vez puestos los cuatro los tendrás que conectar en ánodo común o en cátodo común, que los has conectado en "me lo invento y los conecto por los dos lados" Cuando estén en una de las dos configuraciones, los pines del arduino atacarán por un lado y el transistor por el común, así que necesitarás 4 transistores y 7 salidas para 4 dígitos.
Mientras no corrijas todo eso puedes codificar lo que creas conveniente porque no va a ir.

Claro que ahora que me fijo es que has puesto un esquema y otro pcb que no corresponden.
El esquematico y pcb son del mismo circuito
Intente hacer un multiplexado a 6 digitos en lugar de 4 como tu dices
Como dije antes, solo puse optos porque les tengo mas confianza que a los transistores por algunas experiencias, aun asi entiendo tu punto
Encerio no conecte el catodo de los leds? Soy una desgracia si cometi un error tan novato jaja
Quiza, y solo quiza, te confundiste por el esquematico a como lo coloque
Veras, solo puse los leds uno al lado del otro en 7 filas pero estan puestos para hacer el multiplexado y asi poder usar 7 pines para los numeros y 6 para encender cada uno de los 6 digitos
Espero estar explicandome bien, sino me disculpas
Realmente el proyecto en su conjunto está muy bueno, el tamaño me encanta.

Hay que mejorar el control de los led y su conexionado, conectados en paralelo deja de ser eficiente y eso es una desventaja por más que sea 1 segundo el tiempo de encendido.

Muestra como quedó el esquemático y su PCB :aplauso::aplauso::aplauso:
Gracias, y que otra forma recomiendas ya que segun veo en un display de 4 digitos que tengo los segmentos estan en paralelo entre si
Porqué no implementar un LCD de 7seg?
No requiere controlador adicional, y el consumo es despreciable.
El único detalle es que hay que modificar el código para tal cometido.
Por 2 razones
La lcd tomaria un tamaño mayor (almenos las que conozco) y hasta donde se consumiria mas que los leds
Ya que otro objetivo es hacer que consuma muy poca energía y asi mantenerlo en funcionamiento mucho tiempo
Según el diseño solo muestra la hora cuando se presiona un botón y por solo unos instantes. Los LEDs actuales tienen un brillo aceptable con baja corriente. Si se elige, por ejemplo 1ma por LED, lo máximo que consumirá aproximadamente será 7mA en funcionamiento.

Osea que no seria un problema. Es mas preocupante que cristal usara para el micro ya que la máxima frecuencia depende de la tensión (para este proyecto yo elegiría 4Mhz) .
Luego esta determinar que LEDs usar y calcular bien las resistencias ya que la tensión mínima de trabajo estará en torno a los 2v; pero depende de los LEDs que elija, osea el color.

Mas allá de todo eso lo primero es que el diseño funcione :LOL:.
En eso me gustaria algo de ayuda ya que nose en cuanto afecta un cristal de cuarzo en un micro, osea en que diferenciaria usar uno de 16 MHz y uno de 4 MHz
Los leds no si siquiera donde buscar esos datos ya que nunca he trabajado con leds smd
Se como funcionan, sus ventajas pero nose en donde buscar los datos que necesito y mas importante su libreria para el Eagle ya que este programa no tiene todos los componentes existentes lamentablemente
No veo el porque confiar mas en los optoacopladores. Igual lo mio era solo una sugerencia (ademas que con simples transistores se ahorra muchísimo dinero).

Por el lado del display entiendo lo que quieres hacer, se llama multiplexado. Pero la matriz esta mal diseñada, no vas a poder hacerla andar nunca.
Es mas, dado que son 6 dígitos de 7 segmentos, necesitarías 6 lineas para los dígitos y 7 lineas para los segmentos. Usas 7 y 7, te sobra un pin.

Ver el archivo adjunto 196227

Eso es lo que quieres hacer. Como se ve ningún LED esta en paralelo como los tuyos.
No hice el esquematico muy fácil de analizar
Podria equivocarme pero recuerdo haber conectado 7 filas de 6 leds en paralelo para hacer los 7 segmentos en multiplexado
Ahora yo me fio mas de los optos porque en algunas practicas con arduino he tenido problemas con los transistores, tiempo despues conoci el optoacoplador y me parecio mas facil de usar, pero solo es algo personal y entiendo que consumen mas y son mas caros
Intentaré hacer el circuito en estos días ya que tengo conmigo algunos transistores y un display de 4 digitos
No veo el porque confiar mas en los optoacopladores. Igual lo mio era solo una sugerencia (ademas que con simples transistores se ahorra muchísimo dinero).

Por el lado del display entiendo lo que quieres hacer, se llama multiplexado. Pero la matriz esta mal diseñada, no vas a poder hacerla andar nunca.
Es mas, dado que son 6 dígitos de 7 segmentos, necesitarías 6 lineas para los dígitos y 7 lineas para los segmentos. Usas 7 y 7, te sobra un pin.

Ver el archivo adjunto 196227

Eso es lo que quieres hacer. Como se ve ningún LED esta en paralelo como los tuyos.
Ese misto multiplexado es el que hice pero con 6 leds
Arreglare el esquematico en cuanto pueda, nose si mi laptop aguante el Eagle
 
Última edición:
El esquematico y pcb son del mismo circuito
No lo parecen, osea no; en el esquema hay siete bloques de leds, que son siete segmentos de un solo display y en el circuito impreso hay seis "displays" de un solo led por segmento
Intente hacer un multiplexado a 6 digitos en lugar de 4 como tu dices
Pues lo que ya he dicho antes no cuadra porque tienes siete "transistores"
Como dije antes, solo puse optos porque les tengo mas confianza que a los transistores por algunas experiencias, aun asi entiendo tu punto
Pero ahí no hacen nada de nada; no amplifican corriente y no aislan porque compartes la alimentación tanto el positivo como el negativo. Para eso no pongas nada.
Les tienes confianza porque los has usado pero parece que no has entendido su función, ni la de un transistor tampoco.
Encerio no conecte el catodo de los leds? Soy una desgracia si cometi un error tan novato jaja
No, no te lo digo encerio, te lo digo en serio: no has conectado los emisores de los transistores a ningún sitio = circuito abierto. Además NO HAS AGRUPADO LOS LEDS PARA FORMAR DISPLAYS, SOLO TIENES UN DISPLAY eso no es un multiplexado, es un ente.
Quiza, y solo quiza, te confundiste por el esquematico a como lo coloque
No, te has confundido tu. Displays multiplexados he montado cientos, lo tuyo es un no sabes lo que haces.
Todos nos equivocamos, yo el primero, pero te lo estoy diciendo y sigues diciendo que está bien... móntalo y así aprenderás mas. Las palabras enseñan menos que tirar todo el material, cuando desperdicies tu tiempo y tu dinero eso ya no se olvida. Lo digo por experiencia.
Veras, solo puse los leds uno al lado del otro en 7 filas pero estan puestos para hacer el multiplexado y asi poder usar 7 pines para los numeros y 6 para encender cada uno de los 6 digitos
¿Y si estás diciendo que has puesto 7 y 6, por qué en realidad has puesto 7 y 7?. De nuevo eso no es una multiplexación, es un error. El esquema correcto te lo ha puesto switchxxi en su respuesta, tienes que hacer 6 de esos, no el ente que has hecho tu.
Espero estar explicandome bien, sino me disculpas
No hay de que sisculparse, pero no te explicas bien.


Edito, has puesto 6 leds en paralelo y 7 transitores, todo al revés. ufff. Daba por hecho que eran 7 y 7 que tiene medio lógica.
Ve a mirar como se multiplexa y deshaz el engendro ese.
Lo que has hecho te va a dar si o si todos los displays con la misma información hasta que quemes los leds por haberlos puesto en paralelo.
Hasta que no quieras cambiar los errores absurdos no avanzamos.

Si no ves tu error, móntalo. Cuando lo tengas que tirar todo y volver a empezar prestarás mas atención porque parece que las palabras no te sirven. Los hechos ayudan a entender mejor las cosas.
 
Última edición:

Emis

Well-known-juntamugre
Por lo que tengo entendido los segmentos "A" de los 6 dígitos son los LED 1,2,3,4,5 y 6, si fuera así con los demás segmentos al querer mostrar un dígito se van a encender todos los segmentos y no se haría el multiplexado.

Para tal caso tenés que lograr unir los catodos o anodos de cada dígito y controlarlo independiente, así se encendería un dígito y un segmento a la vez
 
Un LCD consume de forma despreciable comparado a cualquier LED de bajo consumo. Ésto se debe a que un LCD, no emite luz propia, sólo trabaja con contrastes. Busca al respecto, creo que tienes una confusión con ese detalle.
Respecto a tu circuito, NO tiene sentido alimentar un segmento con un pin de Arduino y el otro extremo del segmento con un transistor. De esa forma estás exigiendo al pobre puerto de Arduino. O quitas el transistor driver o añades otro driver PNP en el otro puerto.
 
Última edición:
Por lo que tengo entendido los segmentos "A" de los 6 dígitos son los LED 1,2,3,4,5 y 6, si fuera así con los demás segmentos al querer mostrar un dígito se van a encender todos los segmentos y no se haría el multiplexado.

Para tal caso tenés que lograr unir los catodos o anodos de cada dígito y controlarlo independiente, así se encendería un dígito y un segmento a la vez
finalmente alguien que me entendio el circuito xd
Un LCD consume de forma despreciable comparado a cualquier LED de bajo consumo. Ésto se debe a que un LCD, no emite luz propia, sólo trabaja con contrastes. Busca al respecto, creo que tienes una confusión con ese detalle.
Respecto a tu circuito, NO tiene sentido alimentar un segmento con un pin de Arduino y el otro extremo del segmento con un transistor. De esa forma estás exigiendo al pobre puerto de Arduino. O quitas el transistor driver o añades otro driver PNP en el otro puerto.
a ok, te referia a esa lcd
pense que hablabas de las que se iluminan, podira intentarlo pero necesitaria encontrar un modelo adecuado pero perderia un poco de visibilidad al no tener luz
No lo parecen, osea no; en el esquema hay siete bloques de leds, que son siete segmentos de un solo display y en el circuito impreso hay seis "displays" de un solo led por segmento

Pues lo que ya he dicho antes no cuadra porque tienes siete "transistores"
Pero ahí no hacen nada de nada; no amplifican corriente y no aislan porque compartes la alimentación tanto el positivo como el negativo. Para eso no pongas nada.
Les tienes confianza porque los has usado pero parece que no has entendido su función, ni la de un transistor tampoco.
No, no te lo digo encerio, te lo digo en serio: no has conectado los emisores de los transistores a ningún sitio = circuito abierto. Además NO HAS AGRUPADO LOS LEDS PARA FORMAR DISPLAYS, SOLO TIENES UN DISPLAY eso no es un multiplexado, es un ente.

No, te has confundido tu. Displays multiplexados he montado cientos, lo tuyo es un no sabes lo que haces.
Todos nos equivocamos, yo el primero, pero te lo estoy diciendo y sigues diciendo que está bien... móntalo y así aprenderás mas. Las palabras enseñan menos que tirar todo el material, cuando desperdicies tu tiempo y tu dinero eso ya no se olvida. Lo digo por experiencia.

¿Y si estás diciendo que has puesto 7 y 6, por qué en realidad has puesto 7 y 7?. De nuevo eso no es una multiplexación, es un error. El esquema correcto te lo ha puesto switchxxi en su respuesta, tienes que hacer 6 de esos, no el ente que has hecho tu.

No hay de que sisculparse, pero no te explicas bien.


Edito, has puesto 6 leds en paralelo y 7 transitores, todo al revés. ufff. Daba por hecho que eran 7 y 7 que tiene medio lógica.
Ve a mirar como se multiplexa y deshaz el engendro ese.
Lo que has hecho te va a dar si o si todos los displays con la misma información hasta que quemes los leds por haberlos puesto en paralelo.
Hasta que no quieras cambiar los errores absurdos no avanzamos.

Si no ves tu error, móntalo. Cuando lo tengas que tirar todo y volver a empezar prestarás mas atención porque parece que las palabras no te sirven. Los hechos ayudan a entender mejor las cosas.
bien bien, te dije que entendia tu punto
si quieres puedo pasar los archivos de eagle pare que verifiques que el esquematico y pcb son el mismo
de todos modos voy a arreglar el esquematico en cuanto pueda con las correciones que me han dicho
 
Un LCD fácil de encontrar sería, utilizando el de un multímetro. Normalmente son de 3 y 1/2 dígitos y sería compatible para usarlo cómo reloj.
Le puedes añadir un backlight que se encienda a voluntad.
 
Respecto a tu circuito, NO tiene sentido alimentar un segmento con un pin de Arduino y el otro extremo del segmento con un transistor. De esa forma estás exigiendo al pobre puerto de Arduino. O quitas el transistor driver o añades otro driver PNP en el otro puerto.

Solo hace falta los transistores para seleccionar los dígitos ya que por esa linea, en el peor caso, circulara la corriente de 7 LEDs. El puerto que maneja los segmentos solo tiene que aportar corriente para encender 1 solo LED por cada linea, si no se supera la corriente maxima que puede aportar ese puerto en total no habrá problema.

Igual ese es el menor de los problemas ya que la matriz esta mal echa y jamas funcionara.
Pero sigue empecinado en que esta bien.

Voy a hacer un ultimo intento para ver si se entiende donde esta el problema: Una matriz de LEDs, como la quiere implementar permite encender como mínimo 1 LED.

Por ejemplo, quiero que el display muestre lo siguiente: El primer, segundo tercero, cuarto y quinto dígito apagado, y en el sexto dígito que aparezca el numero 1.
Solo quiero que aparezca eso siempre, ¿ que puertos tengo que activar para que se enciendan solamente esos dos LEDs ?
 
Arriba