Matriz de leds
[imagen obtenida de: http://pcbheaven.com/wikipages/images/howkeymatricesworks_1277658667.png]
Una matriz de leds es un grupo de estos componentes conectado en forma de matriz de tal forma que se puede encender solo un led o la cantidad deseada jugando con los cátodos y ánodos de los mismos.
Las matrices de leds son bastante utilizadas, podemos verlas en todos lados algunos ejemplos de esto son:
- En anuncios panorámicos, en mi caso en las avenidas
- En relojes
- En obras de arte.
- En carteles
¿Como funciona?
En esta imagen de abajo se muestra como son las conexiones de una matriz de leds donde las columnas corresponden las conexiones a tierra y las filas corresponden a las conexiones a corriente. Al producir corriente a una fila, esta corriente es capaz de pasar por toda la fila y al conectar a tierra una columna toda la columna puede conducir la corriente que pase por esta. Así produciendo corriente en una fila y conectando a tierra la columna cerramos el circuito y hacemos que un led en especifico se encienda. Controlando esto con un microcontrolador podemos crear diferentes figuras o números, en realidad esta funciona de forma muy parecida a un display común y corriente.
[imagen obtenida de:http://galaxi0.files.wordpress.com/2009/06/diagrama-de-pines-catados-en-columna.png?w=500]
Cubo de leds
Un cubo de leds es una estructura bastante similar a la matriz, con la diferencia que los cátodos se mapean como una matriz de cero a nueve, por lo cual necesitamos nueve pines y un ánodo para cada nivel. Lo cual quiere decir que podemos controlar el encendido controlando cada columna y su nivel. Para construirla me base en el siguiente blog: http://roberto-mtz.blogspot.mx/2012/04/cubo-leds-3x3x3-arduino-bt.html el cual tiene publicaciones muy interesantes y me parece muy bueno.
Probando el cubo de leds
Una vez armado me dí a la tarea de generar un código para probarlo, el controlador lo que hace es encender fila por fila para revisar que las conexiones y el soldado esten correctos, despues al final enciende todos los leds al mismo tiempo para verificar que tengan el voltaje necesario.
Materiales:
- 27 Leds
- 9 resistencias de 220 Ohms
- 3 resistencias de 330 Ohms
- 3 transistores 2N2222
- PIC16F628A
- 7805-CT Regulador Tension 5V
Diagrama de conexiones:
Este diagrama de conexiones lo encontre en una pagina donde querian lograr algo parecido, las conexiones son las mismas, solo que en el PIC cambio los pines de salida RB0-RB7 y RA0 son los catodos y RA1 a RA3.
[Imagen obtenida de: http://www.instructables.com/files/deriv/FGC/TB26/GIYWWDPB/FGCTB26GIYWWDPB.MEDIUM.jpg]
Código:
#include "pic16f628a.h"
#define __16f628a
unsigned int __at 0x2007 __CONFIG = _INTOSC_OSC_CLKOUT &// Internal
_WDT_OFF&
_LVP_OFF&
_DATA_CP_OFF&
_PWRTE_ON;
unsigned short int i;//variable contador
int main(void){
TRISB = 0x00;//Configura los pines de PORTA como salidas
TRISA = 0x00;//Configura los pines de PORTA como salidas
while(1){
PORTA = 0b00001110;// Todos los niveles siempre estan encendidos
PORTB = 0b00000001; // Estado inicial
for( i = 0; i < 50000; i++);
PORTB = 0b00000010; //Enciende la segunda columna y espera
for( i = 0; i < 50000; i++);
PORTB = 0b00000100;
for( i = 0; i < 50000; i++);
PORTB = 0b00001000;
for( i = 0; i < 50000; i++);
PORTB = 0b00010000;
for( i = 0; i < 50000; i++);
PORTB = 0b00100000;
for( i = 0; i < 50000; i++);
PORTB = 0b01000000;
for( i = 0; i < 50000; i++);
PORTB = 0b10000000;
for( i = 0; i < 50000; i++);
PORTB = 0x00;
PORTA = 0b00001111;
for( i = 0; i < 50000; i++);
PORTB = 0b11111111; // Enciende todos los leds
PORTA = 0b00001111;
for( i = 0; i < 50000; i++);
}
return 0;
}
Ahora uno de los problemas a los que me enfrente en este punto es que todos los leds de un nivel comparten conexión, por tanto si trato de implementar algunas secuencias se encienden leds que no deberían, para resolver este problema utilice una técnica de conexión llamada multiplexado de la cual hablare en la próxima publicación.
Referencias:
http://pcbheaven.com/wikipages/How_Key_Matrices_Works/
http://galaxi0.wordpress.com/about/salidas-y-entradas-digitales/matriz-de-leds/
http://pcbheaven.com/wikipages/How_Key_Matrices_Works/
9 pts lab integrados
ResponderBorrarcreo que tu codigo no tiene chiste para eso existe algo llamado multiplexion
ResponderBorrar