uDMX Pixels

Image

My next project is a pixel controller that is small and cheap. It is a USBasp  AVR programmer that has been MacGyvered with modified uDMX code to control pixels.. It can control a single string of either 2801 or 6803 pixels. Here is an example of a programmer:

http://www.ebay.com/itm/1PCS-USBasp-USBISP-3-3V-5V-AVR-Programmer-USB-ATMEGA8-New-/261021924011?pt=LH_DefaultDomain_0&hash=item3cc61e7aab

They come in different flavors with most having the ability to be reprogrammed by setting a jumper or shorting two solder pads. Some cannot be reprogrammed (to be avoided). If you have two programmers, then one can program the other by connecting the ribbon cable between the two with one being set to reprogram. You need a USB driver to get this to work with Windows. General information on these programmers is found on the USBasp site here:

http://www.fischl.de/usbasp/

 

Lighting control software with plugins for uDMX are not too common. There is one for Vixen 2.1 and 2.5. Another way to get this to work is by using the Windows ArtNet app for uDMX. If the control software can be set to output ArtNet it can talk to the uDMX interface through the app on the same computer. The app can be set to output different universes. This site has the Vixen plugin, the ArtNet app, and the Windows USB driver:

http://www.illutzmination.de/udmx.html?&L=1

A third way to use the interface is with OLA and another computer running Linux, such as a Raspberry Pi. OLA can receive several different DMX-over-Ethernet protocols and output uDMX.

http://www.opendmx.net/index.php/OLA

 

The uDMX firmware source code that this is based on can be found on this page:

http://www.illutzmination.de/udmxfirmware.html?&L=1

If you wish to change the pixel starting address, the pixel length, or the USB serial number, you will need to compile the source code. This can be done by installing WinAVR and using the make command in the uDMX_1.4\sources\firmware directory. The resulting uDMX.hex file can be transfered into the interface by using any of the programming software listed on the USBasb site.

 

The pixel string is controlled through the 10 pin ISP connector on the interface. Pin 1 (MOSI) is connected to Data In on the pixels. Pin 7 (SCK) is connected to Clock In. Pin 10 is the common.  You can normally power up to eight 60ma pixels with just the USB voltage on pin 2 or otherwise use an external 5 volt power supply. 

 

I am providing two versions of the main uDMX.c code. One for 2801 pixels and another for 6803 pixels. There is an assembly file that is good to use with either version. I am also providing the hex files for both with a starting address of one and a pixel length of 50.

Posted in Uncategorized | 2 Comments

MacGyver Lighting Controls

This is a preface to the next project on my otherwise poorly neglected blog. This project is similar to the first in that it will mod an AVR USBasp programmer. There will be no soldering of 30awg wires this time. To that end I am planning to do a redesign of the original project without physically altering the programmer. One thing that has happend since the last project is the advent of a cheap Linux computer, the Raspberry Pi. I believe this will enhance the functionality of both projects.

And so, the title of my next project is: uDMX Controlled Pixels

Posted in Uncategorized | Leave a comment

uDMX_asp

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.

Atributes:

Small and inexpensive

DMX levels and timing are buffered

USB powered

Can create serial numbers and be reprogrammed

Output only with no electrical isolation

Skill Level:

Moderate. Good soldering skills required.

Tools Required:

A point-tip solding iron.

No-Clean flux in a syringe or pen.

Magnification eyepiece

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)

Firmware:

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.

Programming:

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.

Circuit:

todo

The Mod:

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 +.

Soldering technique:

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.

Links:

anyma uDMX

anyma uDMX 1.4

LUTZ uDMX

WinAVR

USBasp

Khazama AVR programmer

Open Lighting Architecture

Posted in Uncategorized | 5 Comments

My Blog

The purpose of this blog will be to present and discuss various electronic do-it-yourself projects relating to performance technology.

Posted in Uncategorized | Leave a comment