Part 1: Idea, Materials and Schematics
Part 2: Construction, Code and Installation
Arduino DMX controller:
One of the main problems we had at my job was the constant failure of the hazers. That happens when not switched off properly. Most of the hazers need to be cooled down before they can be safely shut down. They do that in order to perform a cleaning cycle. If that is prevented the internal tubes can get stuck and the smoke liquid inside them gets clogged.
Newer hazers have a built in DMX system that allows the light engineers to remotely switch them off from the desk. This is very useful in environments where time is scarce.
In order to control the hazer I could used an actual function in the firmware that automatically switches OFF the machine in absence of DMX data. So my idea is to physically cut the DMX data by using a pair of small 5V relays connected to an Arduino.
An Arduino will sit in the hazer and stand right before the DMX line input of the Unique smoke machine. This will enable the Arduino to switch ON and OFF (physically) the DMX data input. This function will be driven by an extra DMX channel in the same DMX line. From now on we will call this channel the control channel.
To operate the hazer normally a DMX value greater than 10 is expected on the control channel. If the DMX data in the control channel is below 1% the channel will be considered OFF and the DMX data will be cut off from the unique hazer. In order to avoid false triggering I will implement a delay timer that will wait a set amount of time before cutting of the data of the machine.
The control channel number, and delay time are all presets that can be customized in the code.
When control channel of the Arduino DMX controller is below 1% and DMX data is cut the Unique hazer will enter into OFF mode automatically. This will start the cleaning process, even if the light desk is still sending DMX data trough the line.
For this project we will be using the following materials:
- Arduino Uno
- Conceptinetics DMX shield
- Proto board (ebay)
- 5V Data relay (OMRON G6S-2F-Y 5VDC)
- Power supply 6V-12V
- Box or enclosure
All materials are easy to find in any electronics shop. I recycled the relays from an old KPN ISDN modem that I had laying around.
For DMX shield I’m using the Conceptinetics CTC-DRA-13-R2 Isolated DMX/RDM Shield. I couldn’t find any schematics for this shield but I found one for the non isolated DMX shield. Thanks to that I could redraw a new schematic in KiKad for the isolated version and understand how the circuit works.
The DMX input will be splitted into two, one going to the Arduino for reading and the other going out to the smoke machine. The 2nd line is the one that will be cut by the relay.
The DMX signal has 3 wires: Positive signal, negative signal and ground. Since my relay has only 2 channels I’m attaching a secondary relay in order to cut all 3 signals. (theoretically ground could be left connected but as a safe measure it’s better to keep it all disconnected)
When interfacing the relay with the Arduino we will do it with the help of a transistor. Even if the relay operates at the same voltage as Arduino the current needed to energize the relay is avobe the maximum an Arduino pin can provide. In order to be in the safe side we put a transistor between the Arduino and the relay that will provide enough current to the relay without frying our Arduino
Two relays we will consume ~80mA when energized. Double of the rated current of Arduino.
Arduino DMX controller continues in part 2.