Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
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
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.
- ATMEGA328, microcontrolador
- MOC3020, TRIAC Optocoupler. Não ZeroCross.
- MAX458 ou SN75176BP, receptor DMX
- ISP814, AC optoacoplador
- Regulador 7805, 5v
- BTA24-600, 600V 25A TRIAC
- Cristal 20MHz
- 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
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
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
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
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
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:
Controlador IOT DMX com Arduino e Stage Monster Live: 6 etapas
Controlador IOT DMX com Arduino e Stage Monster Live: Controle a iluminação do palco e outros dispositivos DMX de seu telefone ou qualquer outro dispositivo habilitado para web. Vou mostrar como construir de forma rápida e fácil seu próprio controlador DMX que roda na plataforma Stage Monster Live usando um Arduino Mega
Testador e controlador Arduino DMX 512: 19 etapas
Arduino DMX 512 Tester and Controller: Actualizaciones, ficheros, codes … English versionFacebookHerramienta para pruebas e controle de iluminação de espectáculos a travez do protocolo DMX-512, ideal para hacer pruebas veloz en instalaciones fijas ou temporales de iluminación. Este p
Testador e controlador Arduino DMX 512 ENG: 19 etapas
Arduino DMX 512 Tester and Controller ENG: Updates, files, codes, schematics … Versión en EspañolFacebookControl ferramenta para teste e show de luz pelo protocolo DMX-512, ideal para testes rápidos em instalações fixas ou temporárias de iluminação. Este projeto surge da necessidade de ter um portab
Robô DMX Animatronic: 9 etapas (com imagens)
DMX Animatronic Robot: Este projeto descreve o desenvolvimento de um protótipo animatrônico totalmente funcional. Ele é implementado do zero e tem como objetivo ser um guia para o desenvolvimento de futuros robôs animatrônicos mais complexos. O sistema é baseado em um microcontro Arduino
Tudo em um · Terminador DMX e Testador DMX: 3 etapas
All in One · DMX Terminator & DMX Tester: Como técnico de iluminação, às vezes você precisa saber o quão saudáveis estão suas conexões dmx entre os aparelhos. Às vezes, devido aos fios, acessórios próprios ou flutuações de tensão, o sistema DMX está exposto a muitos problemas e erros. Então eu fiz