¿Cuántas luces individuales puede controlar un arduino?

18

Quiero usar una placa Arduino normal para controlar los LED. ¿Cuál es la mayor cantidad de luces que puedo controlar individualmente desde la placa?

¿Hay un tutorial sobre cómo conectarlo?

    
pregunta mad_z

7 respuestas

25

Creo que el uso de las líneas N de Charlie-plexing controla los LED N * (N-1). Hay un buen artículo en Wikipedia.

Un amigo mío, Jimmie P. Rodgers, encaja 126 LED en un Arduino Shield. Él usa charlie-plexing para controlar los LEDs. Alguna información en su tablero está en jimmieprodgers.com/2009/12/my-development- proceso / (copia de archive.org)

En la última reunión del Grupo de Usuarios de Arduino en Boston, Jimmie P. Rodgers dibujó un Diagrama de Charlie-plexing como una matriz con redes etiquetadas. Esquemas dibujados en este La manera parecía hacer un buen trabajo de comunicar el concepto. yo creé Un par de esquemas similares: consulte enlace

    
respondido por el jluciani
13

Puede usar Shift Registers ( enlace ) para obtener tantas salidas paralelas de una sola secuencia en serie como usted querer.

Tendrá que preocuparse por sus restricciones de energía. En realidad, nunca he usado un Arduino, pero supongo que tiene un límite actual al igual que los PIC. Además, los registros de desplazamiento tendrán un límite de corriente. Si se encuentra con esto, tendrá que usar algo como un MOSFET para poder controlar los LED sin tener que extraer mucha energía directamente de su microcontrolador.

    
respondido por el Kellenjb
7

Cualquier pin del microcontrolador AVR dado puede generar hasta 40 mA, y la fuente de alimentación total derivada o hundida por el chip (es decir, en el suelo y los pines Vcc) debe ser inferior a 200 mA.

Charlieplexing es una excelente solución para situaciones en las que necesita muchos LED, pero puede funcionar con solo un LED encendido a la vez. Una placa Arduino estándar (como Duemilanove) proporciona 17 pines de E / S "libres", sin contar TX, RX, Restablecer o el pin 13. Por lo tanto, puede conectar 17 * 16 = 272 LED. Esto puede funcionar bien, especialmente si mantiene un LED encendido o escanea rápidamente entre unos pocos. Pero si está intentando iluminar toda la matriz con un patrón, encontrará que cada uno está encendido (un poco menos que) 1/272 del tiempo, por lo que si la corriente de su unidad era de 30 mA en un momento dado, cada LED la corriente promedio sería de aproximadamente 0,1 mA, bastante tenue.

Si no necesita tantos LED, sino que necesita más brillo, la multiplexación tradicional puede ser una mejor opción. En este caso, utiliza algunas de sus líneas como filas y otras como columnas en una matriz. Si usa una corriente de 10 mA LED, puede definir una matriz de 4 columnas y 13 filas, donde los 4 LED de una fila pueden estar encendidos a la vez, y escanear las filas. Luego, cada fila está encendida 1/13 del tiempo a una corriente de 10 mA, por lo que la corriente promedio del LED puede ser tan alta como 0.76 mA, PERO solo obtiene 4 * 13 = 104 LED. (Definitivamente más brillante por LED que con charlieplexing.)

El límite en el último ejemplo es de 40 mA por pin en el AVR, ya que cada fila genera pines 4x10 = 40 mA. Si permite que se agreguen transistores externos (que pueden ser baratos y pequeños) a las salidas de la fila, entonces puede evitar ese límite en particular y volverse más brillante. Por ejemplo, podría hacer una matriz de 8x9, con 8 filas y 9 columnas, 72 LED en total. Una de las 8 filas está encendida a la vez, seleccionada a través del transistor. Hasta los 9 LED en una fila dada pueden estar encendidos a la vez, manejados a 20 mA, por lo que 180 mA provienen del transistor y usted permanece por debajo de los límites actuales del AVR. La corriente promedio por LED ahora es de 20 mA / 8 = 2.5 mA, generalmente bastante brillante.

    
respondido por el Windell Oskay
6

Hay un tutorial muy bueno y detallado aquí que incluye una sección sobre el uso de un Arduino para ejecutar Un cubo de 8x8x8 LED. (No te pierdas la película de YouTube que tienen arriba)

    
respondido por el Joel Spolsky
4

Hay muchos expansores de E / S por ahí que usan los buses SPI o I2C. Con un solo módulo MSSP puede controlar casi una cantidad infinita de salidas digitales como LEDs.

Consulte las hojas de datos de Microchip o las notas de la aplicación para las siguientes partes:
SPI - MCP23S08
I2C - MCP23008

    
respondido por el mjh2007
1

Con 17 pines de E / S, diecisiete transistores NPN (seguidores emisores para aumentar la corriente) no debería haber ningún problema en particular que muestre 272 LED en combinaciones arbitrarias en un ciclo de trabajo de 1/17, con corriente promedio o 0.7mA (200mA / 272) , limitado por la capacidad del chip para bajar 200mA a la vez. Agregar un diodo para obtener una caída de 0.7 voltios permitirá la adición de otros 17 LED (reduciendo el ciclo de trabajo a 1/18), aunque el brillo no coincidirá con los otros.

    
respondido por el supercat
0

Mientras Windell Oskay sostiene que 104 LED es el máximo sin agregar más transistores, Tom Igoe ha publicado fotos de una matriz de 128 LED controlados directamente por un solo Arduino Mega, sin transistores adicionales, discretos o integrados.

¿Tom Igoe está "haciendo trampa" al exceder brevemente la "corriente máxima absoluta por pin" que figura en la hoja de datos?

    
respondido por el davidcary

Lea otras preguntas en las etiquetas