Ir ao conteúdo
  • Cadastre-se

Decodificando protocolo DMX 512


Posts recomendados

Pessoal,

Estou tentando resolver um problema, mas não está sendo fácil.

Vou contar a história para ver se alguém me ajuda com o básico.

Gosto muito de eletrônica, tenho bastante conhecimento nessa área, faço programação de sistemas e web porém muito básico no quesito de programação de microcontroladores, uma área onde estou me aventurando.

Estou me aposentando, mas não quero parar, por isso estou investindo em DJ para festas e eventos.

Possuo uma série de iluminação controladas por uma mesa DMX onde faço as cenas etc.

Mas tem algumas coisas que não são controladas pela mesa, como bolhas de sabão, luz negra, e um derby cujo controlador queimou.

Nesses casos, uso uma mesa chaveadora (nada mais que interruptores) que ligo ou desligo. Mas para tal, é necessário uma extensão para cada equipamento, o que torna um monte de cabos vindo da treliça.

Aí, pensando, cheguei à conclusão de que poderia utilizar da mesa para tal tarefa, usando um determinado endereço DMX e cujos canais ao invés de controlar dimmer ou cores, poderia acionar relés.

Exemplificando: canal 1 ao passar de 100, acionaria relé 1, canal 2 aciona relé 2 e assim sucessivamente.

Hoje uso a comunicação da mesa e a treliça wireless, então o único fio que desceria de lá seria o de energia.

Procurei pela internet algo para dar o pontapé inicial, mas o único  software que encontrei foi um já compilado, impossível analisar para ver como é a sequência.

O que preciso: Entender a lógica do endereçamento e como faz para ler os códigos vindos da mesa.

Alguém aí já brincou com isso? 

Segue abaixo o hardware, esse fácil de conseguir na internet...

 

xp615w.jpg

 

Link para o comentário
Compartilhar em outros sites

Descobri que o proprio CCS tem uma biblioteca que trata justamente do DMX512, bem como um programa exemplo. Mas acho que é para transmissão e nao a recepção.

A minha maior dificuldade é justamente a programaçao do mc. Ainda no aguardo de gente que ja tenha mmexido com isso.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@aphawk

Obrigado por lembrar de mim, amigo.

 

@Ricardo S Ferreira

N a verdade, o DMX512 já está meio ultrapassado pelo pacote de informações ser limitado a 512 bytes a 250KBps.

 

Só um pacote de informações de 512 bytes mandados em série, com start, stop e demais informações necessárias para serem decodificadas.

http://www.dmx512-online.com/packt.html

 

Para  muitos, parece rápido, mas já existe protocolos a 100MBps.

Mas no que posso lhe ajudar, realmente?

Antes leia o que li quando era leigo.

http://www.dmx512-online.com/

http://en.wikipedia.org/wiki/DMX512

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Grande @_xyko_

Realmente, o protocolo DMX512 está ultrapassado como comunicação, porém é o padrão para iluminação cênica.

E é essa parte que me interessa.

A teoria desse protocolo já entendi pois tem farto material na internet.

A minha dificuldade está em achar a lógica na programação do mc, pois não acho nenhum programinha na internet que me desse uma luz de como interpretar o que vem do MAX485, como interpretar o que vem do 4017 como endereçamento.

O único programa que eu achei foi um já compilado, pois o cidadão comercializa o kit do hardware, e não dá para analisar como funciona na prática.

No meu caso, não precisa ser em assembly, pois não vou usar PWM e nem precisa ser rápido, pois somente colocará alguns pinos do mc em "1" ou "0".

Existe dentro da biblioteca do CCS um exemplo, mas pelo que li, parece ser programa para uma mesa controladora e não o decodificador.

Continuo na luta. Até conseguir continuarei com as extensões elétricas...

 

PS Olha. Achei alguma coisa em "C", só que para AVR.

Acho que dá para começar...

DMX_Reciever.rar

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Ricardo S Ferreira

Me desculpe, meu amigo, mas o papel do 4017 serve pra identificar o canal inicial para o (***** que o desenhou). Posso até ser punido pelas palavras escritas entre aspas, mas é a verdade.

 

Agora veja um circuito meu:

Só usando 6 canais para controle RGB.

 

Isto com poucas linhas (do ATmega) de programa.

post-387879-0-26904000-1431044832.gif

 

Já pensou no BASCOM

 

http://avrhelp.mcselec.com/index.html?config_dmxslave.htm

 

Tudo prontinho.

 

 

Quanto a parte física e elétrica... alguns artigos.

http://electronicdesign.com/what-s-difference-between/what-s-difference-between-rs-232-and-rs-485-serial-interfaces

 

Dá uma olhada como é diferente uma transmissão de dadoscom sinais [1] e [0] RS232  em relação ao comum, e uma comunicação com sinais diferenciais, onde o RECEIVER pode se o MAX485 DALLAS/MAXIM) ou o SN75176 (TEXAS) , cujos datasheets explicam tudo sobre a parte elétrica que queres saber.  Enfim datasheets explicam tudo.

Explicação ponto a ponto ... estou a noite inteira a disposição.

 

 

 

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Qualquer uC com comunicação serial, devidamente configurada para 250KBps , teoricamente serve.


Pensando melhor, e vendo a limitação de pinos do 688, dá pra usar o 4017.

Pelo esquema apresentado, o pino RA1 joga 1 pulso no Pino 14 do 4017 (clock) e o RA2 analisa se a chave está aberta ou fechada. Seguindo a ideia o uC vai jogar 10 pulsos e no retorno (RA2) saber o que está aberto ou fechado, sabendo-se assim o endereço inicial DMX512 :aplausos:

Desculpe, foi falta de Tempo pra pensar um pouco!

Mesmo porque não sabia que o seu uC só tinha isso de pinos.

post-387879-0-39508800-1431049395_thumb.

 

Agora, amigo, programação de PIC... não conte comigo...

Abração!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

YES.

Ontem quando fui me deitar, ainda pensando na lógica desse trem, veio a inspiração.

Entendi a parte do endereçamento usando o CD4017. Um pequeno laço For-Next resolve a parada.

Ou, por outro lado, como será um equipamento para uso pessoal (não comercial), posso deixar um endereço fixo (ainda pensando nisso).

A parte pesada será decodificar o que vem do MAX485. Não dá para simular no Proteus, vou montar na protoboard.

Hoje vai ser difícil, pois é o dia das mães e minha esposa não vai querer eu enfiado num projeto :)

Mas está clareando.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Então... eu são programo em bascom e AVRs. Por isso não pude te ajudar mais.

Pra entender os sinais elétricos do protocolo, veja RS485

Pode chegar a 10Mbps dependendo do comprimento do cabo entre o transmissor e o receptor (até 1,2Km). Quanto mais longo, menor o baud rate. O DMX normal usa só 250Kbps.

Não esquecer de configurar o receptor para

1,8,2

- 1 start-bit

- 8 bits de dados

- 2 stop-bits

LSB primeiro.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...