Kennen Sie EIA-485 und DMX-512? - Teil 2

En la primera parte de este blog le mostré el montaje experimental de una de las aplicaciones industriales más importantes del bus RS-485: el Modbus. Aquí, el PC con un adaptador USB-RS485 actuó como maestro y el microcontrolador con Atmel 328 y shield RS-485 como esclavo. Para familiarizarme con el tema, he investigado principalmente en la página web de nuestro proveedor, zihatec, y en Wikipedia.

Encontré un segundo campo de aplicación para el shield RS-485 en las publicaciones del blog de Tobias Kuch en la primavera de 2020 (enlaces Parte 1, Parte 2, Parte 3). Se trata del controlar sistemas de iluminación con DMX-512. Aquí, el microcontrolador se utiliza como maestro.

Desafortunadamente, no pude conseguir la lámpara que se utiliza allí, así que busqué en Amazon con la abreviatura DMX y encontré una LED similar. Sin embargo, el número de canales para el controlador y la asignación de canales no están estandarizados, lo que tiene sentido con una funcionalidad diferente, por lo que no pude replicar fácilmente los blogs anteriores.

Por lo tanto, este blog se centra en cómo conectar y programar su iluminación DMX. No hay que dejar de estudiar el respectivo "Manual del usuario", a menudo de una sola hoja con los detalles más importantes.

En primer lugar, el hardware. En la siguiente imagen de mi foco LED, puede ver muchos LEDs a la izquierda, que son rojos, verdes o azules en filas. También puede controlar esta lámpara con el mando a distancia suministrado con diferentes funciones. En el lado derecho se puede ver la parte trasera con dos conectores XLR de tres pines, una pantalla matricial LED de cuatro dígitos y debajo de ella (apenas visible) cuatro botones para la operación manual, especialmente importante para ajustar la dirección cuando se utilizan varios aparatos o dispositivos DMX.

Faros LED

Los contactos XLR también pueden ser de cinco polos si es necesario; sin embargo, sólo necesitamos dos contactos. El enchufe izquierdo es la entrada y el de la derecha es la salida. Por eso necesito un enchufe XLR hembra para mi cable casero (Neutrik NC-3 FX BAG - enchufe XLR, el FX significa "hembra"). Esto me permitió establecer fácilmente la conexión entre la lámpara y el shield.

Se presentan dos diferencias con respecto al blog de Tobias Kuch: en mi lámpara, los contactos se encuentran con un giro de 180 °, por lo que el contacto central A está abajo, el contacto B está a la derecha. Y en mi caso, la lámpara se quedó a oscuras cuando hice la conexión a tierra con el shield. Así que solo dos cables: de A a A y de B a B.

Todavía se deben realizar algunos ajustes en el shield. Esto se hace, por un lado, con conectores de cortocircuito (jumpers) y, por otro, con la ayuda de pequeños interruptores (interruptores DIP, "mouse piano"). El etiquetado de la placa es muy útil.

Para nuestro microcontrolador con ATmega328 conectamos el único jumper J1 a 5V, en la fila junto a los pines 0 a 7, sólo necesitamos un jumper para el envío, así que conectamos la conexión de la línea TX al puerto 3 (cuarta fila, porque el conteo comienza en 0). Los puertos 0 y 1 permanecen libres, por lo que podemos cargar fácilmente el sketch y también utilizar el monitor en serie en el Arduino IDE.

Configuración de puente

Por favor, configure los interruptores DIP como se presenta en la siguiente imagen:

Interruptores DIP

Una vez más, el microinterruptor más importante es el primero en el SW 3: Este activa la resistencia de terminación.

En cuanto al software, necesitamos la biblioteca de programas DmxSimple de Peter Knight. El nombre lo dice todo. De hecho, la biblioteca sólo tiene tres funciones para el usuario, que explicaré brevemente a continuación. Se instala como siempre con el gestor de bibliotecas.

Administrador de la biblioteca

Al comienzo del sketch, la biblioteca se incluye con:

 #include 

Las tres funciones son inicialmente

 Dmxsimple.UsoPin(3);
 Dmxsimple.Maxchannel(norte);

Y lo más importante

 Dmxsimple.escribiendo(canal, valor);

Con usePIN (3) se establece el puerto para la línea TX. Debido al desarrollo histórico, el trabajo preliminar de la empresa Tinker.it!, Puerto 3 está preestablecido. Sin embargo, puede desviarse de esto.

El número de canales se fija en maxChannel. La configuración por defecto es 512, el máximo posible. Para actualizar los datos más rápidamente, puede elegir un número menor. Yo mismo sólo he conectado una lámpara con 6 canales, por lo que selecciono

 Dmxsimple.Maxchannel(6);

Para dos lámparas, ingresaría 2*6 = 12 y configuraría la dirección base 7 en la segunda lámpara para controlar todas las funciones individualmente.

Una vez más: maxChannel es la suma de todos los canales de todos los dispositivos DMX conectados en serie (Daisy Chain). En las instalaciones individuales, la suma de todos los canales anteriores se establece como dirección base.

Para mis experimentos sencillos, solo he utilizado una unidad con seis canales. Ahora a las funciones para mi lámpara según la hoja de datos:

Canal

Valor de canal

Instrucción de la función

CH 1

0~255

Atenuación total

CH 2

0~255

R atenuación

CH 3

0~255

G atenuación

CH 4

0~255

B atenuación

CH 5

0~9

No estroboscópica

10~255

Cuanto mayor sea el valor, más lento el estroboscópico.

CH 6

0~50

Moda manual, los primeros 5 canales son válidos.

51~100

Cambio de salto

101~150

Cambio gradual

151~200

Cambio de pulso

201~250

Modo automático

25~255

Modo de sonido

Entonces: mi lámpara tiene tres LEDs de colores diferentes que puedo controlar individualmente (CH 2 a 4). Puedo atenuar todos los LEDs al mismo tiempo (CH 1). Puedo configurar la luz estroboscópica (parpadeo rápido de luz) (CH 5). Y puedo seleccionar diferentes modos de funcionamiento.

Otros dispositivos DMX pueden tener luz blanca adicional o pueden ser paneadas con servos (pan y tilt). Como he dicho, consulte la hoja de datos y anote el número del canal más la dirección base, si es el caso.

Con la inclusión de la biblioteca, también se proporcionan dos ejemplos. Con el ejemplo de FadeUp, es posible que necesite cambiar el canal o añadir más canales antes de que su aparato cambie continuamente de brillo. Puede probar todas las funciones con el programa SerialToDMX. Para hacer esto, abra el monitor de serie y siga las instrucciones. Con el comando 1C 255W en la línea superior de entrada y envío, escribo (w = write) el valor 255 para el canal (c = canal) 1, en mi caso "atenuación total".

Con mi sketch modificado, primero escribo 255 para el canal 1 (causa común de errores cuando no se ilumina: si la atenuación total se establece a 0, todos los LEDs permanecen oscuros). Luego cuento primero de 0 a 180 y asigno el valor al canal 2 (color rojo); así el rojo se va haciendo más brillante poco a poco. Asigno el valor (180 - variable de recuento) al canal 3 (color verde); así el verde se va oscureciendo poco a poco. Cuando el rojo es más brillante, selecciono el modo de luz estroboscópica durante tres segundos, entonces el rojo vuelve a ser más y el verde más brillante.

Mi sketch (descargar):

 // rs_485_dmx512_controller
 #include
 
 no firmado En t r, GRAMO, B;
 En t I;
 
 vacío configurar() {
   Dmxsimple.UsoPin(3);
   Dmxsimple.Maxchannel(6);
   Dmxsimple.escribiendo(6, 1);       // modo manual
   Dmxsimple.escribiendo(1, 255);  // atenuación total
   Dmxsimple.escribiendo(2, 0);    // r atenuación
   Dmxsimple.escribiendo(3, 0);    // g de atenuación
   Dmxsimple.escribiendo(4, 0);    // b atenuante
   Dmxsimple.escribiendo(5, 0);    // No Strobe, Strobe> 10}
 
 vacío círculo() {
   por (I=0; I < 180; I++) {  
     r=I;  
     GRAMO=180-I;
     Dmxsimple.escribiendo(2, r); // rojo
     Dmxsimple.escribiendo(3, GRAMO);  // verde
   // dmxsimple.write (4, b); // Azul
     demora(50);
  }
     Dmxsimple.escribiendo(5, 16); // strobe
     demora(3000);
     Dmxsimple.escribiendo(5, 0); // no strobe
 
   I = 180;
   hacer{  
     r=I;
     GRAMO=180-I;
     Dmxsimple.escribiendo(2, r); // rojo
     Dmxsimple.escribiendo(3, GRAMO);  // verde
   // dmxsimple.write (4, b); // Azul
     demora(50);
     I--;
  } muecero (I > 1);
 }

Por último, me gustaría mostrar una captura de pantalla de la señal RS-485 en el analizador lógico, en la que puede ver muy bien la polaridad opuesta de las dos líneas de señal del bus RS-485. En comparación con el antiguo estándar de teleimpresora RS-232, esto hace posibles mayores distancias y múltiples dispositivos en primer lugar.

Analizador de lógica de captura de pantalla

Espero poder despertar su curiosidad y evitar mis errores de principiante.

Diviértase con la reconstrucción.

Para arduinoProyectos para principiantes

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas