• Welcome to LusoRobótica - Robótica em Português.
 

[ajuda] Matriz LED RGB Gigante

Started by LuisCarlos, 08 de August de 2012, 18:18

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

LuisCarlos

Boa tarde pessoal.
Eu quero iniciar um projeto este verão e fazer uma mesa, balcão com uma matriz de leds rgb. O verão passado fiz um cubo de leds 6*6*6 e até foi fácil uma vez que não foi preciso grandes invenções para colocar todos os leds a funcionarem com uma taxa de refresh suficientemente alta.
Mas agora quero aumentar o nível e fazer uma matriz de 2 dimensões com o mínimo de uns 30*30 pixeis RBG. E pela técnica que utilizei para fazer o cubo não funciona aqui uma vez que quero uma taxa de refresh suficiente rápida de toda a matriz.

O que eu queria é que quem me puder ajudar neste projeto, que drivers utilizar, e quantos de forma a ser economicamente viável.
Pensei utilizar o TLC5940 que tem 16 canais com 12 bits de PWM... e consigo obter de forma gratuita. Já tenho uns 10 em casa destes.

Também já pensei em adaptar uns drivers de vários displays 7 segmentos...

Como controladores, arduinos é a minha especialidade, tenho um PICKIT 3 mas ainda sou novato em PICs, também já programei 8052 mas não tenho nenhum em casa nem programadores. Também tenho um raspberry pi para o caso de precisar de uma velocidade de processamento e de clock muito mais rápido que os outros.

Se alguém pensar uma forma de tornar este projeto viável que diga, preciso de ajuda e agradeço imenso :)

senso

Fazes á mesma multiplexing,
Se arredondares um dos valores de 30 para 32 leds simplificas o meu exemplo.
Então é assim, supõe que tens 30 colunas e 32 linhas, como são leds's RGB e cada TLC5940 tem 16 saidas, usas 2 TLC's por cada cor, ou seja 6 TLC's ligados cor a cor a todos os leds, depois nas colunas usas shift-registers com transistores ou mosfets para ligar para coluna, agora é fazeres as contas ao bit-rate que precisas para ver o arduino é suficientemente rápido.
Avr fanboy

LuisCarlos

Pois esse é o método "tradicional". O problema é que para atualizar a matriz toda é preciso processar e mandar informação para 180 TLCs (2 TLCs/cor/linha*3 cores*30 colunas) (claro que na verdade são só 6 TLCs). E isso acho que demora muitooo tempo. Ou sou eu que estou já a pensar mal?

senso

SPI por hardware a correr a 8Mhz(velocidade máxima com o cristal de 16Mhz que o Arduino tem), e como para cada led têm de ser enviados 16 bits porque o frame minimo tem 8 bits, dá se não me engano 16*16*6*30bits para enviar que é igual a 46080bytes isto para cada frame por assim dizer, depois tens de correr isso ai a uns 30fps, acho que um arduino não tem capacidade de processamento para isso.
Seja o método que for, tens sempre de enviar os dados, tenhas 1 tlc ou tenhas 100.
Avr fanboy

LuisCarlos

Pois era o que eu pensava desde o inicio, um controlador normal não deve conseguir atualizar com velocidade suficiente. Mas não sei se fizeste essas contas bem... não percebi porque para cada led tem que ser enviados 16 bit, pensava que eram 12. O TLC tem 12 bits para o PWM e tem uma opção de Dot Correction de 8 bit o que faz diminuir o bitrate.

Talvez faça este projeto com um raspberry pi. Tenho um cá e estou para ter outro. São rápidos, isto era uma brincadeira para eles

senso

Não sei bem se consegues fazer o controlo dos TLC's com a RPi, precisas de um timer a gerar um clock.
Sim, é de 12 bits, mas o hardware de SPI do atmega usado no arduino não é capaz de enviar só 12 bits, mas sim 16bits, então tens de enviar 16 bits para cada led.
Avr fanboy

LuisCarlos

Gerava o clock por software no RPi.
Hum já percebi essa dos 16 bit thanks.

Mas não existe outra forma de controlar grandes matrizes? Uma vez vi um componente que controlava acho que era 16 vs 32 pixeis, do jeito mais ou menos como um LCD normal, mas era só o controlador.

Se não houver, pois começo experimento um arduino e vejo que consigo fazer, se não conseguir alcançar os objectivos salto para o RPi

senso

Esses controladores podem ser muitas coisas, podes fazer isso por exemplo numa FPGA, mas ai precisavas de aprender a programar VHDL/Verilog, esse projecto tenho a certeza que é exequivel com um atmega, agora com o IDE do Arduino não me parece, pois muitas das funções são dificeis de optimizar, por exemplo um digitalWrite pode demorar entre 30 e 40 ciclos, em vez de 1 ciclo demora a fazer directamente acesso directo aos pinos/portos.

Eu tenho uma plaquinha que fiz com um atmega8 e um tlc5940 a controlar 5 leds rgb, só mesmo para testar código e ver luzes bonitas, e em vez de usar um timer para gerar o clock para os tlc's usei o clockout e activei-o nos fuses do micro, e tenho o tlc a correr com pwm a 16Mhz em vez da meia duzia de Khz que o código do arduino usa, isso tem algumas vantagens mas por exemplo não consegues gerar um sinal de relógio estavel em software com a RPi, porque tens um sistema operativo que não te garante nada em tempo real.
Avr fanboy

Hugu

Quote from: LuisCarlos on 08 de August de 2012, 18:18
Boa tarde pessoal.
Eu quero iniciar um projeto este verão e fazer uma mesa, balcão com uma matriz de leds rgb. O verão passado fiz um cubo de leds 6*6*6 e até foi fácil uma vez que não foi preciso grandes invenções para colocar todos os leds a funcionarem com uma taxa de refresh suficientemente alta.

Fixe! ...tens fotos/video desse cubo pra mostrares ao ppl?  8)

LuisCarlos

Eu já programei FPGA com VHDL, mas não quero entrar por aí.
Sei que as funções do arduino não estão optimizadas para situações especializadas, por isso quando fiz o cubo, houve umas funções em que alterei a rapidez uns 400%.

Vou pensar no assunto melhor. Uma possibilidade é usar 2 controladores se não conseguir os objetivos de velocidade.

Muito obrigado Senso

senso

Eu acho que consegues fazer isso com o arduino, nem que tenhas de recorrer a código mais virado para o acesso directo a registos e pinos, mas da maneira que te disse, com 6 tlc's deve ser possivel, se usares 12 tlc's e dividires a matriz em duas matrizes de 15 colunas(isto para o hardware) fazias um update simultaneo a cada metade da matriz e ganhavas algum tempo para as interrupções, o split em software é muito simples, pois basta alterar os indices de leitura do array que tem os dados, para os primeiros 6 tlc's lês o array de dados do indice 0 ao 15 e para a outra metade lês do 16 ao 30, assim consegues o mesmo frame rate com metade dos updates.
Avr fanboy

LuisCarlos

#11
Quote from: Hugu on 08 de August de 2012, 22:43
Fixe! ...tens fotos/video desse cubo pra mostrares ao ppl?  8)

Tenho sim senhor. Não sei se te lembras mas foi por ti que comprei os leds azuis difusos e que te falei no projeto no verão passado :)

A câmara com que filmei não é assim muito boa e por isso parece que uns leds ainda estão acesos, apesar de já estarem apagados. Mas dá para perceber bem.
Fiz estas animações um bocado à pressa, a que mais gosto é a chuva, foi a mais trabalhosa mas consegui. Posso alterar facilmente a velocidade e intensidade da chuva. E em todas as animações posso alterar também facilmente a velocidade.
A única coisa que devia ter trabalhado um pouco mais foi a intensidade dos leds, que numas animações parecem mais intensas que outras. As que estão mais intensas são as que não estão a trabalhar sobre POV(perception of vision).

Cube LED 6*6*6 blue


Senso: Sim também já pensei em dividir em 2. Mandei vir muitas samples dos TLCs.

Agora só falta encontrar rgb baratos. Tens algum sitio de preferência para RGBs? Sei duns sites chineses mas queria saber se existe melhor hipótese.

Hugu

Quote from: LuisCarlos on 08 de August de 2012, 23:13
Tenho sim senhor. Não sei se te lembras mas foi por ti que comprei os leds azuis difusos e que te falei no projeto no verão passado :)
acho k sim me lembra! ja foi á um ano?! irra k o tempo passa depressa!  ;D

Quote
A câmara com que filmei não é assim muito boa e por isso parece que uns leds ainda estão acesos, apesar de já estarem apagados. Mas dá para perceber bem.
Fiz estas animações um bocado à pressa, a que mais gosto é a chuva, foi a mais trabalhosa mas consegui. Posso alterar facilmente a velocidade e intensidade da chuva. E em todas as animações posso alterar também facilmente a velocidade.
A única coisa que devia ter trabalhado um pouco mais foi a intensidade dos leds, que numas animações parecem mais intensas que outras. As que estão mais intensas são as que não estão a trabalhar sobre POV(perception of vision).
tá fixe! e o cubo está bem direitinho!  8)
alta estafa pra soldar esses leds todos nao?!  ::)

Ja agora, co programas os efeitos? é tupo à la pata ou fizeste um programazinho com feituras dos efeitos via grafico?

A G7 tb tem um cubo, mas de 3x3x3, mas o nosso orgulho sao a porrada de efeitos k fizemos pra eles:
(o projectista fez um programa em VB e eu ainda ajudei a idealizar/programar alguns dos efeitos 8))
Cubo de LEDs 3x3x3 em KIT na G7electrónica.net

Quote
Senso: Sim também já pensei em dividir em 2. Mandei vir muitas samples dos TLCs.
donde mandas vir os samples? ::)

Quote
Agora só falta encontrar rgb baratos. Tens algum sitio de preferência para RGBs? Sei duns sites chineses mas queria saber se existe melhor hipótese.
ebay! :P se precisares outra vez ajuda na aquisiçao dos leds rgb, dá-me um toke!  8)

LuisCarlos




Quote
alta estafa pra soldar esses leds todos nao?!  ::)
Fuuu nem imaginas, demorei 2 dias mas fiz uma base perfurada para ficar tudo direitinho. O pior era ao colocar as camadas umas em cima das outras. Mas depois de inalar muito fumo lá consegui meter tudo direitinho sem estragar nenhum led.

Quote
Ja agora, co programas os efeitos? é tupo à la pata ou fizeste um programazinho com feituras dos efeitos via grafico?
Tudo à pata. Todas as animações foram fáceis à excepção da chuva que demorei 1 dia completo. Não estava a conseguir e quando estava mesmo a desistir e ir deitar consegui por milagre meter a funcionar. :D

Quote
A G7 tb tem um cubo, mas de 3x3x3, mas o nosso orgulho sao a porrada de efeitos k fizemos pra eles:
(o projectista fez um programa em VB e eu ainda ajudei a idealizar/programar alguns dos efeitos 8))
Sim já o tinha visto, está muito engraçado e tem boas animações Deviam fazer um maior. O pessoal adora estes projetos com leds :)

Quote
donde mandas vir os samples? ::)
Os TLCs que disse acima mandei vir da Texas Instruments. Consigo mandar vir 5 desses cada vez com mais 2 ou 3 outros produtos acho eu.

Quote
ebay! :P se precisares outra vez ajuda na aquisiçao dos leds rgb, dá-me um toke!  8)

Se for o sitio mais barato vou já ver isso. Obrigadão :) Na altura tinha o problema de com o meu banco não conseguir fazer pagamentos online etc. Agora não há problemas :)

msaleiro

LuisCarlos e este semestre começares a ir ao eLab (http://ualgelab.wordpress.com/)? não? :P
msaleiro - Mário Saleiro
UAlg FCT-DEI / VisLab - Instituto de Sistemas e Robótica / eLab Hackerspace
http://thebitbangtheory.com