¿Cuántas luces individuales puede controlar un arduino?

19

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?

mad_z
fuente
3
Debe especificar si desea controlar uno o varios leds. Además, agregaría "evitar el control en serie y los circuitos integrados adicionales". La respuesta tiende a ser infinita si la frecuencia de actualización o las partes del hardware no son restricciones.
ppvi

Respuestas:

26

Creo que usar Charlie-plexing N lines controla N * (N-1) LED. Hay un buen artículo en Wikipedia.

Un amigo mío, Jimmie P. Rodgers, instaló 126 LED en un escudo Arduino. Utiliza charlie-plexing para controlar los LED. Alguna información en su junta está en - jimmieprodgers.com/2009/12/my-development-process/ (copia archive.org)


En la última reunión del Grupo de Usuarios de Boston Arduino, Jimmie P. Rodgers dibujó un diagrama de Charlie-plexing como una matriz con redes etiquetadas. Los esquemas dibujados de esta manera parecían hacer un buen trabajo al comunicar el concepto. Creé un par de esquemas similares: consulte http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html

jluciani
fuente
aprendí algo nuevo hoy; tienes mi voto a favor :-)
JonathanD
44
Tenga en cuenta que con este método solo es posible tener LED N-1 encendidos a la vez.
AngryEE
2
El jimmieprodgers.comenlace en esta respuesta está cargado de virus.
Vivek Maharajh
1
@vivekmaharajh: reemplacé el enlace con un enlace a una copia archive.org de la página original.
Dave Tweed
13

Puede usar Shift Registers ( http://en.wikipedia.org/wiki/Shift_register ) para obtener tantas salidas paralelas de una sola secuencia en serie como desee.

Deberá preocuparse por sus limitaciones de poder. 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 ellos mismos. Si se encuentra con esto, deberá considerar el uso de algo como un MOSFET para permitirle controlar los LED sin tener que extraer mucha energía directamente de su microcontrolador.

Kellenjb
fuente
7

Se permite que cualquier pin del microcontrolador AVR entregue hasta 40 mA, y la fuente de alimentación total obtenida o hundida por el chip (es decir, en la tierra y los pines Vcc) debe estar por debajo de 200 mA.

Charlieplexing es una gran 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 una Duemilanove) proporciona 17 pines de E / S "libres", sin contar TX, RX, Reset o 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á tratando de iluminar toda la matriz con un patrón, encontrará que cada uno está encendido (un poco menos de) 1/272 de las veces, por lo que si la corriente de su unidad fuera 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 pero 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 LED de 10 mA, podría definir una matriz de 4 columnas y 13 filas, donde los 4 LED en una fila pueden estar encendidos a la vez, y escanea a través de las filas. Luego, cada fila está encendida 1/13 del tiempo con una corriente de 10 mA, por lo que la corriente promedio del LED puede ser tan alta como 0.76 mA, PERO solo obtienes 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 pin de conducción de fila genera 4x10 = 40 mA. Si permite que se agreguen transistores externos (que pueden ser baratos y pequeños) a las salidas de fila, entonces puede evitar ese límite 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. Se pueden encender hasta los 9 LED en una fila determinada a la vez, con una potencia de 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 razonablemente brillante.

Windell Oskay
fuente
6

Hay una muy agradable, tutorial 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)

ingrese la descripción de la imagen aquí

Joel Spolsky
fuente
Parece algo que vi en la exhibición de ovnis en Minneapolis alrededor de 1979 o por ahí, pero recuerdo eso como estar en algún lugar alrededor de 4096 bombillas en miniatura. ¿Alguien más recuerda haber visto algo así?
supercat
4

Existen muchos expansores de E / S que usan buses SPI o I2C. Con un solo módulo MSSP puede controlar casi una cantidad infinita de salidas digitales como LED.

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

mjh2007
fuente
1

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

Super gato
fuente
¿Puedes aclarar qué tipo de circuito estás sugiriendo aquí? El emisor seguidor es una topología BJT.
Kevin Vermeer
@reemrevnivek: Ver edición arriba. Estuve dando vueltas mentalmente a algunas variaciones, y se confundieron. Si uno está agregando transistores para impulsar la unidad del lado alto pero no la unidad del lado bajo, deben ser BJT. Si uno usara transistores para ambos, los mosfets podrían ser mejores.
supercat
0

Mientras Windell Oskay argumenta 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?

davidcary
fuente
2
No, está haciendo trampa usando un mega arduino. :) El mega tiene muchos más pines IO que un arduino normal.
Christopher Biggs
@unixbigot - Triste, esperaba ver un truco genial que involucrara la reutilización del pin de reinicio para la conducción de LED, o el uso de caída de diodos ...
Kevin Vermeer
1
Su enlace está muerto, y probablemente debería enlazar con la respuesta de Windell Oskay . Puede que no parezca importante cuando publicas, pero a medida que aparecen más respuestas, tu publicación se vuelve distante de la otra.
Kevin Vermeer
@KevinVermeer: ​​Enlace arreglado señalando a archive.org copia de la página original.
Dave Tweed