sekatsim
Member
I'm attempting to expand our current lighting system by another 50 channels or so by hooking up a computer and using the parallel port to control the dmx. What I've done so far:
Wrote a program in Turing (as a prototype) to output to the parallel port (using pin 1 as high, and pin 2 as low):
100 millisecond BREAK (low)
8 ms MARK AFTER BREAK (high)
11 bit (44ms) START CODE (aka. Channel 0 @ 000) (low)
4 bit (1ms) BREAK BETWEEN PACKETS (high)
11 bit (44ms) level value for channel 1 (so.. channel 1 @ 255)(high).
Connected pin 1 on the parallel port to pin 3 on the DMX cable (5 pin). I connected pin 2 to pin 2.
Ran the program, and it turned on channel one at full. Beautiful.
I set up a loop for the other 50 channels-- however, in execution, channels one through 5 or six or so would turn on (sequentially), and then turn off. I realized that I was supposed to be working in microseconds, not milliseconds, and I was timing out the dimmer.
Rewrote the program in c++ on linux. It works insofar as it controls the parallel port, I hook up some LEDS and they all turned on fine. However, it won't turn on any lights. I even tried slowing it down to approx millisecond speeds, still no luck.
Attaching my parallel output to an oscilloscope, alongside the output from our current lighting board, it seems to me like my output is several thousand times slower than what it should be operating at (even at microsecond values). I cant figure out whether this is a product of switching over to linux, or just being slowed down by having a multi threaded computing environment.
I was under the impression that the parallel port could operate fast enough to control DMX, but then I also see that all commercial parallel-to-dmx controllers have some sort of memory/buffer between the computer and the dimmer.
Any and all information you can throw my way on this subject will be most helpful. I can post my sources here tomorrow, if anyone is interested in giving this a try for themselves. All it requires is an old printer cable with the end cut off, and some needle nose pliers.
Thank you
Wrote a program in Turing (as a prototype) to output to the parallel port (using pin 1 as high, and pin 2 as low):
100 millisecond BREAK (low)
8 ms MARK AFTER BREAK (high)
11 bit (44ms) START CODE (aka. Channel 0 @ 000) (low)
4 bit (1ms) BREAK BETWEEN PACKETS (high)
11 bit (44ms) level value for channel 1 (so.. channel 1 @ 255)(high).
Connected pin 1 on the parallel port to pin 3 on the DMX cable (5 pin). I connected pin 2 to pin 2.
Ran the program, and it turned on channel one at full. Beautiful.
I set up a loop for the other 50 channels-- however, in execution, channels one through 5 or six or so would turn on (sequentially), and then turn off. I realized that I was supposed to be working in microseconds, not milliseconds, and I was timing out the dimmer.
Rewrote the program in c++ on linux. It works insofar as it controls the parallel port, I hook up some LEDS and they all turned on fine. However, it won't turn on any lights. I even tried slowing it down to approx millisecond speeds, still no luck.
Attaching my parallel output to an oscilloscope, alongside the output from our current lighting board, it seems to me like my output is several thousand times slower than what it should be operating at (even at microsecond values). I cant figure out whether this is a product of switching over to linux, or just being slowed down by having a multi threaded computing environment.
I was under the impression that the parallel port could operate fast enough to control DMX, but then I also see that all commercial parallel-to-dmx controllers have some sort of memory/buffer between the computer and the dimmer.
Any and all information you can throw my way on this subject will be most helpful. I can post my sources here tomorrow, if anyone is interested in giving this a try for themselves. All it requires is an old printer cable with the end cut off, and some needle nose pliers.
Thank you