Eu tenho experimentado uma matriz de LED 8x8 controlada por um Arduino Uno. Como eu acho típico, a matriz usa um ânodo comum para cada linha e um cátodo comum para cada coluna.
No momento, tenho todos os pinos da matriz conectados diretamente aos pinos de E / S no Uno e não tive problemas para acender os LEDs um a um. Passar por toda a matriz assim torna as atualizações um pouco lentas, o que significa que os LEDs não são tão brilhantes quanto eu gostaria.
Até onde eu sei, não consigo acender com segurança uma linha inteira de uma só vez, porque um pino individual no Uno não é capaz de fornecer corrente suficiente para acionar 8 LEDs separados ao mesmo tempo (exigindo pelo menos 10 mA cada seja brilhante o suficiente).
Ocorreu-me que o inverso poderia ser mais seguro. Se eu acender uma coluna inteira de cada vez, cada pino precisará fornecer corrente suficiente para um LED, o que não deve ser problema. No entanto, depende de um pino que afunda potencialmente a corrente de todos os 8, totalizando pelo menos 80mA.
Isso é possível ou vou fritar minha prancha?
fonte
Respostas:
Resultado bastante provável. Aqui está o porquê:
O Arduino Uno usa o microcontrolador atMEGA328, que possui uma classificação máxima absoluta de fonte ou coletor de 40 mA por GPIO. Além disso, a corrente total através dos trilhos de alimentação ou de aterramento (ou seja, o total de todo o OP atual quer que os pinos do GPIO afundem ou fonte) é classificada para um máximo de
150200 mA.Realisticamente, os gráficos atuais na folha de dados atMEGA328 nem chegam a 40 mA, portanto, é mais seguro restringir a corrente a talvez 20 mA total por GPIO.
Em outras palavras, se um GPIO é usado como fonte ou coletor, os limites permanecem bastante baixos e, na prática, devem ser mantidos muito abaixo das classificações máximas absolutas. Mesmo abaixo do máximo absoluto, a operação de um microcontrolador a uma temperatura muito alta reduz sua expectativa de vida.
Solução :
Use BJTs, MOSFETs ou algum driver IC, como o ULN2003, para realmente direcionar a corrente através dos LEDs.
fonte
Vou roubar minha resposta de quando respondi a essa pergunta na última tentativa do arduino SE.
Isso é um pouco complexo. Basicamente, existem vários fatores limitantes:
As linhas IO do microcontrolador (ou seja, os pinos analógicos e digitais) têm um limite de corrente agregado (por exemplo, total) e um limite por pinos:
Na folha de dados do ATmega328P .
No entanto, dependendo de como você define os "Pins" do Arduino, essa não é a história completa.
O pino de 5V do arduino não está conectado através do microcontrolador . Como tal, pode obter significativamente mais energia. Quando você está ligando o arduino via USB, a interface USB limita seu consumo total de energia a 500 mA. Isso é compartilhado com os dispositivos na placa do arduino, portanto, a energia disponível será um pouco menor.
Quando você estiver usando uma fonte de alimentação externa, através do conector de alimentação do barril, você estará limitado pelo regulador local de 5V, classificado para um máximo de 1 Amp . No entanto, isso também é limitado termicamente , o que significa que, à medida que você consome energia, o regulador esquenta. Quando superaquecer, será desligado temporariamente.
A saída regulada de 3,3V é capaz de fornecer 150 mA máximo, que é o limite do regulador de 3,3V.
Em suma
Nota: Isso não se aplica ao Arduino Due e provavelmente existem algumas diferenças para o Arduino Mega. Provavelmente, geralmente é verdade para qualquer Arduino baseado no microcontrolador ATmega328.
fonte