¿Cuántas luces individuales puede controlar un arduino?

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 algun tutorial de como conectarlo?

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 limitaciones.

Respuestas (8)

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

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


En la última reunión del grupo de usuarios de Arduino en Boston, Jimmie P. Rodgers dibujó un diagrama de plexo de Charlie 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

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

Puede usar los registros de desplazamiento ( http://en.wikipedia.org/wiki/Shift_register ) para obtener tantas salidas paralelas como desee de un solo flujo en serie.

Deberá preocuparse por sus limitaciones 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, deberá considerar usar algo como un MOSFET que le permita controlar los LED sin tener que extraer mucha energía directamente de su microcontrolador.

Cualquier pin del microcontrolador AVR dado puede generar hasta 40 mA, y la fuente de alimentación total suministrada o absorbida por el chip (es decir, en los pines de tierra y 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, Reset 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á tratando de iluminar toda la matriz con un patrón, encontrará que cada uno está encendido (un poco menos de) 1/272 del tiempo, 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, sino más brillo, la multiplexación tradicional puede ser una mejor opción. En este caso, usa 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 de una fila pueden estar encendidos a la vez, y escanear las filas. Luego, cada fila está en 1/13 del tiempo a una corriente de 10 mA, por lo que la corriente LED promedio 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 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 ser 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 determinada pueden estar encendidos a la vez, impulsados ​​a 20 mA, por lo que 180 mA provienen del transistor y permanece por debajo de los límites actuales del AVR. La corriente promedio por LED ahora es de 20 mA/8 = 2,5 mA, por lo general razonablemente brillante.

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

ingrese la descripción de la imagen aquí

Se parece a algo que vi en la exhibición de ovnis en Minneapolis alrededor de 1979, pero recuerdo que estaba en algún lugar alrededor de 4096 bombillas en miniatura. ¿Alguien más recuerda haber visto algo así?

Existen muchos expansores de E/S que utilizan 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 o las notas de aplicación de Microchip para las siguientes piezas:
SPI - MCP23S08
I2C - MCP23008

Si usa LED digitales como WS2812, también conocido como "Neopixels", un Arduino Uno estándar puede controlar hasta 600 píxeles RGB, sin tener que multiplexar nada :)

La única limitación aquí es la memoria RAM de la placa. Una placa con más RAM, como una Arduino Mega que tiene 8kb de RAM, puede controlar hasta 2400 píxeles, en comparación con una Uno que tiene solo 2kb de RAM.

ingrese la descripción de la imagen aquí

Puede encontrar una buena descripción general aquí: https://www.eerkmans.nl/powering-lots-of-leds-from-arduino/

Y más información sobre cómo trabajar con Neopixels aquí: https://learn.adafruit.com/adafruit-neopixel-uberguide

Con 17 pines de E/S, diecisiete transistores NPN (seguidores de emisores para aumentar la corriente), no debería haber ningún problema en particular al mostrar 272 LED en combinaciones arbitrarias con un ciclo de trabajo de 1/17, con corriente promedio o 0,7 mA (200 mA/272), limitado por la capacidad del chip para reducir 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.

¿Puede aclarar qué tipo de circuito está sugiriendo aquí? El seguidor de emisor es una topología BJT.
@reemrevnivek: consulte la edición anterior. Estuve dándole vueltas mentalmente a algunas variaciones, y se confundieron. Si uno está agregando transistores para impulsar la unidad de lado alto pero no la unidad de lado bajo, deben ser BJT. Si uno estuviera usando transistores para ambos, los mosfets podrían ser mejores.

Si bien Windell Oskay presenta un buen argumento de que 104 LED es el máximo sin agregar más transistores, Tom Igoe ha publicado fotos de una matriz de 128 LED controlada 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?

No, está haciendo trampa usando un arduino mega. :) El mega tiene muchos más pines IO que un arduino normal.
@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 diodo.
Su enlace está muerto, y probablemente debería vincular a la respuesta de Windell Oskay . Puede que no parezca importante cuando publicas, pero a medida que aparecen más respuestas, tu publicación se aleja de la otra.
@KevinVermeer: ​​Enlace corregido apuntando a archive.org copia de la página original.