Receptor para el protocolo DMX512
<keywords content="TTL 74Ls164N, electronica, circuito, pic, NE555, PIC BASIC, PIC SIMULATOR IDE, esquema, circuito impreso, proyecto, gratis, download, programa, CMOS, pin, e/s, i/o, ucontrol, PIC, 16F628a, 16f84a" /> <center>
| Inicio | Foro | Revista uControl | Circuiteca | Microcontroladores | Electrónica Básica | Herramientas y Software | Tutoriales | Colaboradores | Enlaces |
|
¿Ya descargaste los ejemplares GRATUITOS de la Revista uControl? ¡No te los pierdas!. | |||||||||
|
wikipage=Dado electrónico con PIC
tooltip=Dado electrónico con PIC
img_src=Image:dado100.jpg
img_width=150px
img_alt=Dado electrónico con PIC
</linkedimage> |
wikipage=Como trucar un servo
tooltip=Como trucar un servo
img_src=Image:trucaservo150.jpg
img_width=150px
img_alt=Como trucar un servo
</linkedimage> |
wikipage=Comunicación inalámbrica entre PICs
tooltip=Comunicación inalámbrica entre PICs
img_src=Image:TXRX150.jpg
img_width=150px
img_alt=Comunicación inalámbrica entre PICs
</linkedimage> |
wikipage=CCS - Libreria de gráficos para GLCD K0108
tooltip=CCS - Libreria de gráficos para GLCD K0108
img_src=Image:GLCD-100.gif
img_width=150px
img_alt=CCS - Libreria de gráficos para GLCD K0108
</linkedimage> |
wikipage=Funcionamiento de una matriz de LEDs
tooltip=Funcionamiento de una matriz de LEDs
img_src=Image:GNUxx.jpg
img_width=150px
img_alt=Funcionamiento de una matriz de LEDs
</linkedimage> |
![]() |
Todos los articulos y proyectos de uControl tienen su lugar en el foro. Si tienes dudas o comentarios, busca o crea el hilo correspondiente, y tendrás una rapida respuesta.
|
![]() |
|
Receptor para el protocolo DMX512.
| ||||||||||||||
IntroducciónEl protocolo DMX512 es el estándar por excelencia para el intercambio de información entre el equipamiento de tecnologías teatrales. De diseño sencillo, fácil uso y gran difusión en el mercado de tecnología para el entretenimiento, DMX512 llegó para
Nivel LógicoEl protocolo DMX512 se basa en la utilización de "canales" para transmitir comandos a los dispositivos receptores. DMX512 tiene un límite de 512 canales por universo (DMX universe), y cada canal ocupa un byte. Por lo que el valor transmitido por canal se puede regular desde 0 hasta 255: son los "valores" DMX (DMX values). Cada trama DMX512 lleva los 512 bytes correspondientes al dato de cada canal, independientemente de que se utilicen o no todos los canales. Las mesas profesionales que usan DMX pueden soportar hasta 8 universos DMX y con la tecnología EtherDMX estos pueden ser ampliados aún más. En DMX512 se transmiten los datos de modo asincrónico, a 250Kbit por segundo. Esto significa que las señales del transmisor y de los receptores no están en sincronía, pero los receptores se sincronizan al mando de la consola cada vez que ésta envía una determinada señal. Básicamente, y aunque luego lo veremos en profundidad, la trama DMX completa se compone de una señal de sincronización y a continuación los 512 bytes de información que se corresponden con los 512 valores DMX. Los receptores reciben toda la trama, pero procesan sólo la información relativa a los canales para los que están configurados. La información se transmite siguiendo este diagrama de tiempos:
Diagrama de señales y tiempos del protocolo DMX512.
Cada byte se transmite con:
De esta manera, algunas consideraciones de tiempo respecto al protocolo son las siguientes:
Instalaciones DMXTopologíaCon DMX512 se pueden alcanzar distancias de comunicación, entre los extremos del BUS, de hasta 500m. Sin embargo esta distancia es para un caso más o menos ideal, pero en la práctica es raro encontrar líneas de transmisión con más de 100m de longitud. Si fuese necesario aumentar las distancias es preciso utilizar buffers o splitters.
Topología de una instalación DMX512.
Cables y conectoresLos cables habitualmente utilizados en DMX son los de par trenzado, dado que ofrecen una mayor inmunidad al ruido. Como hemos comentado antes, ambos hilos reciben la misma cantidad de ruido y ello permite a los amplificadores diferenciales eliminarlo para quedarse con la información válida. Los conectores estándar son los XLR, de los que hay dos modelos: con 3 o con 5 pines. Antiguamente se utilizaban mucho los de 3, pero en la actualidad son más frecuentes los de 5 pines.
Conectores XLR de 5 pines. Éstos son los más utilizados en las instalaciones DMX512.
Un cable de 5 pines está configurado de la siguiente forma: Pin 1 = señal de referencia = revestimiento del cable ( malla o pantalla ); Pin 2 = señal invertida = "-" polo negativo; Pin 3 = señal = "+" polo positivo; Pin 4 = opcional (la utilización de este pin varía de acuerdo con el aparato en operación y los fabricantes nunca llegaron a un acuerdo sobre cómo utilizarlo. La intención original era tener realimentación de los aparatos y establecer son estos un enlace bidireccional). Pin 5 = opcional (la utilización de este pin varía de acuerdo con el aparato en operación y los fabricantes nunca llegaron a un acuerdo sobre cómo utilizarlo. La intención original era tener realimentación de los aparatos y establecer son estos un enlace bidireccional).
El armazón de los dispositivos nunca se conecta al pin 1, la señal de referencia, ya que podría provocarse un anillo de masas y afectar el correcto funcionamiento del sistema. Sin entrar al tema de los fenómenos causados por una equivocada conexión a tierra, de la funda defensiva del cable de transmisión de datos, es importante decir que una eventual conexión a tierra de este conductor se puede realizar en un sólo punto de todo el sistema y que normalmente este procedimiento se realiza sólo en las instalaciones fijas. De todas maneras, es una buena práctica que los equipos dispongan en su entrada DMX de optoacopladores que eliminen la posibilidad de contacto eléctrico entre el bus DMX y la circuitería del dispositivo. La mayoría de los equipos profesionales disponen de aislamiento optoacoplado. Dirección DMXPuesto que en el bus DMX viaja la información de 512 canales, cada dispositivo debe ser configurado para “escuchar” los que necesite. Cuando un dispositivo necesita la utilización de varios canales, suele configurarse sólo la dirección del primero de ellos, quedando reservados para dicho dispositivo todos los que necesite a partir del primero. Lo habitual es que un dispositivo utilice varios canales, y se identifique físicamente con el código del canal de inicio. De esta manera, si un cabezal proyector utiliza, por ejemplo, 16 canales, y está identificado con el código 128, automáticamente reservará los canales 128 a 143 para sí mismo. Lo único que hay que tener en cuenta es que las direcciones DMX de los aparatos nunca deben estar superpuestas. Construyamos un receptor DMXEl ReceptorDMX que presentamos es de carácter puramente experimental, y sólo sirve para probar a interpretar el protocolo DMX512 y mostrar en su display el valor del canal seleccionado en cada momento.
DiseñoNuestro receptor DMX512.
El PIC almacena en su RAM los 512 valores de todos los canales DMX, lo que le permite “absorber” la información de la trama completa. El canal DMX se selecciona mediante el teclado matricial. Hay otro dispositivo de salida: el LED. Ese LED está gestionado por PWM y su ciclo útil viene dado por el dato DMX del canal seleccionado. En este caso, no hay esperas: la información se muestra en tiempo real a la vez que se está escribiendo el canal seleccionado. El conector DMX sólo necesita tres señales: DMX+, DMX- y GND. Se ha añadido Vdd porque permite alimentar algún circuito auxiliar que se pueda conectar al bus, aunque no es imprescindible.
El receptor DMX512 con el teclado y las baterías de alimentación. UsoUtilizar el dispositivo es muy fácil. Al encender el dispositivo este comienza a capturar todas las tramas que le lleguen por el conector DMX. En el display aparece la palabra "OFF", hasta que el usuario seleccione un canal con el teclado matricial. A medida que se va pulsando el teclado, el display va mostrando el canal seleccionado. Mientras se toca el teclado, parpadean los puntos decimales de los displays para advertir que estamos viendo el selector de canal, en lugar del dato DMX. Al cabo de unos segundos la información aparece en los displays. El valor del canal seleccionado también se representa en el led, cuya intensidad es regulada mediante PWM. Puesto que el dispositivo memoriza toda la trama (512 bytes) puede ser desconectado del bus y examinado a posteriori como si estuviera físicamente conectado. ConstrucciónLa construcción del receptor se basa en este esquema:
Circuito electrónico del receptor DMX512.
/************************************************************************
* Interrupción RDA: dato recibido por la USART *
* Esta interrupción se activa cada vez que se recibe un dato en la *
* USART. Mediante el control de una máquina de estados se determina *
* la validez y el significado del dato recibido, y se obra en *
* consecuencia. *
* Nocturno – 2008 www.micropic.es *
************************************************************************/
#int_rda
void Dato_Recibido_USART(void)
{
while (RCIF) // ejecutamos mientras haya un dato pendiente de procesar
{
// Hacemos una copia del registro RCSTA porque sus bits cambian de valor
// al leer RCREG y modificar CREN
Copia_RCSTA.registro = RCSTA;
// En RCREG está el dato que acaba de recibir la USART
DatoRX = RCREG;
// Si se reciben más de 3 bytes sin haberlos procesado, se produce un error
// de Overrun. En este caso, se borra el error reiniciando CREN y dejamos
// la interrupción preparada para procesar la siguiente trama DMX
if (Copia_RCSTA.bits.OERR)
{
CREN=0;
CREN=1;
DMX_Estado = DMX_ESPERA_BYTE;
return;
}
// Máquina de estados
switch (DMX_Estado)
{
case DMX_ESPERA_BYTE: // si estamos en este estado y hay error FRAME
// es que nos ha pillado en medio de un Byte. Hay que seguir esperando
// hasta que desaparezca el error.
if (!Copia_RCSTA.bits.FERR)
// Ha llegado un byte. Ahora esperaremos la señal Break
DMX_Estado = DMX_ESPERA_BREAK;
break;
case DMX_ESPERA_BREAK: // estamos esperando la señal Break
// Esta señal se identifica porque aparece el error de Frame
if (Copia_RCSTA.bits.FERR)
// Tras recibir el error de Break, hay que esperar un byte de valor 0
if (!DatoRX)
DMX_Estado = DMX_ESPERA_START;
break;
case DMX_ESPERA_START: // ya hemos recibido el Break y ahora hay que
// esperar un Byte con valor 0, que será la señal de Start
// Mientras tanto, si recibimos un error de Frame, hay que volver a
// empezar para recibir la señal de comienzo de trama.
if (Copia_RCSTA.bits.FERR)
DMX_Estado = DMX_ESPERA_BYTE;
else {
if (!DatoRX)
{
// Llegados a este punto, ya hemos recibido el Byte Start=0
// y comenzamos la trama de valores DMX.
DMX_Indice = 0;
DMX_Estado = DMX_RECEPCION_DATOS;
} else
// Si el dato recibido no es 0, volvemos a empezar
DMX_Estado = DMX_ESPERA_BREAK;
}
break;
case DMX_RECEPCION_DATOS:
// En este estado estamos recibiendo la trama de datos DMX
// Si se detecta un error de Frame es que ha habido un error y estamos
// al principio
if (Copia_RCSTA.bits.FERR)
if (!DatoRX)
DMX_Estado = DMX_ESPERA_START;
else
DMX_Estado = DMX_ESPERA_BYTE;
else
{
// Almacenamos el dato recibido en nuestro array
TramaDMX[DMX_Indice++] = DatoRX;
// Si ha llegado al final de la capacidad, cambiamos al estado de espera
// de nueva trama
if (DMX_Indice >= TotalCanales)
DMX_Estado = DMX_ESPERA_BREAK;
}
break;
}
}
return;
}
Emisor DMXPara comprobar que nuestro receptor funciona adecuadamente, es aconsejable contar con emisor DMX512. Si no se dispone de un dispositivo de prueba, es posible construir el receptor Manolator 256, cuyos esquemas y método de construcción se encuentra alojado en www.freedmx.com. También deben descargarse alguno de los programas de emulación de consolas DMX, que están alojados en FreeDMX.
Autor
| ||||||||||||||
|
Este contenido se rige por la licencia de Creative Commons "Licencia Creative Commons Atribución-No Comercial-Sin Obras Derivadas 3.0". Para más información, véase la licencia en su forma reducida y completa. |

