CUBO LED

6
PRÁCTICA CUBO LED 64 elektor, electronics worldwide - 12/2008 Luminaria 3D Matriz LED programable con 125 LED Por Jerry Jacobs Una matriz LED bidimensional no es algo espectacular. La matriz que presentamos aquí, no obstante, es de otro calibre. Cinco de estas matrices fueron apiladas una encima de otra. Lo que ha resultado en una verdadera matriz 3D en la que cada uno de sus LED puede encenderse y apagarse independientemente. Los LED intermitentes siempre llaman la atención. En la mayoría de los casos se trata sencillamente de un par de LED o como máximo de una pantalla de LED plana. Un cubo LED es algo realmente diferente. En este caso se trata de una pantalla tridimen- sional compuesta de LED que pueden ser controlados de manera individual. En contraste con el cubo borg, se trata aquí de electrónica terrestre convencio- nal con incorporación de un un micro- controlador AVR. Estos controladores son económicos, fáciles de conseguir, y además, también existen para ellos sufi- cientes herramientas de desarrollo con código abierto. Estos últimos existen no sólo para Windows, sino también para Linux- y Mac OS X. Funcionamiento La suposición de que para 125 LED se necesitarían grandes cantidades de cables puede engañar. Mediante el control por multiplexación se reduce enormemente “la alambrada de espino artificial”. Sólo un único cable es suficiente para activar o desactivar los 25 LED que conforman una matriz bidimensional parcial. A los 25 LED de un nivel como éste, les bastan exactamente 26 líneas. Cada cinco LED superpuestos de los cinco niveles confor- man una columna conjunta que, de esta manera, precisa únicamente de tan sólo Tabla 1. Control de niveles y columnas Puerto A Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 Columna 8 Columna 7 Columna 6 Columna 5 Columna 4 Columna 3 Columna 2 Columna 1 Puerto B Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Columna 25 Nivel 5 Nivel 4 Nivel 3 Nivel 2 Nivel 1 Puerto C Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 Columna 16 Columna 15 Columna 14 Columna 13 Columna 12 Columna 11 Columna 10 Columna 9 Puerto D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 Columna 24 Columna 23 Columna 22 Columna 21 Columna 20 Columna 19 Columna 18 Columna 17 Características técnicas 125 LED en disposición 3D Microcontrolador ATmega32 con frecuencia interna de 1 MHz Conector ISP de 10 contactos para programar 5 transistores BC337 para el control de los niveles 25 transistores BC547 para el control de las columnas

Transcript of CUBO LED

Page 1: CUBO LED

práctica cubo led

64 elektor, electronics worldwide - 12/2008

Luminaria 3DMatriz LED programable con 125 LEDPor Jerry Jacobs

Una matriz LED bidimensional no es algo espectacular. La matriz que presentamos aquí, no obstante, es de otro calibre. Cinco de estas matrices fueron apiladas una encima de otra. Lo que ha resultado en una verdadera matriz 3D en la que cada uno de sus LED puede encenderse y apagarse independientemente.

Los LED intermitentes siempre llaman la atención. En la mayoría de los casos se trata sencillamente de un par de LED o como máximo de una pantalla de LED plana. Un cubo LED es algo realmente diferente. En este caso se trata de una pantalla tridimen-sional compuesta de LED que pueden ser controlados de manera individual.

En contraste con el cubo borg, se trata aquí de electrónica terrestre convencio-nal con incorporación de un un micro-controlador AVR. Estos controladores son económicos, fáciles de conseguir, y además, también existen para ellos sufi -cientes herramientas de desarrollo con código abierto. Estos últimos existen no

sólo para Windows, sino también para Linux- y Mac OS X.

FuncionamientoLa suposición de que para 125 LED se necesitarían grandes cantidades de cables puede engañar. Mediante el control por multiplexación se reduce enormemente “la alambrada de espino artifi cial”. Sólo un único cable es sufi ciente para activar o desactivar los 25 LED que conforman una matriz bidimensional parcial. A los 25 LED de un nivel como éste, les bastan exactamente 26 líneas. Cada cinco LED superpuestos de los cinco niveles confor-man una columna conjunta que, de esta manera, precisa únicamente de tan sólo

Tabla 1. Control de niveles y columnas

Puerto A

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

Columna 8 Columna 7 Columna 6 Columna 5 Columna 4 Columna 3 Columna 2 Columna 1

Puerto B

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

Columna 25 – – Nivel 5 Nivel 4 Nivel 3 Nivel 2 Nivel 1

Puerto C

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

Columna 16 Columna 15 Columna 14 Columna 13 Columna 12 Columna 11 Columna 10 Columna 9

Puerto D

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0

Columna 24 Columna 23 Columna 22 Columna 21 Columna 20 Columna 19 Columna 18 Columna 17

Características técnicas• 125 LED en disposición 3D

• Microcontrolador ATmega32 con frecuencia interna de 1 MHz

• Conector ISP de 10 contactos para programar

• 5 transistores BC337 para el control de los niveles

• 25 transistores BC547 para el control de las columnas

10. 080355-ES.indd 64 1/11/08 20:28:28

Page 2: CUBO LED

6512/2008 - elektor, electronics worldwide

Luminaria 3DMatriz LED programable con 125 LED

una línea. Para encender un LED específi co por separado, se conecta el nivel correspondiente a la tensión positiva de alimen-tación y se selecciona la respec-tiva columna. El cubo está organi-zado en 5 niveles y 25 columnas. De ello se deducen lógicamente 30 líneas, en lugar de 126 líneas independientes para los 125 LED.Con una frecuencia de 1 MHz, el cir-cuito alcanza una frecuencia de ima-gen de 39 Hz. Cada 1024 periodos se incrementa un contador (también deno-minado controlador). Cuando este con-tador alcanza en su estado el valor 5, se dispara automáticamente el interrup-tor y se reestablece el valor del conta-dor. Este interruptor se encarga también de transferir el contenido del buffer a un nivel LED. Una frecuencia de 1 MHz se obtine una “frecuencia de nivel” de 195 Hz. Dado que el cubo tiene cinco capas LED, éste se reproduce completa-mente 39 veces por segundo.

SoftwareEl software está escrito en C y puede compilarse con AVR-GCC [1]. Cuenta con una amplia documentación que puede además consultarse en un sitio web para más informaciones. La docu-mentación ha sido generada con Doxygen [2].

BufferSe utiliza un buffer para darle forma a una imagen en el cubo de forma menos compleja. Como usuario, solamente es preciso manejar hábilmente los bits, y

la electrónica pone automáticamente el contenido del buffer en el respectivo patrón LED. La rutina de interrupción ya men-cionada se encarga de ello. El buffer se organiza de forma multidi-mensional de acuerdo con el cubo, de tal forma que las imagenes se pueden “dibujar” plásticamente en el buffer.

InterrupciónLa función de formateo de imagenes de la rutina de interrupción consiste en la correcta reproducción del contenido del búfer 39 veces por segundo. En conse-cuencia, cada bit en el búfer es asig-nado inequívocamente a un LED El nivel de los bits decide entonces si un LED se enciende o no. El usuario debe escribir los datos de la imagen con funciones especiales en el buffer para poder gene-rar una imagen.

Instrucciones gráfi cas de bajo nivelLas rutinas de bajo nivel están concebi-das de forma tal que se puedan lograr

efectos individuales en el cubo. En la Tabla 1 se

puede observar la conexión exacta de cada bit con el

puerto, columna de LED, etc. Con esta tabla se pueden generar tam-

bién directamente muestras sin refi na-mientos como desplazamientos o más-caras de bit. Las funciones de bajo nivel se encuentran defi nidas en el archivo “draw.h”. Con ellas es posible controlar niveles, columnas, fi las, etc. Veremos a continuación un par de ejemplos sobre la manera como se pueden utilizar estas funciones.Control de una fi la en un nivel deter-minado:

set_row(ROW_1, NIVEL_1);clear_row(ROW_1, NIVEL_1);toggle_row(ROW_1, NIVEL_1);

Las funciones para controlar una columna:

set_column(COLUMN_1, ON);set_column(COLUMN_1, OFF);

10. 080355-ES.indd 65 1/11/08 20:28:32

Page 3: CUBO LED

práctica cubo led

66 elektor, electronics worldwide - 12/2008

12

34

56

78

910

K2

25V

C1470u

C2100n

C3

100n

PB0 (XC

K/T0)

1

PB1 (T1)

2

PB2 (A

IN0/IN

T2)3

PB3 (A

IN1/O

C0)

4

PB4 (SS)

5

PB5 (M

OSI)

6

PB6 (M

ISO)

7

PB7 (SC

K)8

RESET

9

PD0 (R

XD)14

PD1 (TXD

)15

PD2 (IN

T0)16

PD3 (IN

T1)17

PD4 (O

C1B

)18

PD5 (O

C1A

)19

PD6 (IC

P)20

PD7 (O

C2)

21

XTAL212

XTAL113

GND11

PC0 (SC

L)22

PC1 (SD

A)23

PC2 (TC

K)24

PC3 (TM

S)25

PC4 (TD

O)

26

PC5 (TD

I)27

PC6 (TO

SC1)

28

PC7 (TO

SC2)

29

AREF32

AVCC30

GND31

PA7 (A

DC

7)33

PA6 (A

DC

6)34

PA5 (A

DC

5)35

PA4 (A

DC

4)36

PA3 (A

DC

3)37

PA2 (A

DC

2)38

PA1 (A

DC

1)39

PA0 (A

DC

0)40

VCC10

IC2

ATm

ega32-16PC

13

2

IC17805

T1

+5VD

1

1N4001

2 31

K1

R1100k100V

C4

1u

+5V

+5V

T6

R2330R

+5V

T2

R3

330R

+5V

T3

R4

330R

+5V

T4

R5

330R

+5V

T5

R6

330R

+5V

R15

1k8T21

T7

R16

1k8

T8

R17

1k8

T9

R18

1k8

T10

R19

1k8

T11

R20

1k8

T12

R21

1k8

T13

R22

1k8

MO

SI

MISO

RST

SCK

GN

D

CO

L1R7150R

CO

L2R8150R

CO

L3R9150R

CO

L4R10

150R

CO

L5R11

150R

CO

L6R12

150R

CO

L7R13

150R

CO

L8R14

150R

R31

150R

R23

1k8T20

CO

L16

R32

150R

R24

1k8

T19

CO

L15

R33

150R

R25

1k8

T18

CO

L14

R34

150R

R26

1k8

T17

CO

L13

R35

150R

R27

1k8

T16

CO

L12

R36

150R

R28

1k8

T15

CO

L11

R37

150R

R29

1k8

T14

CO

L9R38

150R

R30

1k8

CO

L24

R54

150R

R46

1k8

T28

CO

L23

R53

150R

R45

1k8

T27

CO

L22

R52

150R

R44

1k8

T26

CO

L21

R51

150R

R43

1k8

T25

CO

L20

R50

150R

R42

1k8

T24

CO

L19R49

150R

R41

1k8

T23

CO

L18

R48

150R

R40

1k8

T22

CO

L17

R47

150R

R39

1k8

T30

R56

1k8

CO

L25

R55

150R

CO

L10

LAY5

LAY4

LAY3

LAY2

LAY1T29

T1 ... T5 = BC

337T6 ... T30 = B

C547

080355 - 11

Imagen 1. Todos los LED son controlados mediante un microcontrolador AVR. La gran cantidad de transistores se encargan de proveer la tensión necesaria.

10. 080355-ES.indd 66 1/11/08 20:28:34

Page 4: CUBO LED

6712/2008 - elektor, electronics worldwide

En estas funciones se utilizan denomina-ciones como ON, OFF y COLUMN_1. Se trata aquí de constantes con valores fijos. Por ejemplo: ON tiene 1 y OFF tiene 0 como valor.Algunas de estas funciones se pueden emplear una tras otra para crear una figura determinada. Otras explicaciones se encuentran disponibles en el código fuente que se puede descargar gratuita-mente desde el sitio web de Elektor.

HardwareLa electrónica se puede montar com-pletamente con componentes conven-cionales y, a pesar ello, la placa de circuito impreso resultante es bastante compacta.Podemos utilizar un adaptador de red comercial corriente con una salida de 9 V capaz de suministrar 600 mA para alimentar el circuito. El regulador IC1, un 7805, estabilizará la tensión apli-cada al circuito. El diodo D1 lo protege de los efectos negativos de polarizacio-nes inversas.

Con los transistores T1 a T5 se conecta la tensión de alimentación de 5 V a los cinco niveles. Con los transistores T6 a T30 se controlan las columnas poniendo los LED

a tierra y cerrando de esta manera el cir-cuito (véase Imagen 1 e Imagen 2).La corriente que circula entre los LED depende de la diferencia de potencial

R2

T1PB

0

LAY1

R3

T2PB

1

R4

T3PB

2

R5

T4PB

3

R6

T5PB

4

R7

T6R

15PA

0

+5V

LAY2LAY3

LAY4LAY5

CO

L1

080355 - 12

Imagen 2. Esta imagen muestra el recorrido que sigue la corriente entre los LED medios de la primera columna.

Imagen 3. El aspecto de la cara superior de la placa de circuito impreso es bastante claro.

10. 080355-ES.indd 67 1/11/08 20:28:37

Page 5: CUBO LED

práctica cubo led

68 elektor, electronics worldwide - 12/2008

aplicada sobre ellos, de la tensión de ali-mentación menos la diferencia de poten-cial colector-emisor de dos transistores y de las 25 resistencias de columnas. De esta manera, los valores de resistencia se calculan así:

R = (5V-2*UCE-ULED)/20mA

Enlaces:[1] AVR-GCC-Toolchain:-Para Windows: http://winavr.sourceforge.net

- Para Mac: http://www.obdev.at/products/avrmacpack

[2] Doxygen:http://www.doxygen.org

Por lo tanto, en los LED rojos, verdes y amarillos, los 150 Ω indicados en el esquema de circuitos para R7 a R14, R31 a R38 y R47 a R55. En los LED blancos serían 82 Ω o incluso mejor 68 Ω.Para programar el controlador del cubo se puede emplear la interfaz ISP en el K2.

(080355)

Lista de materialesResistencias:R1 = 100kΩR2 a R6 = 330ΩR7 a R14, R31 a R38, R47 a R55 = 150Ω,

véase textoR15 a R30, R39 a R46, R56 = 1kΩ8

Condensadores:C1 = 470μF/25V

C2,C3 = 100nFC4 = 1μF/100V

Semiconductores:IC1 = 7805IC2 = Atmega32D1 = 1N4001T1 a T5 = BC337T6 a T30 = BC547125 LED

Además:Conector macho 2x5 contactos, paso 2,54 mmZócalo para ICConector frontal SIL 4 x 10 contactos, paso

2,54 mmDisipador de calor para TO-220 con 5°C/W (IC1)Distanciador hexagonal 4 x M3x5 de 10 mm

de longitudEnchufe hembra para adaptador de redPlaca de circuito impreso ref. 080355-1

Montaje

Paso 1Primero se montan los distanciadores debajo de la placa de circuito impreso y luego se corta a medida un pedazo de papel para sostener bien los LED en los huecos.

Paso 2Luego se colocan cinco LED en la fila superior con el ánodo (conexión más largo) arriba y con el cátodo (conexión más corta) abajo. Después se dobla el primer LED hacia la izquiera y se sigue con el segundo LED, que se suelda fijamente en el pri-mero. De la misma manera se continúa también con el tercero, cuarto y quinto LED. Así se tiene, tenemos lista una fila. Para cada superficie son necesarias cinco de estas filas. Después se prosigue de la misma manera con las filas 2 a 5. Cuando estén listas las cinco filas se unen los ánodos doblados con dos hilos verticales.

Paso 3 Una vez estén listos los cinco niveles se puede soldar todo para formar una cons-trucción en cubo. Esto se consigue colocando un nivel encima de la placa de cir-cuito impreso y doblando las 25 columnas aproximadamente 3 mm después de los ánodos del siguiente nivel. La segunda capa se coloca entonces encima de la pri-mera. Las capas se sueldan en las esquinas conservando la misma distancia.

10. 080355-ES.indd 68 1/11/08 20:28:38

Page 6: CUBO LED

6912/2008 - elektor, electronics worldwide

Paso 4Ahora, instalaremos los componentes en la placa de circuito impreso. Hay que prestar atención para no intercambiar los transistores BC 337 y BC 547. Para com-pletar el montaje, montaremos el regulador de tensión con su correspondiente radiador.

Paso 5A continuación se unen los niveles individuales con los transistores respectivos. T1 se encarga del nivel inferior y T5 del superior. Para ello es adecuado el hilo de cobre estañado.

Paso 6Para finalizar se pone el firmware en el microcontrolador. Junto con el código abierto se puede descargar igualmente el archivo hexadecimal ya compilado desde el sitio web de Elektor. En el mismo sitio se encuentra también un enlace para realizar el pedido de la placa de circuito impreso.

Sobre el autorJerry Jacobs, nacido en 1989 en Heerlen (Países Bajos) es estudiante de Telecomu-nicación en el ROC (Leeuwen-borg Colle-ge en Sittard, Países Bajos). Su fascina-ción por la informática y la electrónica le ha acompañado durante bastante años. Aparte de ello, es un apasionado del sis-tema Linux. El proyecto aquí descrito es el trabajo presentado como culminación de su periodo de prácticas en el laboratorio de Elektor.

10. 080355-ES.indd 69 1/11/08 20:28:41