Ayuda con matriz Led

Hola es como la segunda vez que escribo en el foro y esta vez es por un proyecto que siempre quise hacer. Una matriz Led. Pues me he atrevido a hacerla despues de leer esta pagina http://www.ucontrol.com.ar/wiki/index.php/Funcionamiento_de_una_matriz_de_LEDs. Ya lo tengo listo en el papel, pero queria pedir alguna clase de ayuda antes de armarlo pues si me quedo algo malo es mejor saberlo antes que despues.
Bueno les explico la idea que tengo. Mi idea es hacer una matriz de 16 x 80 leds de 3mm. Usando para el registro serial el CI 74HC595N en cascada. En la parte de la programacion voy a usar un microcontrolador (despues me quiero preocupar por la programacion, pero se más o menos como va).

Mi idea es poner los Ci tanto para las columnas como para las filas y asi conectarlos en cascada.
Ahora en cuanto a los componenetes

Como los leds que tengo tienen un voltaje de caida de 2,4 y ocupan 10 mA para funcionar . Calcule que necesito colocar una resistencia de 260 en cada columna, y como la potencia es 0,208 son de ¼ de watt.

En los transistores voy a usar. TRANS. TIP31C NPN 3A/100V porque no encontre otro que aguantara 0,8 amp (deberia aguantar 80 leds prendido a la vez como maximo, si me dicen otro más barato mejor). La fuente es de 5V.

Lo principal que me preocupa es ¿La corriente que estoy usando servira para darles el brillo suficiente?, porque creo que tiene que tener más brillo del normal para ser visible cuando empieze a utilizarlo a altas frecuencias?
¿5v esta bien o deberia usar otra fuente? aproposito lei que la fuente tiene capacidad de 1A, si uso 0,8A no la podria sobrecargar?
Hay algo que no considere voy a conectar 12 CI en cascada conectados a el vss del controlador, pero he escuchado que no es debe hacer esto ¿entonces lo conecto a la de la fuente?
-Por ultimo necesitan resistencias adicionales los CI o basta con la de 260 (220 estandar )que voy a poner para cada columna.
Aca es como la miniatura de lo que voy a hacer.

thump_7638372pantallazo-del-20120.png

-Los leds se supone que estan en paralelo y solo deberian prender de una fila por vez y los cuadrados son las supuestas salidas de los 74hc595
 
Que tal aferral.....

la verdad de las cosas es que quiero generar una matriz de leds sin usar un pic, pero soy principiante y quiero saber si me puedes enviar el diagrama de tu circuito para poderlo montar.......


de antemano muchisimas gracias ...
 
Última edición:
Bueno la verdad no soy nada experto, pero el proyecto lo estoy armando y si me resulta no tengo problema en ayudarte. Ya te mando lo que tengo. Pero una duda cuando te refieres a sin Pic ?
 
Pues yo ponía la resistencia en las filas y así solo pongo 7 en lugar de 100.
Luego usaría integrados tipo ULN2003 o así para las coumnas
De cualquier modo busca en el foro que hay varios proyectos de matrices
 
de verdad te agradezco muchisimo tu amabilidad, te agradecere inmensamente tu ayudad porque con este proyecto me ayudaras a salvar mi ciclo!!!!!!!!!!!!!!
 
señores para no abrir otr les pregunto lo siguiente:
Veran entre en el siguiente enlace http://www.ucontrol.com.ar/wiki/index.php?title=Matriz_de_LEDS_de_7x32 y ya tengo la matriz hecha, cuento con los integrados y solo tengo una duda en la programación no se si alguien me la puede explicar:
'----------------------------
'Programa de ejemplo display 7x32
'Texto fijo: POWER
'
'PIC: 16F628A - 4Mhz XTAL, SIN RESET
'
'----- CONFIGURO PUERTOS-----
PORTA = 0
CMCON = 7 'Configuro PORTA como Digital I/O
'
'Configuro el portA:
TRISA.0 = 0 'Salida CLOCK
TRISA.1 = 0 'Salida DATA
TRISA.2 = 1 'Entrada Dip 0
TRISA.3 = 1 'Entrada Dip 1
TRISA.4 = 1 'Entrada Dip 2
TRISA.5 = 1 'Entrada Dip 3
'
'Configuro el portB:
TRISB.0 = 0 'Salida (Fila 1)
TRISB.1 = 1 'Entrada RS-232
TRISB.2 = 0 'Salida (Fila 2)
TRISB.3 = 0 'Salida (Fila 3)
TRISB.4 = 0 'Salida (Fila 4)
TRISB.5 = 0 'Salida (Fila 5)
TRISB.6 = 0 'Salida (Fila 6)
TRISB.7 = 0 'Salida (Fila 7)
'
'Simbolos
Symbol clock = PORTA.0
Symbol data = PORTA.1
Symbol fila1 = PORTB.0
Symbol fila2 = PORTB.2
Symbol fila3 = PORTB.3
Symbol fila4 = PORTB.4
Symbol fila5 = PORTB.5
Symbol fila6 = PORTB.6
Symbol fila7 = PORTB.7
clock = 0
data = 0
'
'Declaracion de variables
Dim col As Byte
Dim aux As Word
'
PORTB = 255 'Apago todas las filas antes de comenzar
'
'---------BUCLE PRINCIPAL------------
Loop:
aux = %0001111011111010
Gosub escribo
aux = %0010011100011110
Gosub escribo
fila1 = 0
WaitMs 2
fila1 = 1
'
aux = %0010001000001010
Gosub escribo
aux = %0010100010100010
Gosub escribo
fila2 = 0
WaitMs 2
fila2 = 1
'
aux = %0010001000001010
Gosub escribo
aux = %0010100010100010
Gosub escribo
fila3 = 0
WaitMs 2
fila3 = 1
'
aux = %0001111000111010
Gosub escribo
aux = %0010100010011110
Gosub escribo
fila4 = 0
WaitMs 2
fila4 = 1
'
aux = %0000101000001010
Gosub escribo
aux = %1010100010000010
Gosub escribo
fila5 = 0
WaitMs 2
fila5 = 1
'
aux = %0001001000001001
Gosub escribo
aux = %1100100010000010
Gosub escribo
fila6 = 0
WaitMs 2
fila6 = 1
'
aux = %0010001011111001
Gosub escribo
aux = %0100011100000010
Gosub escribo
fila7 = 0
WaitMs 2
fila7 = 1
'
Goto loop
'
End
'
'Subrutina que llena el registro de dezplazamiento
escribo:
For col = 1 To 16
If aux.15 = 0 Then
data = 1
WaitUs 2
clock = 0
WaitUs 2
clock = 1
WaitUs 2
Else
data = 0
WaitUs 2
clock = 0
WaitUs 2
clock = 1
WaitUs 2
Endif
aux = ShiftLeft(aux, 1)
Next col
Return
EN LO UNICO QUE ME COMPLICO ES EN EL VALOR DE LA variable aux ya que no se porque le pone esos valores muchas gracias por todo saludos :)
 
Hola otra ves aferral.....

La verdad lo que quiero hacer es una matriz led SIN MICROCONTROLADORES NI CON MEMORIAS!!!

eh logrado conseguir un poco de dinero con otros compañeros y practicamente no impòrta cuanto gastemos.... lo que queremos es sacar adelante nuestro ciclo!!!!!!
 
jehanandre:

Ya te explico, segun veo entendiste como funcionan las filas, las columnas tienen los valores que se les asignan mediante la variable aux. Como lo hace de la siguiente forma

Primero te preguntaras porque lo envia 2 veces ? Eso es porque es una 7x32 son 32 columnas que las rellena de 16 por vez por lo que debe enviar 2 veces los 16. Que como decia por ahi es de primero al ultimo.

00000000000000000
ultimos-->primeros
izq-->derec

Mira quiero que veas lo que se estaba enviando

00100010111110010100011100000010
00010010000010011100100010000010
00001010000010101010100010000010
00011110001110100010100010011110
00100010000010100010100010100010
00100010000010100010100010100010
00011110111110100010011100011110

Cierra los ojos y veelo

Ahora esa aux debe escribirla por eso usa la funcion que hace lo siguiente:

por col 1 a 16 (Cada vez que pasa por aqui aumenta en 1 col son 16 veces por 16 datos)

si (el ultimo bit de aux es 0, decia .15 porque tambien cuenta el 0)
(
Data = 1
)
de lo contrario
(
asumo que es 1
Data = 0
)
corre hacia la izquierda un bit

------------fin del por

Argueta:

La verdad estoy algo confundido, quieres hacer una matriz led, pero que quieres que haga esta ¿Que muestre un mensaje?, ¿Que haga alguna clase de efecto? ¿Que puedas escribir mensajes en esta? porque dependiendo el uso que le das es como puedes construirla.

Te explico un poco de la matriz led, es como una telaraña.

-º- 1 2 3
-º- 4 5 6
-º- 7 8 9
º º º
Imagina que esa es una matriz y que las filas estan conectadas al negativo (puede ser alrevez) y las columnas al positivo. Obviamente necesitas conectar 2 botones para encender una led, por ejemplo si quiero prender:

led 1 prendo fila 1 columna 1
led 2 prendo fila 1 columna 2
led 3 prendo fila 1 columna 3

led 4 prendo fila 2 columna 1
led 5 prendo fila 2 columna 2
led 6 prendo fila 2 columna 3

led 7 prendo fila 3 columna 1
led 8 prendo fila 3 columna 2
led 9 prendo fila 3 columna 3

Eso no tiene mucha ciencia, la verdadera gracia de la matriz es poder escribir cosas lo que se logra uniendo varios puntos y cambiandolos a grandes velocidades. Porque lo de las grandes velocidades, esto es debido a que se ahorran lo maximo de entradas posibles, se prende de una fila a la vez, pero si pasa rapido no lo nota el ojo.
Ya si te das cuenta una minuscula 3x3 requiere 6 botones. Una 16 x 32 demaciados por eso se usan microcontroladores memorias, etc.

Ya ahora lo que podrias hacer sin memorias sin nada solo con ledes resistencias y botones es lo que te mostre arriba la matriz con botones, pero eso solo te dejaria prender lineas puntos o cosas asi lo que creo que no es la idea.

Otra cosa que se me ocurre es usar Ci 555 que son super comunes, y hacer como un efecto de barrido una linea que suba y que baja. Se prenden todas las linas una despues de otra.

Por eso dime especificamente que quieres hacer porque prender letras sin algun controlador lo veo imposible.
 
Última edición:
Bueno si usas el mismo codigo de arriba agarras un bloc de notas lo llenas de 0 como leds tengas, luego escribes tu mensaje al revez. Luego lo cortas cada 16 numeros tal como el ejemplo

0010001011111001------0100011100000010 Fila 1 SIN LOS ---- es solo para ordernar los trozos de 16
0001001000001001------1100100010000010 Fila 2
0000101000001010------1010100010000010 Fila 3
0001111000111010------0010100010011110 Fila 4
0010001000001010------0010100010100010 Fila 5
0010001000001010------0010100010100010 Fila 6
0001111011111010------0010011100011110 Fila 7

Despues lo mandas por el orden que debe tantas veces como tu necesites

aux = %0001001000001001 AQUI EL PRIMER TROZO DE FILA 1
Gosub escribo
aux = %1100100010000010 AQUI EL SEGUNDO TROZO DE FILA 1
Gosub escribo
fila1 = 0 AQUI PRENDO LA FILA X
WaitMs 2
fila1 = 1 AQUI APAGO FILA X


Con lo anterior tienes el texto estatico, para que se desplaze agrega esto:

Antes del loop declaras los trozos desde el inicio:
contador=31 IMPORTANTE AQUI VA CUANTOS NUMEROS DE LARGO TIENE -1 En este caso 31
fila1trozo1=% AQUI LOS 0101010
fila1trozo2=% AQUI LOS 0101010
Aqui van los trozos que faltan

Inmediatamente despues del loop:

if (contador>0) then
fila1trozo1=ShiftRight(fila1trozo1, contador)
fila1trozo2=ShiftRight(fila1trozo2, contador)
Aqui van los trozos que faltan

else
fila1trozo1=ShiftLeft(fila1trozo1, contador*-1)
fila1trozo2=ShiftLeft(fila1trozo2, contador*-1)
Aqui van los trozos que faltan

ENDIF

Esto antes del Goto Loop:

if (contador > -31)
contador = contador-1
else
contador=31
ENDIF

No he probado este ultimo codigo pero deberia servir
 
Última edición:
Atrás
Arriba