Microcontroller Multichannel Light Dimmer
Documentation
 Hardware Block Diagram
 Interim Report
 Final Report

Prototype
 Schematics
 PCB Layout
 Code

Sponsors
 Atmel
 Canadian Source Corporation
 Clarsand Ltd.
 EMX Enterprises
 Fairchild Semiconductor
 Keystone Electronics
 Longman Sales Inc.
 Maxim
 Mill-Max
 ON Semiconductor
 Philips Semiconductors
 Samtec
 Tamura
 Tech-Trek Ltd.

Contact
 ed <at> jem.dhs.org

The Microcontroller based Multichannel Light Dimmer (MMLD) is one of my fourth-year projects in the department of electrical and computer engineering at the University of Waterloo.

The project is a four channel, microprocessor-controlled light dimmer. It could be used in theatrical and other applications. It accepts input from a wide range of interfaces: RS232 input, DMX512 (theatrical lighting standard) or RS485, or a Musical Instrument Digital Interface (MIDI). It uses phase-angle firing of triacs to control the power delivered to the lamp loads. The firmware in the microcontroller handles all functions, from decoding the protocol on either of the input interfaces through to timing the firing of power triacs for the output.

Here are some pictures of the completed project:

Finished project
With the cover off
The dimmer's PCB

In the pictures there's a coaxial DC power jack on the end of a pair of purple wires. I was supposed to have a PCB mounted power transformer, but my source never provided one, so I used a 12V AC plug-in transformer to power the circuit.

Also in the pictures you can see that two of the triac's leads are crossed over each other. This was due to a pin assignment issue in the PCB layout; the full details are in the final report.

Please see the documentation link in the menu to the left for the full details of the project, including the source.

I also wrote a WinAmp visualization plugin to control the dimmer. It uses WinAmp's beat-detection and frequency analysis capability to control the connected lights in various ways (strobe, chaser, "colour organ"). The code seems to have been lost since I left school, but it wasn't very difficult to produce. I started with an example AVS plugin provided by Nullsoft, and added code to write intensity values to the serial port.