Como controle várias centenas de leds individuais com o (s) Arduino (s)?

10

Estou trabalhando em um projeto de eletrônica que envolve centenas de LEDs. (Falando acima de seiscentos a setecentos LEDs ... muito, eu sei.) Existe alguma maneira de controlar tantos LEDs com um ou mais Arduinos? Eu gostaria de poder acessar / controlar cada LED individualmente, pois o que eu quero fazer é plotar LEDs em um mapa de parede do mundo. Vou então interagir com o Arduino com o Google Analytics e quando alguém navega no meu site a partir de um determinado lugar do mundo, o LED mais próximo de sua região acenderá quase em tempo real.

Qualquer ajuda seria apreciada. Obrigado! Eu tentei pesquisar alguns e ler sobre multiplexação e charlie-plexing, mas esses parecem atingir o máximo em 100 ou mais? Estou assumindo que precisaria de hardware / componentes externos para poder controlar tantos LEDs, mas o que exatamente eu precisaria para que isso acontecesse? Alguém já criou uma matriz de LED tão grande?

kaffolder
fonte

Respostas:

9

Quando você multiplexa um grande número de LEDs individualmente, a maneira comum é usar uma matriz N x M. O tempo é dividido em N etapas, em cada etapa você ativa uma das N linhas de linha e as linhas da coluna que correspondem aos LEDs que você deseja ativar. Observe que as linhas da linha podem transportar M vezes a corrente do LED, o que exige um buffer. Cada LED está aceso apenas 1 / N, portanto, para manter o brilho normal, você deve aumentar a dobra N atual. A maioria dos LEds não gosta disso. O Charlieplexing não é prático nesta situação devido às grandes correntes envolvidas.

Da sua pergunta, entendo que você deseja ativar apenas 1 LED por vez? Nesse caso, não há nada errado com o Charlieplexing. Um uC com 31 pinos de E / S pode acionar 900 LEDs. Parece que a consrução será um pesadelo ...


Atualização 5 anos depois: A multiplexação normal ou a Charlieplexing são boas quando você tem muito tempo em mãos, mas quando eu tinha que controlar centenas de LEDs agora, comprava uma longa faixa de LEDs WS2801.

Wouter van Ooijen
fonte
Eu acho que tenho algo a acrescentar. Bem, se o problema é alta corrente, use alta tensão. como 9v, mas por um período muito curto de 10mS e ciclo de trabalho corretamente calculado. Como também usa o aumento do tempo de vida útil das lâmpadas LED.
Standard Sandun
A voltagem reduzida por um LED é fixa, assim como a voltagem de saída de um Arduino (provavelmente 5V, para alguns tipos 3,3V). Usar uma corrente mais alta com um ciclo de trabalho menor geralmente diminui a vida útil do LED.
Wouter van Ooijen
9

Você poderia usar um registro de deslocamento 74HC595 (ou similar) barato e facilmente encontrado para controlar facilmente centenas de LEDs usando apenas alguns pinos do arduino.

Há até um tutorial sobre isso no site do Arduino!

Troca de Série em Paralelo com um 74HC595

Shifting Out e o chip 595

Em algum momento ou outro, você pode ficar sem pinos na placa do Arduino e precisar estendê-la com registros de turno. Este exemplo é baseado no 74HC595. A folha de dados refere-se ao 74HC595 como um "registro de turno de entrada, saída serial ou paralela de 8 bits com travas de saída; 3 estados". Em outras palavras, você pode usá-lo para controlar 8 saídas por vez, enquanto ocupa apenas alguns pinos no seu microcontrolador. Você pode vincular vários registros para aumentar ainda mais sua saída.

Michael Choi
fonte
Seriam muitos registros de turno, mas funcionaria :) Você precisaria de aproximadamente 88 (700 leds / 8 leds por chip) e apenas 1 mcu.
31412 Johan Johan
11
Não se esqueça dos drivers lógicos adicionais, já que 88 entradas são suficientes.
Ignacio Vazquez-Abrams
2

Eu construiria isso de maneira modular. O 6960 da Maxim fornecerá 64 LEDs para você, embora seja um pouco caro. Eles são conduzidos com uma interface serial e você pode conectar até 256 deles juntos.

O 7218/7221 também funcionaria.

Eric Gunnerson
fonte
2

Uma resposta tardia para essa pergunta, mas aqui estão 528 LEDs Charlieplexados em um único PICAXE 40X2. Seriam 930 LEDs se todos os pinos fossem dedicados ao trabalho.

A compilação: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

Um vídeo: http://www.youtube.com/watch?v=82LvqiaH-iA

A arquitetura do PICAXE é bastante lenta, portanto, o número máximo de LEDs que podem ser acesos simultaneamente é limitado a cerca de 15 antes que o flicker se torne um problema. Um processador mais rápido e uma programação mais inteligente aumentariam esse número significativamente.

Buzby
fonte
1

Não tenho certeza se minha resposta é boa ou não ... mas por que não falar sobre listras de LED endereçáveis ​​WS2811 ??

Queremos fazer uma matriz de LED para mostrar o texto. Há um projeto aqui ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), feito em um Teensy, que é quase a mesma coisa que um Arduino.

Eu acho que ele usa o conceito de PWM (Modulação por Largura de Pulso) e, assim, permite enviar dados complexos para as faixas do leds com um único fio.

Mas, novamente, não tenho certeza se minha resposta é boa ...

Simon
fonte
O problema é que o tempo necessário restringe o número de LEDs que você pode encadear e espalhá-los por várias cadeias aumenta o tempo total de processamento.
Ignacio Vazquez-Abrams
0

Tivemos uma boa discussão sobre a condução de muitos LEDs em uma pergunta recente aqui. Minha resposta aqui parece ser diretamente aplicável ao seu problema aqui. Veja a resposta aqui:

Condução de LEDs a longa distância

Michael Karas
fonte
4
Você pode trazer as informações aplicáveis ​​e adaptá-las a esta pergunta, se sua resposta funcionar perfeitamente para ambas, é um sinal de uma duplicata exata.
Kortuk
0

Com base nas informações em http://bildr.org/?s=shift+register no registrador de turnos 74H595 com um Arduino Uno, que dizia 'se você tiver 1000 desses encadeados', um projeto foi iniciado em um display LED com 320 LEDS. Quando cheguei acima de 100 LEDs, houve uma tremulação ruim e, eventualmente, fritou o Arduino.

Então conversei com o suporte técnico da Sparkfun, que me vendeu as placas de interrupção para o 74H595. Ele disse que você só pode ter cinco ou seis LEDs por vez. Então, voltei e reli o artigo no BLDR e percebi que você pode controlar milhares de LEDs usando o 74H595 / Arduino, mas você pode ter apenas uma dúzia ou mais a qualquer momento. (Isso faz sentido porque o Arduino permitirá 200mA através da saída de 5 volts e cada LED consome 20mA, de modo que cerca de dez é tudo o que será energizado com segurança)

Transistores foram vistos que podem ser ligados com 1mA de corrente. Se isso for verdade, é possível projetar um circuito que controle transistores que possuem um coletor de voltagem / corrente muito maior para o fluxo do emissor. Então, pode-se usar a combinação Arduino / 74H595 para controlar transistores que em um circuito com corrente mais alta.

Allen em Dallas

Allen Pitts
fonte