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 17490 vezes)

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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Matriz de LEDs RGB
« Responder #15 em: 08 de Agosto de 2014, 16:32 »
E porque não fazes o pré-processamento todo num pc, e fazes um delay de 1 frame entre o real e o que sai para o teu monitor?
Assim sincronizas os leds com o video.

Estás a fazer algo estilo ambilight?
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #16 em: 08 de Agosto de 2014, 16:35 »
é +- isso. O problema é tb nao saber controlar bem a saida VGA da minha GPU.
Agora que penso nisso, eu ia descartar alguns dos pixeis na resoluçã 1024x768 para se adequar à dos LEDs... assim ha tempo entre pixeis para enviar.
Hum...
tenho mesmo de meter isto a funcionar com os timers e dma
Tiva MCU é que é.

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

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Matriz de LEDs RGB
« Responder #17 em: 08 de Agosto de 2014, 16:57 »
Estás a ter em consideração que o sinal VGA é analógico, certo?

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #18 em: 08 de Agosto de 2014, 17:29 »
Estás a ter em consideração que o sinal VGA é analógico, certo?

yep, tenho um adc de 2Milhoes de sample por segundo. claro que isto será impreciso a essa velocidade mas basta funciona a 60mil por segundo
Tiva MCU é que é.

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

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Matriz de LEDs RGB
« Responder #19 em: 08 de Agosto de 2014, 19:47 »
640x480*60Hz tem "um pixel clock" de 25.175 MHz, e são 3 canais que tens de samplar (RGB) mais trigger nos sincronismos.
http://tinyvga.com/vga-timing/640x480@60Hz

2Msps não dá para nada neste caso. Já experimentaste capturar uma frame como "proof of concept"?

Video é filho da mãe de processar, por isso é que há ICs específicos para captura e geração do mesmo, e quando se quer processamento a sério não é estranho usarem-se FPGAs


Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #20 em: 08 de Agosto de 2014, 23:16 »
fiquei com ideia que o VGA envia 3 sinais analogicos a cada H-sync.
http://www-mtl.mit.edu/Courses/6.111/labkit/images/vga_frame.png

E que a essa resolução que disseste, que se usa 31.469Khz no H-sync
Tiva MCU é que é.

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

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Matriz de LEDs RGB
« Responder #21 em: 09 de Agosto de 2014, 00:20 »
sim, envia um sinal analógico a cada h-sinc (31.xxkhz). Esse sinal analógico codifica uma linha horizontal (de onde vem o H). Não é uma tensão analógica fixa, é o valor de brilho nessa cor para cada pixel nessa linha horizontal. Como há intervalos de blanking não é bem 640*31khz (ou a resolução horizontal que for), mas sim mais um bocadinho.

Ora pensa um bocadinho comigo: se o impulsos de sicronismo fossem instântaneos e não ouvesse intervalos de blanking (que era para os CRT ter tempo de fazer o feixe retornar de um lado do ecrã ao outro), tinhamos as seguintes contas para a resolução VGA mais standard de 640x480 a 60Hz de refrescamento:
O refrescamento é 60Hz, logo o V-sync também vai ser 60Hz, porque a imagem é desenhada em linhas horizontais e só depois da imagem toda desenhada é que vais reiniciar(sync) a começar outra vez de cima (vertical). Como nessa frequência vertical vais ter de desenhar 480 linhas, tens de ter um refrescamento horizontal no mínimo de 60Hz * 480 linhas,  para dar tempo de desenhar as linhas todas, o que dá 28.8khz (tás a ver como é perto dos 31khz? a diferença é principalmente para o tal blanking).
Falta dividir as linhas em pixeis. Para dar tempo de desenhar os pixeis todos numa linha, a frequência de pixel terá de ser no mínimo 28.8Khz*640 =18.432Mhz. Como já não eram bem os 28.8Khz, e também tens de ter blanking horizontal, dão os tais 25.175Mhz. Continuamos na mesma ordem de grandeza.
No mundo analógico estas frequências não são nada de outro mundo, mas no domínio digital têm que se lhe diga...

Espero que tenha ajudado.
« Última modificação: 09 de Agosto de 2014, 00:36 por jm_araujo »

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #22 em: 09 de Agosto de 2014, 00:42 »
Ajudas-te muito. Obrigado.

Sim isso realmente nao tinha entendido entao e é mesmo complicado para o MCU ler isso.
Tiva MCU é que é.

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

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Matriz de LEDs RGB
« Responder #23 em: 09 de Agosto de 2014, 13:47 »
640 x 480 x 3 = 921.600 LEDs
Criar um display à base de LEDs é bastante complexo e dispendioso, embora haja quem os faça para locais públicos, não é prático para uso pessoal em que sairá mais caro que uma TV de LEDs.

Quando a saída de vídeo é de uma placa gráfica já fica metade do trabalho resolvido, entretanto iria para os 320x240 dando 230.400 LEDs, isso pode ser feito a metade da velocidade de captura e ignorando linhas intercaladamente (boa altura para tratar da exibição de uma linha de LEDs), deste modo a resolução de saída da placa gráfica até pode ser bem maior se for controlada a captura.

StarRider

  • Visitante
Re: Matriz de LEDs RGB
« Responder #24 em: 09 de Agosto de 2014, 15:01 »
Boas,

Independentemente de ser viável ou não penso que estás de parabéns pelo projecto.

Um TIVA fica um pouco "curto" ... mas com um qualquer DSP (a TI tem os KeyStone com cores ARM
e os C6000/C5000) consegues levar esse projecto para a frente na boa, de qualquer forma esse core
é suficiente para pelo menos um mockup de dimensões mais reduzidas.

Abraços,
PA

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Matriz de LEDs RGB
« Responder #25 em: 09 de Agosto de 2014, 15:16 »
VGA ta de parte. Como isto é para o clube e a ideia é tambem desenvolver conhecimentos talvez arranje alguem mais interessado na area e incluo uma FPGA pequena para fazer a interface VGA <-> UART com a redução de pixeis e tudo ou um RPI. Ora porque isso em vez de por exemplo usar processing? Quero poder ligar qualquer computador por VGA e imprimir a imagem nos LEDs. FPGA para video é algo que o meu departamento usa muito e um dos professores que as vezes peço ajuda é especializado nisso.

Mas por agora vou ter de criar algo para o PC tratar dos dados e enviar por USB.

Como o pessoal quer mesmo que use o ws2812 em vez do 2801, tive a pensar melhor e consigo de forma viavel ter 8 saidas paralelas que conseguem teoricamente 500leds cada. Isto usando DMA ligado a GPIO e controlado por timers. Como tenho 32 canais de DMA, uma carrada de GPIO e 16 timers de 16bits, acho que consigo expandir isto até 32 saidas paralelas. Tenho so de ver como o DMA trata dos stalls

Usar um c5000/c6000 nao me parece viavel por serem tao caros e nao costumar ver muito info sobre eles. Parece mais viavel usar um combo de Tivas, Tiva+RPI ou Tiva+FPGA.
« Última modificação: 09 de Agosto de 2014, 15:18 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 #26 em: 16 de Agosto de 2014, 23:37 »
Ora entao boas noites  ;D

Desde o ultimo post ja fiz muita coisa, ou pelo menos ja aprendi muita coisa, isso de certeza.

Decidi realmente usar os ws2812. E como os controlar? Com as portas digitais. Claro isto envolveria muito uso do processador, por isso que vou usar? DMA.
É a forma que o fadecandy e o teensy controlam os ws2812 com 8 outputs, tendo 8x mais taxa de refrescamento.

Bem eu nao demorei tanto tempo so para decidir como fazer. Ja tenho feito! Pelo menos a parte de controlar o ws2812 a partir dos valores na ram. Ainda falta uma forma de mandar dados do computador para a MCU, tanto o codigo do computador como do receber do MCU.

Ok entao aqui ao meu lado tenho neste momento 8 ws2812 em serie a piscar (so tinha estes) com valores de um random. E com os 8 outputs não? Não! Eu tenho 32 outputs controlados a partir de 4 arrays de varios membros de 1byte.
O unica desvantagem grande que tem em relação ao teensy é o contador do DMA. O do Tiva é apenas de 10bits contra os 15bits do teensy.

O modo que tenho isto a funcionar nao é tão eficiente, necessita de 24*3bytes para controlar 1 ws2812 por cada 8 portas (ou seja ta a controlar 8 ws2812). Com o limite do DMA so poder fazer 1024 transferencias antes de ter de ser re-configurado pelo processador, o DMA so consegue enviar dados para 14 ws2812 por transferencia (14 ws2812 por porta, por isso 32*14). Entao de 14 em 14 Ws2812 tem de rapidamente re-configurar o source address e ligar o DMA. O Tiva que tenho é um ARM-M4 120Mhz logo executa os interrupts muito rapido (ja testei alguns interrupts a re-configurar o SPI e consegui um tempo dentro do interrupt de 400ns e o interrupt nao demora mais de 180nS a fazer push and pop)
Tendo 256Kb de RAM deixa espaço para controlar muitos LEDs mesmo na forma pouco optimizada que tenho para enviar dados.

TODO:
Protocolo UART para receber dados e actualizar as tabelas.
Programar RPI ou Computador para enviar dados para o controlador
Optimizar o trigger do DMA usando mais perifericos e diminuindo o uso de RAM para 3x menos
Estudar funcionamentos mais complexos de DMA para ultrupassar o limite de 1024 transferencias (talvez Scater-Gather)
Possivelmente anexar um projecto de outro membro que envolva uma FPGA converter dados VGA para UART com a resolução e velocidade apropriada

Deixo-vos um video de quando tinha apenas 8 outputs paralelos, tambem nao tenho ca material para vos mostrar 32 outputs a funcionarao mesmo tempo.
« Última modificação: 17 de Agosto de 2014, 00:50 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 #27 em: 01 de Setembro de 2014, 19:18 »
Já tenho o DMA a funcionar em modo ping-pong. Agora que tenho uma fita de LEDs verifiquei que era mesmo necessário para controlar mais de 14 LEDs

Então aqui esta um exemplo de isto a funcionar com uma fita de 30 LEDs
https://www.youtube.com/watch?v=eeEgYPr_E8o&feature=youtu.be
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 #28 em: 05 de Setembro de 2014, 16:26 »
Bem até agora so tenho metido coisas ou com muito poucos LEDs ou sem controlo de brilho qualquer.
E que tal 60LEDs?
Tiva MCU é que é.

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