|
_ |
DMX dimmer pack
This single-phase dimmer pack is a quite simple design. Nevertheless, it is suitable for most tasks thanks to its power linearisation, the full resolution of 256 steps and the possibility of operating individual channels in switch mode. With up to eight channels of 2 kWmax. each and overtemperature protection, even larger systems can be implemented without any problems. The modular design makes the dimmer easy to repair. A DMX dimmer pack consists of the following modules: 1 DMX Transceiver The dimmer pack can run either on a conventional DMX firmware or an RDM firmware.
DMX Transceiver (Rev. 3.2)With this module, DMX data can be sent and received. However, due to using a microcontroller, this circuit is not ideal for beginners. The Transceiver is suitable for bidirectional communication (e.g. RDM according to ANSI E1.20) due to the complete connection of the RS485 converter. Industrial-quality circuit boards are available in the shop.
part list
As you can see, the circuit is quite simple: All the magic happens in firmware within the MCU (IC1). It is transferred to IC1 via the "ISP"port. The start address and special options (if any) are set via ADR. The LEDs serve as status indicators. The voltage regulator IC3 ensures a stable operating voltage of 5V. Q1 and C1,2 are needed for an operating frequency of 8MHz. The RS485 converter IC2 allows the MCU to communicate with the DMX universe. With the help of "Spare", various firmware options can be jumpered. Via A-Input, an analogue threshold value (e.g. for thermal protection) can be read. A supply voltage between 9V and 12V dc is connected to PWR. The DMX Transceiver itself requires <300mA. When selecting the power supply, all loads must be taken into account.
The transceiver is connected to the DMX bus as shown in the next diagram: Attention: Pin 3 of the XLR connectors is connected to the middle pin of the PCB connector!
Instructions for programming and selection of clock sources can be found under 'Resources'. After the crystal is selected as the AVR's clock source, one of the two dimmer pack firmwares should be transferred to the DMX transceiver. The actual development work lay in these firmwares: The relevant channels are filtered from the DMX data stream and the appropriate firing times are calculated. With each zero crossing a timer synchronises itself to fire the desired triac at the right time. (This principle is known as forward phase control or leading edge dimming). ZC DetectionThis zero-crossing detection is needed to synchronise the microcontroller with the mains. It is connected to "ZC" on the Transceiver.
The positive half-wave enables the LED of OK via R1 (the negative half-wave is diverted via the LED). Due to thermal issues, R1 consists of two serial resistors that share the power loss. If OK is conductive, ZC is pulled to GND. During the negative half-wave, ZC is pulled to 5V by R3. A clean square wave with a duty cycle of approx. 50% should be present at the output, whose edges correspond to the zero crossings. Placement
dimmer modules
To control spotlights, transformers or motors with the TTL levels of the DMX Transceiver or an Arduino, you need the following dimmer modules or solid state relays without integretad zero-crossing switching. The dimmer modules were tested with 500W inductive load and with 2000W ohmic load. They operate in a temperature range from -20°C to 80°C.
As soon as voltage is applied to the LED of the optotriac OK1, it fires and controls the gate of the power triac T1 via R2. C2 and R4 form the snubber network of the triac. The filter consisting of R3 and C1 is required for operation with inductive loads. I designed a common board for the power modules of my dimmer and switch packs. One board carries four channels and one zero-crossing detection. Also there is a single sided layout for running reduced loads. If less channels are needed, the board can be cut to the required length. Different optotriacs are used in the power modules of dimmer and switch packs! Layout (112mm x 40mm; 300dpi)Placement
A toroidal choke with an iron powder core is looped into each output. The inductance dampens the transients of the phase control and thus prevents hum in the sound system and buzzing of filaments. To estimate the damping factor, a 'rise time' is often specified in commercial dimmer packs. This is the time (in µs) in which the current rises from 10% to 90% after the triac fires. After transforming a differential equation, the required inductance can be calculated as follows: L = (t*U)/(2.198*I) with 't' as the rise time in [s], 'U' the voltage in [V] and 'I' as the current in [A]. A rise time of 80µs (approx. 1mH@10A) is common. In highly sensitive studio environments, rise times of up to 500µs are used. Thermal protectionIn the course of increasing the power handling capabilities of the dimmer modules, a thermal protection was necessary to prevent damage by shutting down the outputs. For this purpose, an NTC and the trimmer potentiometer R1 form a voltage divider, which triggers the shutdown if its value falls below 1.25V. I chose the following values for the voltage divider:
For calibration, the NTC should first be heated to the desired threshold temperature (45°C - 75°C). Then R1 is first set to the right end stop (fully turned right) and then slowly turned back until the red LED lights up and the dimmer switches off.
DMX FirmwareSwitch mode To drive individual channels in switch mode, proceed as follows:
60Hz operation By setting the Spare1 jumper, the dimmer can also be used in 60Hz grids (i.e. USA).
Debugging In order to achieve an easy error detection, I have implemented an error indicator:
RDM FirmwareRDM operation is activated via DIP10: In the ON position, DIP1 to DIP8 are used as part of the RDM device address. In the OFF position, DIP1 to DIP9 are used as the binary DMX start address as usual.
60Hz operation By setting the Spare1 jumper, the dimmer can also be used in 60Hz grids (i.e. USA).
RDM parameters The following settings can be accessed via RDM:
When setting the error scene, a "signal hold" functionality can be chosen by setting all eight channels to 255.
Debugging In order to achieve an easy error detection, I have implemented an error indicator:
|