DMX protocol

DuckJordan

Touring IATSE Member
I'm wanting to learn more about the protocol side of DMX, to make myself clear as i'm not sure if i called it the right thing.

My main goal with this thread, is to come up with information regarding DMX code, this going from USB to DMX to control either a dimmer pack or a single light. With this information i want to build my own program to control a device to send the signals. So does anyone have information or links to website that have information regarding the different codes and basic protocols.

I know i'm kind of reinventing the wheel here but its the best way i learn.
 
You might want to start here with an open USB DMX interface. They have a tab labeled "Software". They have links to opensource and freeware projects. They will, no doubt, be able to provide you with lots of info.

~Dave

ENTTEC - DMX USB ASSEMBLED AND TESTED IN METAL HOUSING

I checked that out before, unfortunatly their freeware projects as well as their open source stuff is really unreliable as far as information, their USB DMX interface is fairly decent albeit expensive for the kit, but the information there seems to be taken from American DJ's software or vice versa.
 
The standard is published as ANSI E1.11 - USITT DMX512-A. It is available as a PDF for purchase here.

~Kirk
 
ah but i do know how to run a board and design a show correctly, my next step is understanding exactly what is being sent as far as signals :D, so its more like, the time reader who went to teaching is now wanting to build his own darn clock because the ones hes seen look bad :D

Add on, $40.00 seems fairly steep personal education expense for a college student, Still good info but wanting to find more out before shelling out cash.
 
The DMX playground has some decent info, here is another website Knowledge Base that might interest you. While none of it is arduino based, some of his projects are ATmega based which is the same language that the arduino environment is built on and thus some of the code I think could theoretically be adjusted to say the ATmega 328. Besides that He has some interesting resources. You might also try using google translate to poke around the German version of the site and see if you can find anything else.

And while i'm at it read up on RS-485.
 
Great information guys, It will take me about a day or so to go through some of this, Keep it up though. Thank you to all who are contributing.
 
Hey there!

We have quite a bit of information on our website about DMX and how it works. Here are a few helpful links:

- http://www.dfd.com/primer.html
- http://www.dfd.com/dmxbasic.html
- http://www.dfd.com/whyterm.html
- Doug Fleenor Design - Tech Tips
And a video regarding DMX cable. Doesn't mainly have to do with the protocol, but it's helpful information.
- Part 1: YouTube - Informational Video: DMX512 Cable - Part One
- Part 2: YouTube - Informational Video: DMX512 Cable - Part Two

If you do have questions about the protocol itself, Doug or Milton are generally happy to answer nagging little questions.

Hope these links help!
 
Last edited:
ah but i do know how to ... design a show correctly.
I wonder if Jules Fisher, Don Holder, Roy Bennett, Abigail Rosen Holmes, Kevin Adams, et al would be so bold as to make a statement like that?

Since you felt $40 for the published standard was too much, I doubt you'll like $46 for Practical DMX, by Nick Mobsby, but it's a good book nonetheless.

It's unclear as to whether you want information on
1. How to generate DMX512, or
2. How to write lighting control system software.
The former is (relatively) easy; the latter, not so much (Just ask Strand/ETC/MA Lighting/HES, etc.).
 
Last edited by a moderator:
I built the Kristof Nys parallel port device practically for free. I only had to buy the connectors.

DMX 512 Pic 16F84 Printerport interface
MANOLATOR dmx512

You can get samples (qty 4 or less) from the chip manufacturers. So from microchip I got a couple pic chips of different varieties. From Texas Instruments, I got the 485 transceiver chips. From some other one I got the 7805 regulator.. I even found someone on ebay selling the clock crystal and asked if he could send me just one... and he sent me two for free in a greeting card.
 
I wonder if Jules Fisher, Don Holder, Roy Bennett, Abigail Rosen Holmes, Kevin Adams, et al would be so bold as to make a statement like that?

Since you felt $40 for the published standard was too much, I doubt you'll like $46 for Practical DMX, by Nick Mobsby, but it's a good book nonetheless.

It's unclear as to whether you want information on
1. How to generate DMX512, or
2. How to write lighting control system software.
The former is (relatively) easy; the latter, not so much (Just ask Strand/ETC/MA Lighting/HES, etc.).

it would be the latter, Being a programmer i understand the basic fundementals of software for a PC, the only issue i'm seeing is how to get the software to comunicate in 512 as far as what data should be sent to the dongle or other device.
 
Last edited by a moderator:
it would be the latter, Being a programmer i understand the basic fundementals of software for a PC, the only issue i'm seeing is how to get the software to comunicate in 512 as far as what data should be sent to the dongle or other device.
That's pretty much done for you in the Enttech source material. You can incorporate their libraries into your software, and then concentrate on the meat of the control software--creating, storing, recalling, and playing back the channel values. Once your software creates a list of 512 instantaneous channel levels, all you have to do is push it out through the virtual com port the Enttec (or equivalent) interface provides.

(The heart of the Enttec interface is the FTDI232, which is a single-chip USB-serial bridge. Its serial side is TTL-level, so it is paired with a MAX485 or similar RS485 transceiver which does nothing but shift the TTL voltage levels to and from the RS485 differential voltages required for DMX. Neither is a terribly 'smart' device, but each is good at what it does. The hard stuff (generating the DMX stream) is all done in software.)

If you want to reinvent the DMX generation layer, then you can to look at the Enttec DMX libraries or the various microcontroller-based, provided you have or acquire sufficient background in the relevant environment to understand the material. Microcontroller DMX interfaces generally require some rather unfriendly-looking bare-metal access, so they can be daunting to the beginner. Or you can start from scratch from the reference material everyone has provided for you.

While none of it is arduino based, some of his projects are ATmega based which is the same language that the arduino environment is built on
Not quite. The Arduino environment does use AVR-GCC, but it HEAVILY abstracts a lot of the functions of the actual hardware in its own libraries for the sake of usability. For instance, to access the PWM function in Arduino, you would simply do:

Code:
analogWrite( pin, value);

but in plain AVR-GCC (as in AVR Studio), unless you import the Arduino libraries, you'd need to do:

Code:
    DDRD |= ( 255 ); //set port D GPIOs as outputs

    TCCR0A |= ( (1 << COM0A1 ) | (0 << COM0A0) | (1 << WGM00) | ( 1 << WGM01) ); 
    TCCR0B |= (0 << WGM02 );  // set up OCR0A (Arduino pin 6) in non-inverting Fast PWM mode

    TCCR0B |= ( ( 1 << CS00 ) | ( 1 << CS02 ) ); //setup T/C0 prescaler

    OCR0A = value;  //load compare register with PWM value
 

Users who are viewing this thread

Back