What it is:
This is an inexpensive USB to DMX interface constructed from a modded USBasp programmer. The ATMega8 microcontroller chip is the basis for both the USBasp AVR programmer and for the uDMX interface. Both are also based on an open-source USB driver in firmware. The mod consists of adding a RS485 driver chip to the programmer, routing the signal with some jumpers, and flashing the microcontroller with uDMX code.
The intended purpose:
USB to DMX interfaces are used by host control software to output or input DMX values. The control software might set or retrieve levels directly or might be designed to convert levels sent over Ethernet. uDMX is for output only.
Small and inexpensive
DMX levels and timing are buffered
Can create serial numbers and be reprogrammed
Output only with no electrical isolation
Moderate. Good soldering skills required.
A point-tip solding iron.
No-Clean flux in a syringe or pen.
Parts and costs:
USBasp AVR programmer $16.I get them from here
RS485 driver chip $1.00Here’s just one of a few
XLR connector $5-$15
#30 AWG Wire-Wrapping Wire (bigger wire can cause damage)
The open-source uDMX code is available from different sites. The anyma site has version 1.2. The anyma uDMX 1.4 source is available from a SVN repository. I am using the 1.4 code from the LUTZ site. I am not using any bootloader. Some downloads will include a precompiled uDMX.hex file. If you wish to change the source code for different serial numbers or for any other changes you will need to compile.
I am using WinAVR on XP. If it is installed then you can open a command window from the Run menu by typing: cmd. CD into the directory that contains the source code and type: make all. If it goes well then a uDMX.hex file will be produced.
The ATMega8 in the USBasp comes flashed with programmer firmware. If you start with two programmers then one can program the other. Shorting the two pads labeled R8 will enable reprogramming. Connect the two with the ribbon cable that comes with it.
The programming software that worked well for me was the Khazama AVR Programmer. This is for Windows and in addition a USB driver must be installed. This driver can be found on either the USBasp or the Protostack site.
With the two programmers connected together select Fuses and Lock Bits from the Command menu. Select Read All and it should upload the fuse and lock bit settings.
Adjust the fuse settings to look like this and select Write All.
From the File menu select Load FLASH file to Buffer. Here choose the uDMX.hex file you have downloaded or compiled. From the Command menu select Write FLASH Buffer to Chip. It will confirm if it completes.
Remove the shorting jumper from R8. The USBasp is now programmed for uDMX.
An 8 pin RS485 driver is glued to the underside of the USBasp. The pins are bent so they are horizontal and are clipped where the pins narrow. All that should be left are pads from the sides to solder to. The + and – output from the driver are jumpered to pins 4 and 6 on the programming connector. Currently these pins are connected to ground. Traces must be cut on the circuit board in three spots for each pin to break the ground connection. A sharp blade similar to an Exacto should work. Check with a continuity tester to make sure there is no connection to ground. Connections from the chip to ground and 5 volts can be found on the pads labeled C4.
A jumper connected to the signal output of the ATMega8 chip must be routed from the other side of the circuit board to the data input of the RS485 chip. I routed this jumper on the underside of the programing connector. In addition, a jumper must be added between two pins of the ATMega8 chip to conform with the uDMX circuit.
The USBasp comes with a ten pin ribbon-cable jumper. I cut off one end and connected the XLR connector to the ribbon cable. I used #10 for ground, #6 for -, and #4 for +.
There are three places on the ATMega8 where a jumper must be soldered to a pin on the surface-mount chip. At first look, this may seem to be something too difficult to accomplish. The truth is that it is not insurmountable. I do not have such a steady hand or great eyesight. None of my tools are expensive. I use a cheap solder station.
Locate the correct pin number on the chip. Pin number 1 is the one with the dot next to it. Pin numbers progress counter-clockwise up to 32. A pin-out diagram can be found on the Proto site. Strip a very small portion of the isolation from the tip of the wire. Tin the wire with a little solder. The result should be a stripped wire no longer than the pad on the circuit board that the pin is soldered to. Apply a little no-clean flux to area you are about to solder. Clean the tip of your iron. We are going to rely on the solder already present on the pad and pin. Place the wire over the pad and heat the wire briefly with the iron. The flux will help the solder bind to pad and wire. The flux also helps to prevent a solder bridge between adjacent pads. Check all solders with a magnifying eyepiece for any bridges. Check again. If a bridge is found clean the iron tip, apply more flux, and try to remove the bridge by heating and swiping briefly with the iron. I generally do not have bridge problems with a chip of this size. If for some reason more solder is needed to make the connection, apply flux to the area, heat the pad and pin, add a very little amount of solder. Too much solder causes bridges! Try again to solder the wire.
Magnification is your friend here. A work light with a lens is nice although the eyepiece is essential for checking the solders.
anyma uDMX 1.4
Khazama AVR programmer
Open Lighting Architecture