Índice:

4 Ch DMX Dimmer: 6 etapas
4 Ch DMX Dimmer: 6 etapas

Vídeo: 4 Ch DMX Dimmer: 6 etapas

Vídeo: 4 Ch DMX Dimmer: 6 etapas
Vídeo: pknight dimmer pack 4ch tutorial 2024, Julho
Anonim
4 Ch DMX Dimmer
4 Ch DMX Dimmer

O conceito é projetar e criar um dimmer portátil.

Requisitos:

  • DMX512 controlável
  • 4 canais
  • Portátil
  • Fácil de usar

Propus essa ideia ao meu professor na WSU porque queria combinar minhas paixões por teatro e computadores. Este projeto funcionou um pouco como meu projeto sênior no departamento de teatro. Se você tiver algum comentário ou pergunta, eu adoraria ajudar.

O desenvolvimento futuro pode incluir mais canais, conector DMX de 5 pinos, passagem DMX, 8 interruptores dip para mudar o canal, placa de circuito impresso.

Migrei este projeto de https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html porque ainda é popular, eu acho. Além disso, perdi meu arquivo seed do iWeb, então não posso mais atualizá-lo facilmente. Seria bom permitir que as pessoas compartilhassem suas perguntas sobre o projeto.

Etapa 1: reunindo o hardware

Reunindo o Hardware
Reunindo o Hardware

Hardware usado: a maior parte foi encomendada à Tayda Electronics. Gosto mais deles do que do DigiKey por causa da seleção menor e mais fácil de entender.

  1. ATMEGA328, microcontrolador
  2. MOC3020, TRIAC Optocoupler. Não ZeroCross.
  3. MAX458 ou SN75176BP, receptor DMX
  4. ISP814, AC optoacoplador
  5. Regulador 7805, 5v
  6. BTA24-600, 600V 25A TRIAC
  7. Cristal 20MHz
  8. Fonte de alimentação 9V

Alguns obstáculos e lições aprendidas ao longo do caminho

  • Se você não é um especialista em registro, use um ATMEGA328P
  • Optoacopladores errados. Você não quer Zero Cross
  • Os canais altos eram instáveis. Mudar de 16 MHz para 20 MHz resolveu esse problema
  • Incapaz de ter uma luz de status DMX porque a chamada de interrupção teve que ser muito rápida
  • A energia DC deve ser extremamente estável, qualquer ondulação fará com que o sinal DMX se torne muito ruidoso

O design do TRIAC veio da MRedmon, obrigado.

Etapa 2: Projeto do circuito

Projeto de Circuito
Projeto de Circuito

Usei o Fritzing 7.7 no Mac para projetar meu circuito.

O MAX485 na parte superior é usado para converter o sinal DMX em algo que o Arduino possa ler.

O 4N35 à esquerda é usado para detectar o cruzamento zero do sinal AC, de modo que o Arduino saberá em que momento diminuir a saída da onda senoidal. Mais sobre como o hardware e o software interagem na seção de software.

Eu recebi a pergunta: este projeto funcionará na Europa com 230V e 50Hz? Não moro na Europa, nem viajo para lá com frequência para poder testar este projeto. Deve funcionar, você só precisa modificar a linha de tempo de brilho do código para o atraso de tempo de frequência diferente.

Etapa 3: Projeto do circuito de Kovari

Projeto do circuito de Kovari
Projeto do circuito de Kovari
Projeto do circuito de Kovari
Projeto do circuito de Kovari

Durante o processo de ativação do meu site, pude ter algumas conversas por e-mail. Um foi com Kovari Andrei, que fez um design de circuito baseado neste projeto e queria compartilhar seu design. Não sou um designer de placa de circuito, mas é um projeto do Eagle. Deixe-me saber como funciona para você, se você usá-lo.

Etapa 4: Projeto do circuito de Giacomo

Projeto do circuito de Giacomo
Projeto do circuito de Giacomo

De vez em quando, as pessoas me enviarão mensagens com as emocionantes adaptações que fizeram com este instrutível e achei que deveria compartilhá-las com todos vocês.

Giacomo modificou o circuito para que um transformador com derivação central não fosse necessário. O pcb é unilateral e pode ser uma solução mais acessível para quem não pode fazer dupla face em casa (um pouco difícil).

Etapa 5: Software

Programas
Programas

Sou engenheiro de software profissional, então esta parte é a mais detalhada.

Summery: Quando o Arduino inicializa pela primeira vez, o método setup () é chamado. Lá eu configurei algumas das variáveis e locais de saída para serem usados posteriormente. zeroCrossInterupt () é chamado / executado toda vez que o AC passa da tensão positiva para a negativa. Ele definirá o sinalizador zeroCross para cada canal e iniciará o cronômetro. O método loop () é chamado continuamente para sempre. Para ligar a saída, o TRIAC só precisa ser disparado por 10 microssegundos. Se for a hora de acionar o TRIAC e o zeroCross ocorrer, a saída será ligada até o final da fase AC.

Existem alguns exemplos online que usei para iniciar este projeto. A principal coisa que não consegui encontrar foi ter várias saídas TRIAC. Outros usaram a função de atraso para PWM a saída, mas isso não funcionaria no meu caso porque o ATMEGA tem que estar ouvindo DMX o tempo todo. Resolvi isso pulsando o TRIAC em tantos ms após o zero-cross. Ao pulsar o TRIAC para mais perto do cruzamento zero, mais da onda do pecado é produzida.

Aqui está a aparência da meia onda sin de 120 VCA em um osciloscópio, acima.

O ISP814 está conectado à interrupção 1. Portanto, quando ele recebe o sinal de que o AC faz a transição de positivo para negativo ou vice-versa, ele define o zeroCross para cada canal como verdadeiro e inicia o cronômetro.

No método loop (), ele verifica cada canal se zeroCross é verdadeiro e o tempo para sua ativação passou, ele pulsará o TRIAC por 10 microssegundos. Isso é o suficiente para ligar o TRIAC. Assim que o TRIAC for ligado, ele permanecerá ligado até zeroCross. A luz piscaria quando o DMX estivesse em torno de 3%, então adicionei o truncamento para evitá-lo. Isso fazia com que o Arduino ficasse muito lento e o pulso às vezes disparava a próxima onda sinuosa em vez dos últimos 4% da onda.

Também no loop () eu defino o valor PWM dos LEDs de status. Esses LEDs podem usar o PWM interno gerado pelo Arduino porque não precisamos nos preocupar com o zeroCross do AC. Assim que o PWM estiver configurado, o Arduino continuará com aquele brilho até que seja informado de outra forma.

Conforme observado nos comentários principais, a fim de usar uma interrupção DMX no pino 2 e executar a 20 MHz, você terá que editar alguns dos arquivos do aplicativo Arduino. Em HardwareSerial.cpp, um pedaço de código deve ser excluído, o que nos permite escrever nossa própria chamada de interrupção. Este método ISR está na parte inferior do código para lidar com a interrupção DMX. Se você for usar um Arduino como um programador de ISP, certifique-se de reverter suas alterações para HardwareSerial.cpp, caso contrário, o ATMEGA328 na placa do pão ficará inacessível. A segunda mudança é mais fácil. O arquivo boards.txt deve ser alterado para a nova velocidade de clock de 20 MHz.

brilho [ch] = mapa (DmxRxField [ch], 0, 265, 8000, 0);

O brilho é mapeado para 8000 porque essa é a quantidade de microssegundos de 1/2 uma onda senoidal CA a 60 Hz. Portanto, com brilho total de 256 DMX, o programa deixará 1/2 da onda senoidal AC LIGADA para 8.000us. Eu vim com 8000 por meio de adivinhar e verificar. Fazendo as contas de 1000000us / 60hz / 2 = 8333, então esse pode ser um número melhor, mas ter os 333us extras permite que o TRIAC abra e qualquer jitter no programa é provavelmente uma boa ideia.

No Arduino 1.5.3, eles moveram a localização do arquivo HardwareSerial.cpp. Agora é /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Você precisará comentar todo este bloco se começar com a linha 39: #if definido (USART_RX_vect)

Caso contrário, você terminará com este erro: core / core.a (HardwareSerial0.cpp.o): Na função `_vector_18 ':

Etapa 6: Empacotando

Empacotando
Empacotando
Empacotando
Empacotando
Empacotando
Empacotando

Peguei a caixa de projeto cinza em Menards em sua seção elétrica. Usei uma serra alternativa para cortar os orifícios dos plugues elétricos. A caixa tem uma pinça c de teatro presa à parte superior para pendurar. Luzes de status para cada entrada e saída para ajudar a diagnosticar se houver um problema. Um fabricante de etiquetas foi usado para explicar as diferentes portas do dispositivo. Os números próximos a cada plugue representam o número do canal DMX. Fixei a placa de circuito e o transformador com um pouco de cola quente. Os LEDs estão presos no lugar com suportes de led.

Recomendado: