Existe um limite de quanta corrente um pino pode afundar?

13

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?

Peter Bloomfield
fonte
Que exibição exata você está usando (datasheet) e você está usando resistores em série? Talvez você frite a exibição das horas em vez do seu Arduino.
jippie
Não há número de peça, portanto não tenho a folha de dados exata. Eu assumi que cada LED tem uma voltagem direta de 2V e estou usando conservadoramente os resistores da série de 390 ohms no momento (durante o teste). Isso significa que eu estou dirigindo em torno de 8mA cada um, eu acho.
Peter Bloomfield
isso deve ficar bem.
jippie
Você poderia entrar em um pouco mais de detalhes sobre o que está fazendo, por favor. A razão pela qual estou perguntando é porque quero fazer a mesma coisa e sou novato. Eu sou RTFMing e sua pergunta foi o maior resultado para minha pesquisa. Eu sou [email protected]. obrigado.
User1928764 7/11/19

Respostas:

13

eu vou fritar minha prancha?

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 150 200 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.

Anindo Ghosh
fonte
2
Onde você encontrou o máximo de 150mA. para o pacote? Eu tenho 200mA sob classificações máximas absolutas .
jippie
@jippie I goofed :-)
Anindo Ghosh
9

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:

insira a descrição da imagem aqui
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

  • O máximo absoluto para qualquer pino de IO é de 40 mA ( esse é o máximo . Você nunca deve puxar 40 mA completos de um pino. Basicamente, é o limite no qual a Atmel não pode mais garantir que o chip não será danificado. Você deve sempre garantir que está abaixo desse limite atual. )
  • A corrente total de todos os pinos de E / S juntos é de 200 mA máx.
  • O pino de saída de 5V é bom para ~ 400 mA em USB, ~ 900 mA ao usar um adaptador de energia externo
    • Os 900 mA são para um adaptador que fornece ~ 7V. À medida que a tensão do adaptador aumenta, a quantidade de calor que o regulador precisa lidar também aumenta, portanto a corrente máxima diminui à medida que a tensão aumenta. Isso é chamado de limitação térmica
  • A saída de 3.3V é capaz de fornecer 150 mA .
    • Nota - Qualquer energia consumida no trilho de 3,3V deve passar pelo trilho de 5V . Portanto, se você tiver um dispositivo de 100 mA na saída 3.3V, você precisa também contá-lo contra a corrente total 5V.

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.

Connor Wolf
fonte