Technology Context communicator

On this page I will briefly go into how this project was Technically realized.

For information on the project click here or here

This prototype was built in approximately 4 weeks.

Inside view of one of the 10 triangles


Driving 3 sides x 3 groups of LEDs per side x 10 triangles = 90 LEDs requires 90 x R,G,B = 90 x 3 = 270 channels. The easiest way to drive this is with 5 PhidgetLED64
boards (5x 64 = 320 channels). However with the ping-pong ball prototype I had the problem that the color of the LEDs was heavily red-ish. It was possible to compensate
for this. A kind of white light could be established with the following relative intensities: R40%, G60%, B100%. Because of this heavy compensation it was not possible to make
acceptable mix colors. Since color is an important feature in this design I had to search for another solution.

A solution was found in the TLC5940 LED driver. This LEDdriver is capable of driving LEDs with max 17Volt and max 160 mA per channel. The use of this LED driver
would also enable me to put 2 RGB LEDs in parallel to achieve a higher light intensity and homogeneity through the sandblasted Perspex on the edges of the triangles. The
TLC5940 can be driven by a Serial protocol via Arduino boards by making use of the public library of Metalab. The TLC5940 can be daisy-chained. This means that
the Serial-OUT channel of one IC can be connected to the Serial-IN of the next IC. This makes it possible to drive 4 TLC’s with just as much Arduino pins as one TLC.
The displayed prototype is a configuration of 10 fully functional triangles. In the prototype the freedom of configuration is limited. The triangles are configured in sets of
two. Every triangle holds 3 sides x 3 channels x 2 LEDs = 18 RGB LEDs. This makes a total of 180 RGB LEDs. Every set of two triangles holds an Arduino microcontroller board along with a home-etched circuit board embedding 4 TLC5940 daisy-chained LED driver chips which each offers 16 4096 bit resolution LED drive outputs.

These circuit boards are of my own design and etched at home through the toner transfer method. I also etched the circuit board for the LEDs. Without these circuit
boards this prototype would not have been possible in the limited amount of time. The circuit board consists out of a set of header pins, 4 TLC5940s and 4x 1kOhm
resistors to limit the maximum current of the TLC’s outputs to 40mA.

One of the 90 leds groups

Etched circuitboards

Power Supply
At full load the system can draw 180 x 3 channels per LED x 20 mA = 10.7 Amps. A
Power supply capable of supplying this is an ordinairy PC power supply.

Heat Issues
After connecting all the LEDs and supplying them with 5V the driver IC’s became too hot and started to fail. A way to solve this problem is to dissipate some of the power outside of the package by dropping the voltage from 5 tot 4.4V by using 5x an adjustable Voltage Regulator MIC29450. The MIC’s got pretty hot (75 degree) but the LED drivers were kept within the margins.

Used parts:
5 Arduino
5 home made circuitboard
20 TLC 5940
180 RGB LEDs
40 mtr UTP cable
20 1Ohm resistors
5x 5 mtr USB cable + USB Hub

Mess on my desk :) , don’t worry everything under control

First assembly in progress


The software was made in Flash. The software is capable of playing videos that have been captured before and can display a live feed of the webcam. Every 1/20th of a
second Flash measures the RGB values underneath the mapped LEDs for it’s value and then sends it to the proper Arduino. The protocol used to drive the Arduino is as follows:
63 bytes followed by the value 255 to indicate the end of the transmission. To compensate for possible color difference I’ve implemented a correction factor for
every color. LEDs efficiency becomes lower as the current through the LED grows. This means that at low currents the amount of light is relatively higher than at higher currents. This
combined with the way the eye perceives light makes that a fade from 10% – 50% versus a fade from 50-100% is much bigger. This has got an influence on the perception
of color. Therefore I’ve implemented a formula with a variable called “power”. It’s the following formula: Output Value = ((value / 255)^Power*255). With most scenes a
power of 1.5 or 2.0 gives the best perception of color.

Software interface

Comments are closed.