He estado experimentando con una matriz LED de 8x8 controlada por un Arduino Uno. Como creo que es típico, la matriz usa un ánodo común para cada fila y un cátodo común para cada columna.
Por el momento, tengo todos los pines de matriz conectados directamente a los pines IO en el Uno, y no he tenido ningún problema para encender los LED uno por uno. Sin embargo, recorrer toda la matriz hace que las actualizaciones sean un poco lentas, lo que significa que los LED no son tan brillantes como me gustaría.
Hasta donde sé, no puedo encender una fila completa de una sola vez, porque un pin individual en el Uno no es capaz de obtener suficiente corriente para conducir 8 LED separados al mismo tiempo (requiere al menos 10 mA cada uno para ser lo suficientemente brillante).
Se me ocurrió que lo contrario podría ser más seguro. Si enciendo una columna completa a la vez, cada pin solo tiene que generar suficiente corriente para un LED, lo que no debería ser un problema. Sin embargo, se basa en un pin que potencialmente hunde la corriente de los 8, totalizando al menos 80 mA.
¿Es esto posible, o voy a freír mi tabla?
fuente
Respuestas:
Resultado bastante probable. Este es el por qué:
El Arduino Uno utiliza el microcontrolador atMEGA328, que tiene una clasificación máxima absoluta de 40 mA de fuente o sumidero por GPIO. Además, la corriente total a través de los rieles de suministro o tierra (es decir, el total de todos los OP actuales quiere que los pines GPIO se hundan o se fuente) se clasifica a un máximo de
150200 mA.Siendo realistas, los gráficos actuales en la hoja de datos atMEGA328 ni siquiera llegan a 40 mA, por lo tanto, es más seguro restringir la corriente a quizás 20 mA en total por GPIO.
En otras palabras, si un GPIO se usa como fuente o sumidero, los límites siguen siendo bastante bajos y, en la práctica, deben mantenerse mucho más bajos que las clasificaciones máximas absolutas. Incluso por debajo del máximo absoluto, ejecutar un microcontrolador a una temperatura demasiado alta reduce su esperanza de vida.
Solución :
Utilice BJT, MOSFET o algún IC de controlador como el ULN2003 para conducir la corriente a través de los LED.
fuente
Voy a robar mi respuesta de cuando respondí esta pregunta en el último intento de arduino SE.
Esto es un poco complejo. Básicamente, hay una serie de factores limitantes:
Las líneas IO del microcontrolador (es decir, los pines analógicos y digitales) tienen un límite de corriente agregado (por ejemplo, total) y un límite por pin:
De la hoja de datos ATmega328P .
Sin embargo, dependiendo de cómo defina los "Pins" de Arduino, esta no es toda la historia.
El pin de 5V del arduino no está conectado a través del microcontrolador . Como tal, puede generar significativamente más energía. Cuando alimenta su arduino desde USB, la interfaz USB limita su consumo de energía total a 500 mA. Esto se comparte con los dispositivos en la placa arduino, por lo que la potencia disponible será algo menor.
Cuando utiliza una fuente de alimentación externa, a través del conector de alimentación del barril, está limitado por el regulador local de 5V, que tiene una capacidad máxima de 1 amperio . Sin embargo, esto también está limitado térmicamente , lo que significa que a medida que consume energía, el regulador se calentará. Cuando se sobrecalienta, se cerrará temporalmente.
La salida regulada de 3.3V es capaz de suministrar 150 mA máx., Que es el límite del regulador de 3.3V.
En resumen
Nota: Esto no se aplica al Arduino Due, y es probable que existan algunas diferencias para el Arduino Mega. Es probable que sea cierto en general para cualquier Arduino basado en el microcontrolador ATmega328.
fuente