collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Matriz de LEDs RGB  (Lida 17492 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Matriz de LEDs RGB
« em: 04 de Agosto de 2014, 23:13 »
Entao achei que devia postar aqui nos projectos, como as vezes o pessoal pede para ver projectos.
Decidi ja à uns 2 meses fazer uma matriz de LEDs RGB, possivelmente de 800, levando a um total de 2400 para controlar.
Ora como pretendia tirar partido total das cores que um RGB consegue ter queria ter controlo de brilho.
Decidi usar o TLC5940.
Para controlar isto tudo tenho um Tiva TM4C1294XL launchpad, um ARM-M4 que funciona a 120Mhz

Possivelmente ja viram noutro post eu às voltas com ele a tentar mete-lo a funcionar. Tentei algumas coisas mas no fim decidi assim controla-lo:
Usar apenas o GrayScale mode.
Para o GSCLK uso o gerador de PWM do Tiva so porque nao queria usar um timer, nao vou usar motores e talvez precise do o timer para algo, mas pode-se perfeitamente usar um timer para o GSCLK.
Para enviar dados decidi usar o modulo Quad-SSI que permite mandar em paralelo 4 sinais de dados diferentes, com o mesmo CLK.
Escolhi GSCLK e SCLK de 30Mhz, a velocidade maxima do TLC5940. Nesta velocidade tive problemas de interferencias por causa ate de usar uma breadboard. Adicionei um anel de ferrite e ficou 5 estrelas.
Ora no final do ciclo de PWM é necessario pulsar o BLANK e tambem para guardar os valores enviados para o TLC5940 é necessario pulsar o XLAT. Para este fim de ciclo uso um timer para contar os "rising edge" do GSCLK, o timer automaticamente conta e gera um interrupt ao pulso nº 4096. Ai pulso o BLANK e o XLAT e digo ao modulo SSI que pode fazer um update aos dados quando quiser.
No modo que tenho agora estou sempre a enviar dados em todos os ciclos de PWM.

Da maneira que tenho o processador so tem de intervir no interrupt, em que perde menos de 400ns nele. E claro para mudar os valores de PWM sempre que quer.

Assim com um PWM de 12bits de resolução tenho um refresh rate de 7302hz, dando muito espaço para multiplexar. Tambem de considerar que o TLC5940 permite usar varios em cascata e como é necessário só 192bits para completamente configurar um TLC5940, dentro do ciclo de PWM é possivel usar 21 TLC5940 em serie.

E estou por aqui. Quando começar a vir o material ou tiver algum update venho ca postar. Por agora é so isto. Deixo 1 video a controlar 4 pequenas fitas RGB, espero que se veja


talvez este mostre melhor o efeito
https://www.youtube.com/watch?v=aaarrQ2wt98&feature=youtu.be
« Última modificação: 04 de Agosto de 2014, 23:47 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Matriz de LEDs RGB
« Responder #1 em: 05 de Agosto de 2014, 03:24 »
é de preposito aquele delay entre as fitas?..

vais montar a matriz de 800 leds com as matrizes 8x8?

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #2 em: 05 de Agosto de 2014, 05:10 »
é de preposito aquele delay entre as fitas?..

vais montar a matriz de 800 leds com as matrizes 8x8?

O delay é de proposito. Queria fazer um efeito de girar. Se tens algum padrao que queiras em especifico com essas 4 fitas posso fazer :p gosto de ir testando padroes enquanto nao me apetece implementar o UART

Isso ficava mt caro. Tava a pensar usar leds mesmo um pouco afastados, a baixa resoluçao nao importa :p mas era giro fazer assim com essas matrizes

Aqui esta um para veres que dá para mudar tudo ao mesmo tempo
https://www.youtube.com/watch?v=6jqI0UZAiS0&feature=youtu.be
« Última modificação: 05 de Agosto de 2014, 05:33 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Matriz de LEDs RGB
« Responder #3 em: 05 de Agosto de 2014, 13:02 »
Não vale a pena perder tempo com isso, é a conclusão a que já cheguei, ws2812b e um Teensy 3 ou 3.1 com FadeCandy e está feito, o software é extremamente bem feito, dá para centenas de leds, muito código para o lado do pc, muito flexivel.

Por outro lado, percebo a ideia de querer fazer isso, a ideia é aprender.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #4 em: 05 de Agosto de 2014, 13:28 »
Não vale a pena perder tempo com isso, é a conclusão a que já cheguei, ws2812b e um Teensy 3 ou 3.1 com FadeCandy e está feito, o software é extremamente bem feito, dá para centenas de leds, muito código para o lado do pc, muito flexivel.

Por outro lado, percebo a ideia de querer fazer isso, a ideia é aprender.

Pois é. A ideia era aprender. Nao considerei fitas de leds endereçadas porque pensei que eram muito mais caras mas mostraram-me que nem por isso. Talvez use isso apesar deste trabalho todo, mas nao sera trabalho perdido claro porque aprendi imensas coisas.
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #5 em: 08 de Agosto de 2014, 04:13 »
Pelos vistos agora tenho de usar fitas de leds endereçaveis, ou seja, o tlc5940 nao interessa.

Para isso gostava de opiniões, uso ws2811/ws2812 ou ws2801?

Parecem ser na pratica muito parecidos, tirando a comunicação. O ws2812 parece ser o mais popular mas acho-o tao lento, com um minimo de 30uS de envio por LED RGB. Se quisesse usar VGA nisto seria muito dificil. E tambem acho mais dificil de comunicar com ele

Por isso queria usar o ws2801 mas parece ser pouco popular apesar dos 25Mhz de clock possivel na comunicação serial e o facto de muitos MCUs terem um periferico dedicado para este tipo de comunicação
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Matriz de LEDs RGB
« Responder #6 em: 08 de Agosto de 2014, 04:46 »
ok certo.
mas usando as matrizes 8x8, até quantas davam pra usar? (em mono e matrizes rgb?)

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #7 em: 08 de Agosto de 2014, 05:29 »
ok certo.
mas usando as matrizes 8x8, até quantas davam pra usar? (em mono e matrizes rgb?)

Deixa me ver, que resolução pretendes de PWM? de 256-4096.

Para 4096:
30Mhz estao ambos os CLK, logo da uns 137uS para os 4096 rising edges de GSCLK, no fim necessita de 400nS para fazer o latch, reset do counter, etc. Dentro desses 137uS consegues em teoria ter em serie 21 TLC5940. Isto da jeito para a multiplexagem porque assim podes ainda multiplexar, por output do modulo, 146 em teoria se quiseres uma frequencia de 50Hz.
Ora 21*16*146=49056 Leds com resolução de 4096. So que isto claro é impratico porque assim cada led esta ligado muito pouco tempo e ficam com pouco brilho (e resoluçao claro) por isso multiplexar 4x ou 8x no maximo é melhor, por isso 1344 a 2688 LEDs é o valor teorico mais pratico.

E vê, fiz as contas com alguem que tem muito mais conhecimentos com este MCU e concluimos que o codigo para um ciclo PWM (de 4096) ocupa o processador 0,29% do tempo, isto aproximadamente.

Tendo este Tiva 4 modulos SSI, e este pouco overhead, podes quadrupiclar os valores anteriores.

Logo, se conseguires um sinal forte o suficiente para nao sofrer interferencia a esta velocidade e quantidade de cablagem que terá de ter entre os TLC5940, poderás ter potencialmente 5376-10752 LEDs com multiplexagem e 4 modulos SSI ou 1344 LEDs com 4 modulos SSI e sem mux. Falo sempre de LEDs individuais, RGB contam como 3.

ps: se queres algo de controlo mono de LEDs, sem controlo de brilho, sei melhor


« Última modificação: 08 de Agosto de 2014, 05:40 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #8 em: 08 de Agosto de 2014, 14:47 »
aqui esta um examplo a usar o ws2812, gostava era de experimentar o ws2801 mas nao tenho ca
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Matriz de LEDs RGB
« Responder #9 em: 08 de Agosto de 2014, 14:57 »
Lentos?
Vai ver o que fazem com o FadeCandy e se o achas lento.
E se vais fazer um ecrã com resolução VGA com leds, prepara uns milhares..
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #10 em: 08 de Agosto de 2014, 15:07 »
Lentos?
Vai ver o que fazem com o FadeCandy e se o achas lento.
E se vais fazer um ecrã com resolução VGA com leds, prepara uns milhares..

Acho muito mais dificil de trabalhar em relação ao ws2801 por causa to tipo de interface. 2º estando limiitado a 30uS por led, torna mais dificil ter fitas em serie em relação ao ws2801. O ws2812 necessita muito mais de envio paralelo. O efeito que por exemplo tenho em um dos meus videos com o TLC5940, envolve enviar um valor diferente a cada 20uS, impossivel para o ws2812 mas possivel como ws2801. Mas esta parte ate pode ser contornada
Uma matriz de 8x8 demora 0,00192s a receber todos os dados. Por isso acho que mesmo que usa-se DMA para enviar os dados pelos GPIO acho que nao vale o trabalho havendo algo com comunicação tipo SPI a 25Mhz

Quem disse resolução VGA? Apenas vou enviar por VGA. Converto o video que quero para a resolução que quero e depois na leitura do VGA leio de x em x pixels.
« Última modificação: 08 de Agosto de 2014, 15:10 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Matriz de LEDs RGB
« Responder #11 em: 08 de Agosto de 2014, 15:47 »
16 fitas de leds:
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #12 em: 08 de Agosto de 2014, 16:19 »
16 fitas de leds:


Ai está, envia até 64 por canal, e tem 8.
Demora 2ms por cada 64... Acho que dá para trabalhar com isso.
Significa que tenho de ir mais na direção de envio paralelo ja que nao da para ter em serie mais rapido.

Mas continuo com o problema do VGA...
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Matriz de LEDs RGB
« Responder #13 em: 08 de Agosto de 2014, 16:23 »
2ms são 500Hz, tens video a mais de 500Hz?
Se multiplexares os tlc tambem se torna mais lento e precisa de mais house-keeping só para manter os leds a funcionar correctamente, não existem soluções baratas no que toca a controlar quantidades massivas de leds.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #14 em: 08 de Agosto de 2014, 16:28 »
2ms são 500Hz, tens video a mais de 500Hz?
Se multiplexares os tlc tambem se torna mais lento e precisa de mais house-keeping só para manter os leds a funcionar correctamente, não existem soluções baratas no que toca a controlar quantidades massivas de leds.

Isso é verdade quanto a soluções baratas, ou faceis.

O problema é so ter os dados todos do VGA ao fim de 20mS, e so depois enviar os dados para os drivers.
Pensei em mal recebia um pixel enviar, mas isso tb nao sei se da. Tenho de ver.
Se conseguir implementar um solução como PWM dos timers + DMA em vez do SPI deve dar
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/