TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: aitopes en 10 de Junio de 2006, 16:00:58

Título: Dudas con 74LS164
Publicado por: aitopes en 10 de Junio de 2006, 16:00:58
Hola amigos!

Estoy por armar una matriz de leds de 7x32, y pienso usar el 74LS164 como registro de desplazamiento de las columnas. Cada fila iria a un pin del PORT B del PIC, y meteria los datos por una de las entradas del 74LS164, mientras que la otra la pondria a +V. El pin de reset a otro pin del PIC (por si se me ocurre resetear en algun momento todo el display) y las ocho salidas paralelas del 74LS164 a 8 columnas del display (digamos de la 0 a la 7).
Ahora viene la duda: si pongo la ultima salida (Qh) del 74LS164 a la entrada del siguiente (ademas de conectarlo a la columna 7, claro!), bastaria para que el dato se "propague" al integrado siguiente? O me hace falta algun buffer al medio :? ? Por supuesto, todos los pines de clock y reset (de los 4 74LS164) irian conectados juntos.

Se que es una pregunta tonta, pero no me quiero poner a hacer un PCB sin estar seguro... :shock:

Gracias! :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: patolinec en 10 de Junio de 2006, 18:54:18
Es correcto lo que tu piensas hacer, pero para tu seguridad podrias utilizar el Circuit Maker que es extremadamente bueno para la simulacion digital pero eso querria decir que tu utilizarias 4 74ls164 para el corrimiento de las habilitaciones cuadno pudieras cambiar a un sistema de 7x8x4, donde pudieras controlarlos perfectamente con un 16f871, en los cuales todos irian al pic y no usarias integrados adicionales y utlizarias el mismo principio de multiplexacion sino que ademas tendirias que manejar un control mas, en pocas palabras yo pienso que es mejor hacer una matriz tridimensional
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 10 de Junio de 2006, 20:15:16
Hola amigo!
No es mala la idea que propones (de usar todos los pines para el control de la matriz).
Pero yo pensaba dejar en el borde de la tarjeta un conector con el bus (D0-D6, clock, reset) para poder "enganchar" otra(s) igual(es) y expandir el sistema. No tengo el circuit maker ( :( me gustaria me comentaras un poco mas de el, suena interesante lo me cuentas de la simulacion) ni un soft para el dibujo de circuitos, cuando pueda scanear el dibujo de mi circuito voy a ver de publicarlo para que lo critiquen un poco.. :)

Gracias por la ayuda.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: Alvarikokex en 10 de Junio de 2006, 21:32:13
Hice el un diseño similar, con registros de desplazamiento y buffer ULN de 8 salidas para aprovechar el que un 74164 tiene 8 salidas tambien y funciona. lo hice en protoboard y ya tengo el diseño en eagle para dos capas.

primero activas el clear de todos los 74164, despues la linea de data del 74164 tienes que ponerla en 1 y darle un clock y luego bajarla a 0 para activar una sola linea a la vez. se deben generar tantos clocks como columnas tenga el arreglo. en mi diseño deje una linea de carry out para conectar mas arreglos de matrices en cascada.

en el foro hay una libreria en c para pic para la generacion de caracteres 5x7.

para un arreglo matricial tridimencional, se logra con un solo arreglo de muchas columnas y se pliegan en capas como acordeon formando un cubo. es una forma de hacerlo, pero siempre hay otras.
Título: Una recomendacion
Publicado por: akira_ve en 10 de Junio de 2006, 22:06:47
Hola amigo...te recomiendo algo mejor.................la compañia allegro, prabrica registros de desplaamiento, con buffer integrados............para casos como estos......asi no tendrias la limitante de tan`poca corriente que controlar o tener que usar un uln2003 o un uln2803....pues ellos traen integrado un similar.....no recuerdo un modelo dejame buscarlo y te quisas te de el datasheet.................pero donde pocrias encontrar unos rapido??
Muy facil..en las impresoras de chorro de tinta aun mas en las primeras versiones de muchas compañias como canon, hp, lexmark............usan estos registros de desplaamiento para activar los inyectores de los cartuchos.................y tiene jajajaj.............has 32 salidas...........encontraras en la pagina de hasta 64 salidas.....osea un registro de desplazamiento de 32 o 64 salidas :shock: :shock: :shock:.pero tambien puedes conseguirlo en electronicas de UPS marca APC..........en los modelos de 800 VA en adelante pues los usan para.........mostrar en el panel de control, niveles de carga de salida del UPS..........y otras funciones......................
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 11 de Junio de 2006, 00:21:05
Hola. Te recomiendo que uses 74HC4094 para el desplazamiento de los datos de las columnas ya que poseen latch interno y tienen 2 pines para conexion en cascada.
Y ULN2803 o ULN2003 a las [Q0;Q7] de los 74HC4094 para ganar corriente de GND.
Al menos asi hice una matriz de 7x80 y se ve perfecto.Saludos.
Título: Re: Dudas con 74LS164
Publicado por: patolinec en 11 de Junio de 2006, 01:23:39
Totalmente de acuerdo con todas las opiniones, yo te pronio de un arreglo tridimensional por la construccion de l PCB ya que si te das cuenta el uso de algunos integrados incrmenta el tamaño del mismo y si en vez de usar 4 integrados ocupas 4 transistores 2N2222A el PCB se reduce y un transistor cuesta 10 centavos mientras el 74LS164 mas de 50 centavos y en una produccion alta cada centavo cuesta, esa es mi opinion ahora es decision tuya escoger la mejor opcion que solucione tu problema, saludos y espero que cuentes como te fue
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 11 de Junio de 2006, 14:28:30
Hola! :)

Ante todo, gracias por las respuestas!   :-/
Les cuento que los 74LS164 ya los tenia, por eso fue la eleccion en primer lugar. En segundo, los costos de produccion alta no me preocupan demasiado por que soy un hobbysta, asi que dudo que haga mas de uno o dos (para ver como se comportan las 64 columnas). Lo pienso usar para jugar un poco y parender, nada mas :).
Estoy usando una version de BASIC, y pensaba meter el texto  a mostrar en una tabla, con una rutina que me genere los caracteres, esto no es muy complicado  8).
El PIC 16F628A deberia ser suficiente, aunque el primer prototipo lo voy a montar conectando el display (esta listo) y su placa controladora (a mitad de camino, es la que contiene los 74LS164 y se monta a 90 grados de los leds, me sirve de "base" para sostener el display, mas adelante la podria poner en "sandwich" con el display para lograr algo mas delgado) :) sera una que tengo armada tipo modulo con un 16F877/4Mhz.

Si hay interes (aunque creo que todos ya han resuelto esto antes) cuando este listo puedo ver de publicar los esquemas, alguna foto y el dibujo de los PCB (hechos con el Paint Sho Pro.....lo siento!) :?.

Saludos, y buen domingo.
Título: Re: Dudas con 74LS164
Publicado por: patolinec en 11 de Junio de 2006, 16:36:35
MMM pues me disculpo con todos, ayer en la noche en una exaustiva conversacion con mi almuada me di cuenta que de todas formas si es mejor el uso del 74LS164, asi que lo que decia antes solo lo pongo como alternativa pero no como mejor opcion
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 11 de Junio de 2006, 19:26:36
Esta disculpado.... :)

No puse transistores en cada salida del 74ls164 por que nunca va a tener que manejar mas de un led a la vez...
Si ponia en "alto" todas las filas a la vez, me podia llegar a pasar (no lo probe) que como en algunas columnas iba a haber mas leds encendidos que en otras, el brillo no iba a ser parejo, por lo que una vez seleccionada la columna, voy eligiendo las filas de a una. Repito esto una serie de veces a gran velocidad antes de pasar a la segunda, y asi sucesivamente.

Saludos. :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 11 de Junio de 2006, 20:56:04
Ok amigo pero el uso de los registros de desplazamiento que te digo es facil y rapido.........ademas que la alimentacion de la parte logica y la salida de potencia es separada...............pudiendo hacer parpader los led.............pues es facil de usar los utilize varias veces................
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 12 de Junio de 2006, 07:21:43
Seria cuestion de aprender mas sobre eso!  :)

La empresa es Allegro, pero...te acordas del codigo del chip? Como para ir buscando la hoja de datos....

Saludos, y gracias!  :mrgreen:
Título: Toma la pagina
Publicado por: akira_ve en 12 de Junio de 2006, 19:13:59
Bueno amigo entre a la pagina y si ves........veras que es facil controlarlo.....en esta direccion.....http://www.nuhorizons.com/Linecard/allegro.html..........selecciona..LED DISPLAY DRIVERS..........por ejemplo mira el 6275 un registro de desplazamiento de 8 salidas el 6276 de 16 salidas.de todas maneras revisa la pagina.............espero que te sea util
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 13 de Junio de 2006, 07:27:22
Hola Akira_ve!
Estuve mirando la pagina de Allegro (gracias!), en particular el A6276 (16-BIT SERIAL-INPUT, CONSTANTCURRENT LATCHED LED DRIVER).
Esta pensado especialmente para manejar leds, y tiene 16 salidas (el chip tiene 24 pines). Me gusto que alimentado con 5 volts funciona a 20 MHz :o! Es muy buena velocidad para las aplicaciones como las que estamos hablando.
Pero como decia antes, tengo los 74LS164, asi que esta vez voy a usarlos. Pero realmente, es una alternativa a tener en cuenta.

Supongo que si el trabajo me lo permite, hoy voy a construir el PCB que aloja la logica de control del display (basicamente, los 4 74LS164 y conectores). La placa con los 7x32 leds ya la tengo montada, y la placa del PIC tambien, por que uso un modulito que construi hace tiempo. Respecto del software...lo tengo resuelto "en la cabeza", espero que no me surjan problemas :(.

Saludos!  :mrgreen:

Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 13 de Junio de 2006, 07:36:12
Hola. Te tiro un par de "tips" que por ahi te sirvan ya que hice una matriz parecida a esta(un poco mas grande):

Primero: Al refresco de la matriz debes hacerlo siempre por el eje que menor cantidad de elementos contenga, es decir:
si tu matriz es de 32x7, entonces al refresco hacelo por Filas y no por Columnas.

Segundo: Seguramente 5V no sean suficiente para obtener un buen brillo en todos los leds, necesitas elevar el voltaje(yo lo tengo en 14.4V aprox) ya que como el tiempo de encendido se reduce bastante, hay que elevar voltaje para forzar a los leds a que respondan(enciendan) mas rapidamente.

Tercero: Si los IC que decidas utilizar para el desplazamiento de los datos poseen latch interno, aprovechalo y desperdicia un pin mas para el STROBE. Esto va a reducir el parpadeo de los leds durante el refresco.

Cuarto: No se que pensas hacer con la matriz, pero el soft puede ser algo rebuscado, entonces: exitos con el soft.
Saludos.
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 13 de Junio de 2006, 09:42:40
Hola!
El tema del voltaje lo habia tenido en cuenta. Por lo pronto, 7x32 no son tantos LEDs, pero seguramente voy a necesitar mas de 5V para tener un buen brillo.
Respecto a "que voy a hacer con el proyecto"....no he pensado nada, solo pasar algun texto por el. La idea es solo aprender un poco, y divertirme con este hobby.
Igualmente, deje prevista la ampliacion simplemente "enganchando" otro(s) displays como este a la salida del primero por si quiero hacer textos mas largos.
En principio, se me habia ocurrido mostrar la hora/temperatura en el, y ponerlo sobre el banco de trabajo mas que nada como adorno...  8)
Cuando dices "al refresco hacelo por Filas y no por Columnas" te refieres a:
1) Elegir la columna
2) Poner el dato de las filas?

O al reves? (soy medio cabeza dura! :()

Saludos, y gracias.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 13 de Junio de 2006, 17:29:46
Ups! :lol:

Se me acaba de ocurrir.....sera muy complicado utilizar el display de 7x32 como "analizador de espectro"? MEe stoy refiriendo a esos "cosos" que son como varios vumetros, uno que responde a cada frecuencia del sonido... se entiende?

Sera MUY complicado? :shock:

Salutes.
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 13 de Junio de 2006, 17:31:30
bueno amigo no es cosa del voltaje...............es mas de la corriente pues por si no lo sabias hay cantidad de controladores de display a led que trabajan a 5 voltios.......y exsten para hasta 8 displays :shock: :shock: :shock:.es cosa de saber jugar con los tiempos.recuerda que hay que dejar un tiempo de persistencia, pues el ojo humano no puede segir parpadeos tan rapidos....................asi que suerte mi pana
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 13 de Junio de 2006, 17:39:57
Es posible amigo hace mcuhos años en la universidad.....un personaje en el mucillo de la eletronica..............iso algo parecido.claro muy complicado...pues no se disponia de lo que se tiene el la actualidad a nuestro alcanse
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 13 de Junio de 2006, 19:06:32
Y si! Sin PIC es mucho mas complicado:  8)

Me imagino usando una "coleccion" de LM3914N o LM3915N, uno por columna, y filtros en base a operacionales para cada columna tambien...Quedaria barbaro, pero necesitas una bolsa de chips. Y cuanto mas componentes usas, mayor la posibilidad de que algo no ande bien.. :?

Saludos!  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 13 de Junio de 2006, 19:59:08
Hola. El fundador y dueño del foro: Todopic ha hecho hace años una matriz de led con texto que se desplaza sin utilizar microcontrolador jeje...y segun me ha comentado ha renegado mucho. La he visto y la verdad que no tiene nada que envidiarle a una con PIC.

Con respecto al refresco:Cargas(envias a los registros shift) los valores de las 35 columnas, y luego enciendes una de las filas. Luego cargaras otros 35 bits en los registros shift y encenderas a otra fila y asi sigue...
Resumiendo:

1)Poner datos en la columna
2)Encender fila correspondiente

Si tus registros de desplazamiento poseen latch interno, utiliza ese metodo.Mirandolo mas detallado seria asi:

1)Cargar los 35 bits de manera serial para las columnas(enviados a travez de CLOCK y DATA);
2)Apagar todas las filas;
3)Enviar un pulso de STROBE(no deberia durar mas de 1us);
4)Encender la fila correspondiente a los datos cargados en los registros de desplazamiento;

Saludos.


Título: Re: Dudas con 74LS164
Publicado por: aitopes en 13 de Junio de 2006, 22:11:52
Hola Bruno!
Ya he entendido la idea. No va a haber problemas en hacerlo de la forma que me explicas.
Los 74LS164 no tienen strobe, pero no va a ser un problema. 8)

Respecto de TodoPic...soy nuevo en el foro y no lo conozco, pero si saco andando un display de este tipo sin microcontroladores, es alguien que merece todos mis respetos!  :-/

Saludos, y gracias por las ideas que me das.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 14 de Junio de 2006, 10:19:00
Bueno.....si en una Jornada de estudiante de electronica, en la que asisti cuando era estudiante....alli en medio de tantos trabajos estaba un anuncio pequeño hecho con LED tenia el largo de un calculadora casio FX880 pero no usaba micros......todo lo hacia, pro medio de eprom, Ram y compuertas.........era barbaro verlo con esa cantidad de integrados....aun hoy verlo debe ser admirable por lo relativamente conflidado el diseño amigo cuando...............logres encender aunque sea un LED nos avisas..............pues esto esta algo intenso
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 14 de Junio de 2006, 10:57:17
Bueno...imposible no es... :mrgreen: :mrgreen:
Dos imagenes del que hice yo:
(http://ar.geocities.com/brunodini/matrizleds.jpg)


(http://ar.geocities.com/brunodini/circuito.jpg)


Exitos!
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 14 de Junio de 2006, 11:15:56
Bien! Muy buena la foto. :)
Yo ya tengo todo montado, sobre tres placas: una con los leds, y a 90 grados otra con la logica de control (los 74LS164). La tercera es la del micro y sus componentes, conectada con cable plano a la segunda que mencione.
Estoy por comenzar con el soft, y aca caigo en un "problema"  :shock:: Me decian que es mejor (y yo tambien ahora me doy cuenta de eso) para evitar parpadeos actualizar el display en 7 pasos, uno por fila, en lugar de en 32 (uno por columna). Pero yo diseñe todo para hacerlo de la segunda manera, de forma que nunca tenia mas de un led encendido en cada fila (el correspondiente a la columna seleccionada), por lo que conecte las filas directamente a pines del pic. Si hago la actualizacion por columnas, en el peor de los casos puedo tener 32 leds conectados al pin del micro, con lo cual seguramente va a morir. Lo ideal seria poner el medio una etapa con transistores o un ULN200xA, que haga de buffer. Supongo que probare si todo anda de la forma que habia pensado al principio, y luego rehare la segunda placa (la de los 74LS164) para incluir la etapa de potencia para los leds..... :?

Salutes.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 14 de Junio de 2006, 11:52:11
Hola aitopes.
Bueno...vas a tener problemas...Si haces el refresco de la otra forma a la que te comente, vas a ver que: probablemente ni con las luces apagadas veas los LEDs encendidos. Entonces vas a decir: "debo darle mas tiempo de encendido a los leds para que aumente el brillo" y lo haras, y entonces veras que los leds ganan brillo pero comienzan a parpadear(obviamente porque se produce un fps demasiado bajo).
Asi que vas a optar por la forma que te comente, para esto necesitas elevar tanto el amperaje y voltaje(si usa leds comunes no ultrabrillo) de las filas(con ULN2003+transistores), como el amperaje de las columnas(con ULN2803).

Una imagen dice mas que mil palabras dicen, asi que fijate en esta foto, tomada con las luces completamente apagadas, la diferencia en brillo si utilizas refresco por columnas, en contraste a la foto que publique en mi post anterior, en las cual las refresco por filas y con las luces de la habitacion encendidas:


(http://ar.geocities.com/brunodini/refreshxcolumnas.jpg)


Saludos


Título: Re: Dudas con 74LS164
Publicado por: aitopes en 14 de Junio de 2006, 12:03:55
Estoy seguro que es como dices. :?
Me queda la esperanza que al ser solo 32 columnas, algo se vea. Y despues, a hacer PCB nuevo.  :(
Saludos. :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 14 de Junio de 2006, 12:05:03
Pero yo diseñe todo para hacerlo de la segunda manera, de forma que nunca tenia mas de un led encendido en cada fila (el correspondiente a la columna seleccionada), por lo que conecte las filas directamente a pines del pic.

Bueno...con respecto a eso:
Si tenemos en cuenta que, generalmente un puerto(el puerto B supongamos) del PIC no entrega mas de 130mA maximo, podras sacar la cuenta que teniendo 7 leds conectados al puerto, entregarias 18mA maximo a cada led(suponiendo los 7 encendidos a la vez). Ya estas rozando el limite o estas por debajo de este.
Si ahora le sumamos que, en la practica, las cosas no salen tan bonitas como en la teoria(lamentablemente), vas a comprobar que cuando envies los 5V a cada led, ni siquiera van a encender tan fuertes como deberian con esos 18mA. El motivo: que en realidad hay 32 leds conectados(por mas que no esten encendidos los otros 31) a cada pin del puerto del PIC y al ser muchos y, a la vez, diodos, se van "morfando" cada uno de ellos poco a poco los tan ajustados mA que necesitas para encender dignamente 1 led de los 32 de cada fila...

Exitos!
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 14 de Junio de 2006, 18:53:22
Eso, es sierto tienes que tomar en cuenta la potencia requerida............pues lo bueno del ULN2003 es que puede manejar 600 mA
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 15 de Junio de 2006, 01:49:38
Hola Akira!
Ya he decidido que mañana, cuando tenga un rato, voy a hacer un programita tonto que barra el display y los encienda asi como esta, solo para comprobar que no sirve el diseño, ya que cada columna va a estar encendida 1/32 (maximo) del tiempo, con lo cual el brillo tambien va a ser 1/32 del brillo normal de un led (una porqueria, vamos!  :? ).

Asi que la segunda version del PCB va a tener que llevar o un ULN2003 (quizas quede un poco justo...32 leds * 18mA = 576mA) o algun transistor para 60V 1A, quizas alguno de la serie BD13x, es cuestion de mirar un poco las datasheet.

Justo me agarra medio complicado de trabajo, y no puedo meterme de lleno con esto (a veces un hobby quiere tomar mas tiempo que el tiempo libre, ja ja ja!)

Saludos, y gracias por tu ayuda.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 15 de Junio de 2006, 13:09:53
Bueno amigo por algun lado se debe comenzar..................pero poco a poco....infelizmente no todo sale como uno quiere.........suerte
Título: Re: Dudas con 74LS164
Publicado por: jfh900 en 15 de Junio de 2006, 15:57:07
Habeis visto este circuito?

http://www.interq.or.jp/japan/se-inoue/e_pic6_2.htm

Un saludo.
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 15 de Junio de 2006, 19:07:44
Hola JFH!
Basicamente es lo que hice, con 74LS164 en lugar del multiplexor que usan ahi.
La diferencia es que yo me "olvide" los transistores, al suponer erroneamente que podia encender los leds de a uno....no me di cuenta que el tiempo de encendido iba a ser insuficiente para ver algo...  :(

Gracias por el link! :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 19 de Junio de 2006, 19:05:30
Hola!
Bueno, despues de un par de dias de "vacaciones" de la electronica, monte todas lasplacas y ...efectivemamente, tal como habian pronosticado, el brillo de los leds da pean!  :?

Voy a comenzar a trabajar para hacer un PCB con 7 transitores de potencia, uno para cada fila, y luego ir barriendo las filas a la vez que "cargo" los datos de las 32 columnas en los 74LS164. Los mentengo al tanto de mis progresos.

Saludos, y gracias por las ayudas que recibi.
Título: Re: Dudas con 74LS164
Publicado por: patolinec en 20 de Junio de 2006, 00:24:53
Je je exactamente el mismo problema aitopes, cuando mando a encender algunos LEDs de la misma columna o sorpresa no encienden a la misma luminosidad, pero creo que tya le estoy atinando al problema, incluso creo que se podrian controlar los LEDs sin resistencias limitadoras ya que la frecuencia de trabjo asi lo permite, pero aun hya que analizar

Ahi les cuento que pasa
Título: Re: Dudas con 74LS164
Publicado por: BrunoF en 20 de Junio de 2006, 05:22:35
patolinec, el problema de no poner resistencias limitadoras, es que si alguna vez el programa del pic se cuelga, y queda colgado justo de manera tal que este excitando algun/os LED/s, pues podes olvidarte de ellos.
Saludos.
Título: Re: Dudas con 74LS164
Publicado por: patolinec en 20 de Junio de 2006, 13:00:46
era exactamente lo que pensaba, pero estoy buscando la forma de vitarlo haciendo un control de la corriente que sale del micro y si la corriente supera a la normal pues que se restetee estoy en esas cualquier cosa comentare :lol:
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 21 de Junio de 2006, 07:39:36
Muy bien Patolinec!

Un circuito de ese tipo puede servir para muchos proyectos  8).

Suerte con el!  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 22 de Junio de 2006, 21:22:53
Mañana les subo un diseño que ise con un display y unos led..........y veran que si se puede usar una unica tension de 5 voltios.........quiciera ayudarlos con eso de la intensidad de iluminacion..........por favor podrian mostrame como tienen hecho todo???
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 23 de Junio de 2006, 08:48:49
Hola Akira!
Voy a ir a escanear mi cuaderno (el que uso para dibujar mis esquemas) y lo comparto. Desde ya, aclaro que es el esquema que no me funciono  :shock:, pero que agregando unos transistores como  te voy a contar cuando ponga el circuito, se soluciona. :mrgreen:

Ya se! Soy un antiguo dibujando esquemas en papel, pero....no tengo softwre para esas cosas... :?

Saludos!  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: akira_ve en 24 de Junio de 2006, 20:16:54
Ok mi pana..................no he tenido tiempo.....pero subire el esquematico.........mientras mas ayudemos....mas rapido.estara tu diseño
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 16 de Julio de 2006, 07:32:32
Hola amigos!
Despues de unos dias sin aparecer por aca, les cuento que al final el proyecto quedo funcionando perfectamente, con buena intensidad luminosa en los LEDS y sin parpadeos. :-/ :-/ :-/

Les adjunto una foteja del display funcionando.
En un rato posteo el esquema, y alguna foto mas.
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 16 de Julio de 2006, 07:48:55
Otra foto, esta vez de la parte de atras de la placa de LEDS. Se ve uno de los 74LS164N, y los cablecitos que llevan la señal desde la controladora a las filas.
Podria haber usado esas matrices de leds de 5x7 , y me ahorraba muchas soldaduras, pero no las consegui (vivo en una ciudad pequeña)  :?
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 16 de Julio de 2006, 07:55:07
Bien, aqui esta el esquema. Los dip-switch son por si me decido a programar la conexion con el PC, via RS-232 (ver el transistor, diodo, etc en RB1). Me permitirian conectar hasta 16 placas de estas y envir comandos a cada una de acuerdo al codigo seleccionado en los dips. No hay mucho mas para comentar.

Eso si...acepto sugerencias, criticas e ideas nuevas!  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: elesep en 26 de Julio de 2006, 17:48:17

HOLA!!

Muy buen Proyecto aitopes, he leido todos los mensajes de este tema y creo que has logrado un interesante proyecto, pero me gustaria si puedes explicar un poco el funcionamiento del circuito, por ejemplo como lo haces para mostrar en el tercer 74ls164N (contando de derecha a izquierda), algun caracter por ejemplo la letra A, me ha interesado mucho el proyecto y empezaré a fabricar mi propio panel.

Título: Re: Dudas con 74LS164
Publicado por: aitopes en 27 de Julio de 2006, 12:03:00
Hola Elesep....a ver si esto te sirve para entender un poco mas el proyecto:

Por razones de comodidad, el proyecto se distribuyo sobre tres placas de circuito impreso diferentes. La primera de ellas, encargada de la alimentación, control lógico y la comunicación con la PC es la que incluye el PIC, corazón del proyecto. Además, en ella se encuentra la etapa de alimentación, excepto el transformador, llave y fusible que deberán alojarse en el gabinete que contenga esta placa. La alimentación esta basada en un regulador de voltaje LM7805, capaz de entregar 500mA sin disipador, y hasta 1A si lo refrigeramos convenientemente. Si sacamos algunas cuentas, veremos que gracias al multiplexado nunca debería haber más de una fila encendida al mismo tiempo, que en el caso más desfavorable tendría 32 leds encendidos. Cada LED consume unos 15 miliamperes (5V / 330 ohms = 0.015A), por lo que el consumo de la “pantalla” es de 0.015 x 32 = 480mA, si esto sumamos el consumo del resto de la electrónica, el consumo total ronda los 600mA. El LM7805 de mi prototipo apenas se entibia sin utilizar disipador.
El PIC se encarga de generar los pulsos de CLOCK y DATOs (pines 17 y 18) que son enviados a la placa que tiene los conversores serie-paralelo 74LS167N. También tiene la posibilidad de conectarse a una PC vía RS-232 (ver mas adelante) y controla los drivers que proveen la corriente que alimenta cada fila del display. Como la corriente es muy elevada para ser entregada directamente por el PIC, se incluyeron 7 transistores BC327 para esta tarea.
Se utilizo un cristal de 4MHz y dos capacitores de 22 nF para generar los pulsos de reloj del micro en lugar del reloj interno, para lograr una mejor estabilidad con la temperatura, ya que en caso se utilizar la conexión RS-232 la velocidad es un tema delicado.
La segunda de las placas, que se conecta mediante un cable plano a la primera, es la encargada de controlar el display. Recoge los pulsos de CLOCK y los datos provenientes de la placa controladora vía el cable plano, y energiza las columnas que correspondan. Los 74LS164N se conectan a cada columna a través de una resistencia de 330 o 390 ohms. Si se quiere aumenta el brillo de los LEDS, pueden reemplazarse por resistencias de 220 ohms (o incluso menores), pero asegurándose que el tiempo de encendido de los leds no pase de unos milisegundos por vez para evitar su envejecimiento prematuro. También hay que prestar atención al consumo de corriente total, y posiblemente cambiar los transistores BC327 por BC640, capaces de manejar corrientes mas elevadas.
Por ultimo, la placa mas sencilla, pero a la vez mas laboriosa desde el punto de vista constructivo es la “pantalla” propiamente dicha, ya que esta formada por 224 diodos LEDs. Esta placa recibe las señales de control provenientes de la placa de los 74LS164N mediante pines de bronce que le otorgan soporte mecánico y eléctrico simultáneamente, y mediante 7 pequeños cables que son los encargados de seleccionar la fila que vamos a iluminar.

Sigo en el proximo post.
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 27 de Julio de 2006, 12:06:17
Continuacion...

Programación:
La parte del software es la que seguramente nos costara mas trabajo, pero los resultados bien valen la pena.
Mas adelante adjunto el listado correspondiente al programa que genera el texto “POWER” para que sirva de ejemplo, pero la idea es que cada uno realice su propio software utilizando como punto de partida las ideas y datos que expondremos a continuación.
Como dijimos antes, la pantalla esta formada por una serie de filas y columnas. La intersección entre ambas contiene un LED. Para que este encienda, tiene que recibir simultáneamente un “0” en la fila, y un “0” en la columna.

La forma de generar un mensaje sobre el display es relativamente sencilla, si nos atenemos al siguiente algoritmo:

1)   Apagar todas las filas, escribiendo un “1” en PORTB.0 y PORTB.2 al 7
2)   Escribir los valores correspondientes a la primer fila en el registro de desplazamiento, teniendo en cuenta que el primer digito binario colocado corresponde al ultimo LED de la fila, y el ultimo en poner al de la primer columna.
3)   Poner un “0” en la primer fila (PORTB.0 = 0), esperar un tiempo, y volver a apagarla con PORTB.0 = 1.
4)   Repetir los pasos para las filas 2 a 7.

Los tiempos de demora que utilizamos en el programa de ejemplo permiten una visualización correcta, sin molestos parpadeos y con los LEDS brillantes. Hay que tener en cuenta que si utilizamos tiempos mayores para el encendido de cada fila, el brillo de los LEDS será mayor, pero también aumentara el parpadeo.
No utilizamos vectores ni otras alternativas que hubieran servido para crear un codigo mas compacto, buscando la claridad del programa, para que pueda servir como base a otros mas completos/complejos.



El registro de desplazamiento:
Vamos a detenernos un momento para explicar como se introducen los datos en el registro de desplazamiento. Lo primero a tener en cuenta es que los datos deben entrar de izquierda a derecha, es decir, el primer dato que introduzcamos sera “empujado” por los que vienen detrás hasta llegar a la ultima columna. En segundo lugar, hay que saber (recomendamos la lectura de la hoja de datos del 74LS164N) que el dato ingresa al registro en el momento que se produce la transición de “0” a “1” del pulso de CLOCK, por lo que se deberán seguir los siguientes pasos para ingresar cada uno de los 32 valores correspondientes a cada fila:

1) Fijar el valor del dato a escribir (   si DATA es 1, hacer PORTA.1 = 1, si no PORTA.1 = 0)
2) Esperar un par de microsegundos (WaitUs 2)
3) Poner la línea de CLOCK en estado bajo (PORTA.0 = 0).
4) Esperar un par de microsegundos (WaitUs 2)
5) Poner la línea de CLOCK en estado alto (PORTA.0 = 1). En este punto el dato entra efectivamente en el registro de desplazamiento.
6) Esperar un par de microsegundos (WaitUs 2)
7) Fin

Los tiempos de demora de dos microsegundos funcionan, pero se puede experimentar un poco con ellos, dado que según la hoja de datos la frecuencia máxima de trabajo del 74LS164N es de 25MHz., por lo que demoras menores deberían trabajar bien. (probe SIN el Waitus, o sea sin demora, y anda ok...).
Con estos tiempos, la escritura de los 32 bits de una línea demora unos 350 microsegundos, tiempo más que aceptable.

En el código fuente se puede ver que por cada línea a escribir en la pantalla se utiliza un bloque como el siguiente         


aux = %0010001011111001
Gosub escribo
aux = %0100011100000010
Gosub escribo
Fila1 = 0    
WaitMs 2
Fila1 = 1    
Goto loop
End

Básicamente, se llama dos veces a la subrutina “escribo” que comentaremos en un momento, con 16 bits en la variable “aux”.
Luego se enciende la fila escribiendo un “0” en el pin apropiado, se esperan un par de milisegundos, se apaga escribiendo un “1”, y se pasa a la fila siguiente.
La subrutina escribo se encarga de procesar el contenido de la variable “aux”, bit por bit, viendo si son “0”o “1” y escribiendo el dato correspondiente en el registro de desplazamiento. La instrucción “aux = ShiftLeft(aux, 1)” se encarga de rotar los 16 bits de la variable a la izquierda, para tomar el bit siguiente.

Sigo...
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 27 de Julio de 2006, 12:09:09
Código fuente
A continuación, el código fuente de ejemplo, en el BASIC del PIC Simulator IDE. Seguramente es 100% compatible con Proton u otros BASIC mas conocidos... E


'----------------------------
'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


Por supuesto, el uso de vectores o matrices servira para hacer mas compacto el soft, pero me parecio mejor no usarlos para que se entienda bien el principio.... Espero te haya servido de ayuda. Cualquier duda, me preguntas.


Saludos! :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: elesep en 27 de Julio de 2006, 13:55:40
Hola Aitopes

Muchas Gracias por la explicación, me ha quedado mucho mas claro todo el funcionamiento, y ahora que he resuelto mis dudas me pondre a hacer mi letrero luminoso, espero poder colocar mis avances, y denuevo dar las gracias has sido muy claro y preciso en tus explicaciones.

Saludos  Elesep
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 27 de Julio de 2006, 15:51:03
Estoy trabajando de a ratos (libres y pocos) en el generador de caracteres y conexion con la PC. Tengo implementados tambien algunos efectos de animaciones... Cuando pueda, los pongo aqui.

Saludos.  :mrgreen:
Título: Re: Dudas con 74LS164
Publicado por: elesep en 27 de Julio de 2006, 19:30:07

Estaremos esperando esas animaciones que de seguro van a estar a la altura del proyecto que has realizado.

 Saludos.  :-)
Título: Re: Dudas con 74LS164
Publicado por: aitopes en 27 de Julio de 2006, 19:54:09
Hola!
En realidad, las animaciones no son (al menos en teoria) demasiado complicadas. Te cuento lo que pense, por si queres ir haciendo algo:

Scroll vertical:
Simplemente, rotar entre si las filas: Fila0 --> Fila1, Fila1 --> Fila2, ....Fila6-->Fila0. Si queres el el cartel "aparezca" o "desaparezca" en lugar de rotar sobre si mismo, se pueden agregar 7 filas "virtuales" llenas de "1", lo que se verian como una fila completa apagada.

Scroll Horizontal:
El registro de dezplazamiento compuesto por los 4 74LS164N tiene 32 bits de largo. Si ponemos mas bits, los que entraron primero no se veran (por que seran "empujados" fuera de la pantalla). Si queremos realizar un scroll hacia la izquierda (es lo normal en estos letretros), podemos meter el texto (los 32 bits a mostrar, o mas si el texto es mas extenso) y luego 32 "1" para que el cartel se vea vacio. Despues de unas decimas de segundo, repetir todo pero con solo 31 "1"s, de manera que se vea al final del cartel la primer columna de nuestro texto. Seguir esperando y reduciendo la cantidad de "1"s de relleno hasta llegar a cero, con lo que se veran las 32 columnas de nuestro texto.

En fin, hay que ver si no me equivoco en nada, y por supuesto, codificarlo.

Saludos.
Título: Re: Dudas con 74LS164
Publicado por: REYES12 en 19 de Agosto de 2014, 16:19:05
Hola!
En realidad, las animaciones no son (al menos en teoria) demasiado complicadas. Te cuento lo que pense, por si queres ir haciendo algo:

Scroll vertical:
Simplemente, rotar entre si las filas: Fila0 --> Fila1, Fila1 --> Fila2, ....Fila6-->Fila0. Si queres el el cartel "aparezca" o "desaparezca" en lugar de rotar sobre si mismo, se pueden agregar 7 filas "virtuales" llenas de "1", lo que se verian como una fila completa apagada.

Scroll Horizontal:
El registro de dezplazamiento compuesto por los 4 74LS164N tiene 32 bits de largo. Si ponemos mas bits, los que entraron primero no se veran (por que seran "empujados" fuera de la pantalla). Si queremos realizar un scroll hacia la izquierda (es lo normal en estos letretros), podemos meter el texto (los 32 bits a mostrar, o mas si el texto es mas extenso) y luego 32 "1" para que el cartel se vea vacio. Despues de unas decimas de segundo, repetir todo pero con solo 31 "1"s, de manera que se vea al final del cartel la primer columna de nuestro texto. Seguir esperando y reduciendo la cantidad de "1"s de relleno hasta llegar a cero, con lo que se veran las 32 columnas de nuestro texto.

En fin, hay que ver si no me equivoco en nada, y por supuesto, codificarlo.

Saludos.

Que tal soy nuevo por aca pero he leído este tema del foro y me interesa mucho trate de hacer lo que dices para hacer un scroll horizontal pero las letras me salen inclinadas podría alguien ayudarme a resolver este problema?? muchas gracias