Problema en matrices LED

Hola a todos

Resulta que estamos con el proyecto final del modulo superior de electronica, y tenemos que hacer un panel de leds de 7x40 que ponga un mensaje estatico, y al pulsar un switch, cambie a dinamico.

Ya hemos echo el programa y todo el circuito, y con Proteus lo simulamos y funciona todo correctamente!

Usamos matrices de 7x5, y usamos un total de 8 matrices led para completar el cartel de 7x40. Nuestra PCB tiene que ser muy grande para abarcar las 8 matrices, y como en nuestra escuela hacemos las PCBs a mano con una maquina especial con acidos, nuestra placa es demasiado grande para hacerla.

Por lo tanto decidimos hacer tres placas diferentes y conectarlas entre si con cables. La primera placa es la alimentacion, transistores y el PIC, la segunda son las 4 primeras matrices, y la tercera las 4 ultimas.

Aqui viene nuestro problema:

Al grabar el programa en el PIC, y conectar la primera placa, las 4 matrices visualizan genial, y funciona todo correctamente, pero al conectar la tercera placa y tener las 8 matrices a la vez, resulta que funciona rarisimo en las ocho. Se encienden leds al azar y no se visualiza ningun mensaje

Porque podra ser esto? Si habria algun problema en la tercera placa, esta afecta a la segunda? Nuestro circuito esta compuesto por controladores de desplazamiento, entonces desplaza toda la informacion de matriz a matriz. como es posible que al enchufar la tercera placa, no nos funcione bien ninguna?

Muchas gracias
 
Lo siento, tienes razon. Incluyo tres imagenes con las conexiones de las tres placas echas en Orcad Capture

Se hizo en tres proyectos de capture diferentes, porque ibamos a hacer tres placas.


Muhisimas gracias, y a ver si nos ayudais a ver cual es el problema :)
 

Adjuntos

  • PLACA 1.jpg
    PLACA 1.jpg
    213 KB · Visitas: 23
  • Placa 2.jpg
    Placa 2.jpg
    197 KB · Visitas: 28
  • Placa 3.jpg
    Placa 3.jpg
    155.9 KB · Visitas: 23
Lo que te puedo decir que salta a la vista es que no hay capacitores de desacoplo en ninguna de las dos tarjetas hija, y no queda claro como esta conectado el desacoplo al PIC y al oscilador.

Como buena regla de disenio, hay que poner al menos un capacitor de 100nF para cada integrado digital. Para el PIC puede ser que se necesite mas, consulta la hoja de datos del fabricante a ver que dice. Tales capacitores tienen que estar lo mas cerca posible a los CIs digitales. Es recomendable incluso un capacitor adicional a cada placa hija de unos 100uF.

Tampoco me queda claro si poner un solo pin en el conector tanto para Vcc como para GND es suficiente para alimentar todas las cargas. Cuanta corriente puede atravesar por el conector? No te olvides en el calculo que es un solo pin de VCC y uno solo de GND para las dos placas hija.

Como es la distribucion de tension en cada placa? Midieron las tensiones en vacio (programa no corre) y mientras el programa corre?

Suerte. Al final les va a andar.
 
Última edición:
Gracias por vuestras contestaciones!

Scooter, esque el asunto es que las dos placas no son iguales! Por ejemplo, no podemos enchufar la tercera placa directamente a la primera, porques pines no coinciden porque son diferentes.

Chclau, me a parecido muy interesante lo que has dicho sobre la alimentacion, pero tras enchufar todo y comprobar con el polimetro si todo esta bien alimentado, parece ser que si, asi que hemos descartado esa idea.

Lo que me dices de los capacitores, eso a que ayudaria? esque ya hemos usado tres condensadores de 100uF que se pueden ver en la primera placa. No creo que sea ese el problema, porque el asunto es que al enchufar la tercera placa, la segunda se vuelve loca y el mensaje sale como dos veces y desplazado.

Como puede afectar la tercera placa a la segunda? si funciona con desplazadores, la tercera placa no deberia de inlfuir a la primera, no?

Muchisimas gracias por vuestras contesaciones :)
 
Hola,

No se si el polimetro es el instrumento adecuado para ver lo que yo sospecho que pasa, y es que durante los picos de consumo de los dispositivos digitales la tension cae. Los capacitores en cada placa proveen carga para que durante esos picos la tension no baje.

Lo que si podrias hacer es poner la tercera placa EN LUGAR de la segunda siguiendo la idea de Scooter, no?
 
De nuevo, muchas gracias por las contestaciones! Tras analizar vuestras respuestas y opiniones de otras personas, hemos decidido hacer dos pruebas para ver que ocurre

- Quitar el oscilador de 64MHz (estamos usando uno de 64Mhz porque el proyecto del año pasado iba muy lento)

- Probar a poner condensadores en las salidas de los chips digitales


Tras hacer la primera prueba, que a sido quitar el oscilador, resulta que nos funcionan las dos placas correctamente!!!! Resulta que el oscilador hace que vaya toda la informacion tan rapidamente que hace que el mensaje se vea raro y mal

Como es posible eso? demasiada velocidad puede hacer perder informacion?

Ahora viene mi nueva pregunta:

Como se hace para que un oscilador de 64Mhz trabaje a menos?
Nosotros programamos en C y usamos el CCS compiler. Estamos usando un PIC18F14K22

Muchas gracias :)
 
Si, por supuesto que alta velocidad puede hacer que te ande todo mal, tenes que tener en cuenta setup y hold de los dispositivos y la propagacion del clock en una placa tan grande.

No es necesario cambiar el clock del procesador, basta con hacer que el clock que envian a las placas sea menor.
 
No me a queddo muy claro, lo siento!

nuestro programa esta configurado de esta manera: #use delay(clock=64000000)

y los delays de esta forma: delay_ms(20)


deberiamos de bajar el delay_ms? o hacer algo para que el delay clock sea mas bajo? porque si pongo #use delay(clock=5000000) no funcionara a 50Mhz, no?

Graciaaas
 
Atrás
Arriba