Cubo LED 3D (4x4x4)

Cubo LED 3D (4x4x4)

El objetivo básico es crear un cubo LED 3D capaz de mostrar animaciones predefinidas.
Una pantalla LED 3D típica es una colección de LED, de alguna manera conectados y dispuestos en un patrón 3D y controlados para que los LED puedan encenderse y apagarse de manera controlada, creando así patrones de luz interesantes y agradables. Probablemente el tipo más común de pantalla LED 3D es el cubo LED. La matriz 3D se construye soldando las patas de los LED directamente entre sí o construyendo una serie de cables que forman una estructura a la que se conectan los LED. También hay muchas formas diferentes de controlar una pantalla LED 3D que varían en complejidad; la más simple es probablemente un solo microcontrolador, con métodos más complicados que utilizan circuitos integrados de controladores LED especiales o incluso control directo por PC.

Protótipo de cubo LED controlado por AVR ATMega16

Figura 1: Prototipo de cubo LED controlado por AVR ATMega16

Laboral:

El cubo LED tiene 64 LED (4x4x4). Cada LED está dedicado a un puerto IO en un microcontrolador. El cubo LED se basa en un fenómeno óptico llamado Persistencia de la Visión. Si parpadea un LED demasiado rápido, permanecerá en su retina durante algún tiempo incluso después de que se apague el LED. Al mostrar cada capa del cubo muy rápidamente, una tras otra, se da la sensación de 3D. Con esta configuración solo necesitaremos 16 (ánodo) + 4 (capas) puertos IO para controlar cada LED. El LED tiene dos patas, una positiva y otra negativa. El extremo positivo está conectado a los pilares del cubo LED que actúa como ánodo mientras que el negativo está conectado a la capa. Así, para encender un LED determinado tenemos que suministrar corriente al pilar correspondiente y poner a tierra la capa.

Diagrama de bloques:

Diagrama de blocos do cubo LED controlado por AVR ATMega16

Figura 2: Diagrama de bloques del cubo LED controlado por AVR ATMega16

Fuente de energía: Utilizamos una fuente de alimentación regulada de 5 V con un regulador de voltaje 7805 y una batería de 9 V para nuestro proyecto.

Microcontrolador:

Es el corazón del proyecto que permite controlar el Cubo LED generando animaciones predefinidas. Para ello se utilizan los puertos de entrada/salida del microcontrolador. Utilizamos el microcontrolador Atmega 16 en nuestro proyecto.

Diagrama de pinos do AVR ATMega16

Figura 3: Diagrama de pines AVR ATMega16

Protótipo de circuito de controle de cubo LED baseado em AVR ATMega16

Figura 4: Prototipo de circuito de control de cubo LED basado en AVR ATMega16

Cubo LED:

La conexión del cubo LED se realiza de la siguiente manera. Todos los ánodos de una capa están conectados como un pilar del cubo y los cátodos están en cortocircuito alrededor de la capa. Así, tenemos 4 pines catódicos en 4 capas de cubos y 16 pines catódicos como pilares de cubos.

Imagem de representação do cubo de LED

Figura 5: Imagen de representación del cubo LED

Protótipo de LED Cube controlado por AVR ATMega16

Figura 6: Prototipo de cubo LED controlado por AVR ATMega16

El circuito:

{Consulta la pestaña del diagrama de circuito para ver el circuito completo del 3D LED Cube (4x4x4)}

Cronograma:

La programación se realiza en Eclipse IDE en Embedded C. El código se adjunta a este documento. Creé 4 patrones de animación en cada 'bucle for'.

Código fuente del proyecto

###


#incluir

#incluir

vacío principal

{

DDRA=0xff;

DDRB=0xff;

DDRD=0xff;

interna l,j,k,l,m;

mientras (1)

{

para (l=0;l<6;l++)

{

PUERTO=~1;

PUERTO=0b00010001;

PORTB=0b00010001;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b00010001;

PORTB=0b00010001;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b00010001;

PORTB=0b00010001;

_delay_ms (200);

PUERTO=~8;

PUERTO=0b00010001;

PORTB=0b00010001;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b00100010;

PORTB=0b00100010;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b01000100;

PUERTOB=0b01000100;

_delay_ms (200);

PUERTO=~1;

PUERTO=0b10001000;

PUERTOB=0b10001000;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b10001000;

PUERTOB=0b10001000;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b10001000;

PUERTOB=0b10001000;

_delay_ms (200);

PUERTO=~8;

PUERTO=0b10001000;

PUERTOB=0b10001000;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b01000100;

PUERTOB=0b01000100;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b00100010;

PORTB=0b00100010;

_delay_ms (200);

}

para (j=0;j<6;j++)

{

PUERTO=~8;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~1;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

}

para (k=0;k<6;k++)

{

PUERTO=~1;

PUERTO=~0b10011111;

PUERTOB=~0b11111001;

_delay_ms (200);

PUERTO=~2;

PUERTO=~0b10011111;

PUERTOB=~0b11111001;

_delay_ms (200);

PUERTO=~4;

PUERTO=~0b10011111;

PUERTOB=~0b11111001;

_delay_ms (200);

PUERTO=~8;

PUERTO=~0b10011111;

PUERTOB=~0b11111001;

_delay_ms (200);

PUERTO=~8;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~4;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~2;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

PUERTO=~1;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_ms (200);

}

para (l=0;l<6;l++)

{

PUERTO=~1;

PUERTO=1; _delay_ms (100);

PUERTO=~2;

PUERTO=0b00100000; _delay_ms (100);PUERTO=0;

PUERTO=~4;

PUERTOB=0b00000100; _delay_ms (100);

PUERTO=~8;

PUERTOB=0b10000000; _delay_ms (100);

PUERTO=~4;

PUERTOB=0b00001000; _delay_ms (100);PORTB=0;

PUERTO=~2;

PUERTO=0b10000000; _delay_ms (100);

PUERTO=~1;

PUERTO=0b00001000; _delay_ms (100);

PUERTO=~2;

PUERTO=0b01000000; _delay_ms (100);PUERTO=0;

PUERTO=~4;

PUERTOB=0b00000010; _delay_ms (100);

PUERTO=~8;

PUERTOB=0b00010000; _delay_ms (100);

PUERTO=~4;

PUERTOB=0b00000001; _delay_ms (100);PORTB=0;

PUERTO=~2;

PUERTO=0b00010000; _delay_ms (100);

}

para (m=0;m<10000;m++)

{

PUERTO=~1;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_us (100);

PUERTO=~2;

PUERTO=0b00001001;

PUERTOB=0b10010000;

_delay_us (100);

PUERTO=~4;

PUERTO=0b00001001;

PUERTOB=0b10010000;

_delay_us (100);

PUERTO=~8;

PUERTO=0b10011111;

PORTB=0b11111001;

_delay_us (100);

}

}

}

###

Diagramas de circuito

Diagrama de circuito-AVR-ATMega16-LED-Cube

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.