DMX512 en un PLC Arduino de Industrial Shields®

Librería de Industrial Shields®
29 de octubre de 2019 por
DMX512 en un PLC Arduino de Industrial Shields®
Boot & Work Corp. S.L., David Martin

Index

Introducción

En este post, vamos a trabajar con luces usando la Librería de Industrial Shields DMX512. Con esta librería, podemos trabajar fácilmente con el protocolo DMX y trabajar hasta 512 canales diferentes.

El protocolo DMX512 (conocido como DMX) se utiliza en los sistemas de iluminación profesionales y en las máquinas de humo o efectos especiales.

Gracias a esta comunicación, podemos enviar a cada una de las 512 direcciones un número entre 0 y 255. Usando este control, y sabiendo que algún sistema puede tener más de una dirección, podemos trabajar con una amplia gama de sistemas.

Lecturas previas

Te recomendamos que leas el siguiente blog a fin de poder entender el programa de este blog. Nosotros hemos usado este artículo para poder hacer el ejemplo:


Requisitos

cPara trabajar con un protocolo DMX512, necesitarás las siguientes cosas:

Conexión del decodificador DMX512 al controlador industrial Arduino

1) Lo primero que debemos hacer es conectar el bus RS485 al descodificador. Debemos tener en cuenta que hay que poner en la posición correcta el interruptor RS485:

Descodificador DMX512 con Controlador Industrial Arduino

 2) Una vez que el Controlador Lógico Programable está correctamente configurado, tenemos que conectar los pins al codificador DMX:

Controlador Industrial Arduino

Recuerda configurar cada codificador DMX con la dirección correcta. Generalmente hay un interruptor en el descodificador. Esta configuración será importante porque con eso podremos configurar el rango de direcciones que tendrá este condificador:

Codificador DMX Industrial Arduino PLC

Software

1) En primer lugar debemos hacer es incluir la librería Arduino que incluye las funciones DMX512:

#include <DMX512.h>

Recuerda iniciar la librería DMX:

DMX512.begin();

2) Antes de enviar algo a esta biblioteca, vamos a tener que preguntar si el bus está libre. La siguiente función devuelve TRUE if the bus is idle. FALSE if is still working:

DMX512.idle();

3) Finalmente, con esta función podremos enviar información a las direcciones DMX. Ten en cuenta que esta función necesita un puntero a una variable uint8_t con el nivel de potencia (cananles), y una variable const uint16_t con el número total de canales (numChannels):

DMX512.write(*channels, numChannels);

Ejemplo

El siguiente ejemplo envía información a las direcciones 1, 2 y 3 DMX. Si ponemos un codificador DMX trabajando con estas direcciones, vamos a ver una luz parpadeando lentamente.

// DMX512 library example
// by Industrial Shields

// Include the DMX512 library #include <DMX512.h>
// Define the variables for work with the addresses uint8_t channels[] = {0, 80, 160}; const uint16_t numChannels = sizeof(channels) / sizeof(uint8_t); // Setup function void setup()
{
    DMX512.begin(); } // Loop function void loop()
{
    // Ask if the DMX bus is busy
    if (DMX512.idle())
    {         // Wait some time between commands         delay(100);     // Update channels brightness     for (uint16_t i = 0; i < numChannels; ++i)
        {
            // Increase the power value of the channels
            channels[i] += 5;
        } // Update channels DMX512.write(channels, numChannels); } }


Buscar en nuestro blog

DMX512 en un PLC Arduino de Industrial Shields®
Boot & Work Corp. S.L., David Martin 29 de octubre de 2019
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>