Tabla de contenido:

Atenuador DMX de 4 canales: 6 pasos
Atenuador DMX de 4 canales: 6 pasos

Video: Atenuador DMX de 4 canales: 6 pasos

Video: Atenuador DMX de 4 canales: 6 pasos
Video: UNIVERSOS Y DIRECCIONES DMX 2024, Noviembre
Anonim
Atenuador DMX de 4 canales
Atenuador DMX de 4 canales

El concepto es diseñar y crear un atenuador portátil.

Requerimientos:

  • DMX512 controlable
  • 4 canales
  • Portátil
  • Fácil de usar

Le propuse esta idea a mi profesor en WSU porque quería combinar mis pasiones por el teatro y las computadoras. Este proyecto actuó un poco como mi proyecto senior en el departamento de teatro. Si tiene algún comentario o pregunta, me encantaría ayudarlo.

El desarrollo futuro podría incluir más canales, conector DMX de 5 pines, paso a través de DMX, 8 interruptores DIP para cambiar el canal, placa de circuito impreso.

He migrado este proyecto de https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html porque todavía es popular, supongo. También perdí mi archivo semilla de iWeb, por lo que ya no puedo actualizarlo fácilmente. Sería bueno permitir que las personas compartan sus preguntas sobre el proyecto entre sí.

Paso 1: recopilación del hardware

Reunir el hardware
Reunir el hardware

Hardware utilizado: la mayor parte se solicitó a Tayda Electronics. Me gustan más que DigiKey debido a la selección más pequeña y más fácil de entender.

  1. ATMEGA328, Microcontrolador
  2. MOC3020, Optoacoplador TRIAC. No ZeroCross.
  3. MAX458 o SN75176BP, receptor DMX
  4. ISP814, optoacoplador de CA
  5. 7805, regulador de 5v
  6. BTA24-600, 600 V 25 A TRIAC
  7. Cristal de 20 MHz
  8. Fuente de alimentación de 9V

Algunos obstáculos y lecciones aprendidas en el camino

  • Si no es un experto en registros, quédese con un ATMEGA328P
  • Optoacopladores incorrectos. Tu no quieres Zero Cross
  • Los canales altos eran inestables. Cambiar de 16 MHz a 20 MHz resolvió este problema
  • No se puede tener una luz de estado DMX porque la llamada de interrupción tenía que ser muy rápida
  • La alimentación de CC tiene que ser extremadamente estable, cualquier ondulación hará que la señal DMX se vuelva muy ruidosa

El diseño de TRIAC vino de MRedmon, gracias.

Paso 2: Diseño de circuito

Diseño de circuito
Diseño de circuito

Usé Fritzing 7.7 en Mac para diseñar mi circuito.

El MAX485 en la parte superior se usa para convertir la señal DMX en algo que Arduino pueda leer.

El 4N35 de la izquierda se usa para detectar el cruce por cero de la señal de CA para que Arduino sepa a qué hora atenuar la salida de la onda sinusoidal. Más sobre cómo interactúan el hardware y el software en la sección de software.

Me han preguntado si este proyecto funcionará en Europa con 230V y 50Hz. No vivo en Europa, ni viajo allí a menudo para poder probar este diseño. Debería funcionar, solo tendría que modificar la línea de tiempo de brillo del código para el retardo de tiempo de frecuencia diferente.

Paso 3: Diseño del circuito de Kovari

Diseño del circuito de Kovari
Diseño del circuito de Kovari
Diseño del circuito de Kovari
Diseño del circuito de Kovari

A través del proceso de tener mi sitio web, pude tener algunas conversaciones por correo electrónico. Uno fue con Kovari Andrei, quien hizo un diseño de circuito basado en este proyecto y quería compartir su diseño. No soy diseñador de placas de circuito, pero es un proyecto de Eagle. Déjame saber cómo te funciona si lo usas.

Paso 4: Diseño del circuito de Giacomo

Diseño de circuitos de Giacomo
Diseño de circuitos de Giacomo

De vez en cuando, la gente me envía mensajes con las emocionantes adaptaciones que han hecho con este instructivo y pensé que debería compartirlas con todos ustedes.

Giacomo modificó el circuito para que no se requiriera un transformador con toma central. La placa de circuito impreso es de una cara y puede ser una solución más asequible para quienes no pueden hacer la doble cara en casa (un poco difícil).

Paso 5: software

Software
Software

Soy ingeniero de software de profesión, por lo que esta parte es la más detallada.

Summery: Cuando Arduino arranca por primera vez, se llama al método setup (). Allí configuré algunas de las variables y ubicaciones de salida para usarlas más adelante. zeroCrossInterupt () se llama / se ejecuta cada vez que la CA cruza de voltaje positivo a negativo. Establecerá la bandera zeroCross para cada canal e iniciará el temporizador. El método loop () se llama continuamente para siempre. Para encender la salida, el TRIAC solo debe activarse durante 10 microsegundos. Si es el momento de activar el TRIAC y ha ocurrido zeroCross, la salida se encenderá hasta el final de la fase de CA.

Hubo algunos ejemplos en línea que utilicé para comenzar este proyecto. Lo principal que no pude encontrar fue tener múltiples salidas TRIAC. Otros usaron la función de retardo para PWM en la salida, pero eso no funcionaría en mi caso porque el ATMEGA tiene que estar escuchando DMX todo el tiempo. Resolví esto pulsando el TRIAC a tantos ms después del cruce por cero. Pulsando el TRIAC más cerca del cruce por cero, se emite más onda sinusoidal.

Así es como se ve la media onda sinusoidal de 120 VCA en un osciloscopio, arriba.

El ISP814 está conectado a la interrupción 1. Por lo tanto, cuando recibe la señal de que la CA pasa de positivo a negativo o viceversa, establece el cruce cero para cada canal en verdadero e inicia el cronómetro.

En el método loop (), verifica cada canal si zeroCross es verdadero y ha pasado el tiempo para que se active, pulsará el TRIAC durante 10 microsegundos. Esto es suficiente para encender el TRIAC. Una vez que se enciende un TRIAC, permanecerá encendido hasta zeroCross. La luz parpadeaba cuando el DMX estaba alrededor del 3%, así que agregué el truncado allí para evitarlo. Esto se debió a que el Arduino era demasiado lento, y el pulso algunas veces desencadenaba la siguiente onda sinusoidal en lugar del último 4% de la onda.

También en el loop () configuro el valor PWM de los LED de estado. Estos LED pueden usar el PWM interno generado por Arduino porque no tenemos que preocuparnos por el zeroCross de AC. Una vez que se configura el PWM, Arduino continuará con ese brillo hasta que se indique lo contrario.

Como se señaló en los comentarios principales, para usar una interrupción DMX en el pin 2 y ejecutar a 20MHz, tendrá que editar algunos de los archivos de la aplicación Arduino. En HardwareSerial.cpp se debe eliminar un fragmento de código, esto nos permite escribir nuestra propia llamada de interrupción. Este método ISR está en la parte inferior del código para manejar la interrupción DMX. Si va a utilizar un Arduino como programador de ISP, asegúrese de revertir sus cambios a HardwareSerial.cpp; de lo contrario, no se podrá acceder al ATMEGA328 en la placa de pruebas. El segundo cambio es más sencillo. El archivo boards.txt debe cambiarse a la nueva velocidad de reloj de 20MHz.

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

El brillo se asigna a 8000 porque esa es la cantidad de microsegundos de 1/2 onda sinusoidal de CA a 60 Hz. Entonces, con 256 DMX de brillo total, el programa dejará la mitad de la onda sinusoidal de CA encendida durante 8000us. Se me ocurrió 8000 a través de adivinar y comprobar. Hacer los cálculos de 1000000us / 60hz / 2 = 8333, por lo que podría ser un número mejor, pero tener los 333us adicionales por encima permite que el TRIAC se abra y cualquier fluctuación en el programa probablemente sea una buena idea.

En Arduino 1.5.3 que movieron la ubicación del archivo HardwareSerial.cpp. Ahora es /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Deberá comentar todo este bloque si comienza con la línea 39: #if definido (USART_RX_vect)

De lo contrario, terminará con este error: core / core.a (HardwareSerial0.cpp.o): En la función `_vector_18 ':

Paso 6: empaquetarlo

Empaquetarlo
Empaquetarlo
Empaquetarlo
Empaquetarlo
Empaquetarlo
Empaquetarlo

Recogí la caja gris del proyecto en Menards en su sección eléctrica. Usé una sierra recíproca para cortar los orificios del enchufe eléctrico. El estuche tiene una abrazadera en C de teatro unida a la parte superior para colgarla. Luces de estado para cada entrada y salida para ayudar a diagnosticar si alguna vez hay un problema. Se utilizó una rotuladora para explicar los diferentes puertos del dispositivo. Los números al lado de cada conector representan el número de canal DMX. Pegué la placa de circuito y el transformador con un poco de pegamento caliente. Los LED están pegados en su lugar con soportes para LED.

Recomendado: