Aether & Hemera logo
 
2017
  February
2016
  November
  September
  July
  June
  April
  January
2015
  November
  October
  August
  March
2014
  December
  October
  September
  August
  July
  June
  May
  March
  January
2013
  September
  July
  May
  April
  February
  January
2012
  December
  October
  September
  August
  July
  June
  May
  April
  March
  February
  January
2011
  December
  March
  January
2010
  December
  October
  September
  June
  May
« Newer post: Culture Cloud Exhibition
Older post: Artificial Intelligence to create an Interactive Art Installation »

If you happen to have a few RGB LED strips around and you play with electronics you are probably tempted to hook them to your arduino (or other preferred microcontroller) and paint your favourite corner of the house with beautiful colours.

 

Now, if you are lucky and the LED strips have a common anode that's quite simple; follow the instructions that Ladyada has put together and you are done. However if the LED Strip happens to have a common cathod (i.e. red, greeen and blue share the negative side of the voltage gap) you need a bit more circuitry to control with your 5V arduino the oscillation of the +12 volts that led strips tipically require (a bit of further discussion on this arrangement is available).

Tu put it simply you need a low power transistor to provide a voltage high enough to toggle the power mosfet, as the 5V of the arduino are not enough; you can achieve this (for each signal) with a circuit like the following:

Extract of the schematic for one pin.

Well, in our case we wanted to power 10 such strips and control R, G and B of each one indipendently, so we needed 30 channels; the mosfet used in this configuration is quite overspecified but it has been selected to allow higher loads in the future, if needed, and they are only about 1 pound each anyway.

The next hurdle now is to be able to control the PWM of 30 channels without spending too much time in the design of the circtuitry. The easy way out I chose is to use SoftPWM, a library that allows you to control every I/O pin as a PWM output.

This means that an arduino can control up to 20 channels, so I have connected two arduinos through the I2C  protocol to control the 30 channels. The I2C only uses two pins and leaves the Seial port free to communicate with the PC. Of course the PC is optional and the control logic can be stored int the arduino Master firmware. The lenght of the arduino chain is limited by the addresses available on the I2C bus and the desired refresh rate, but this is far from being a problem in this implementation. The overall framework looks like this:

Framework schematic

In our case the hardware is controlled from a PC that is animating the space in an interactive installation, but I've also prepared a custom application to control the light effects that will soon be made availanble on our GitHub repository along with the EagleCad schematics and board drawings.

One board 

Posted on 14/07/2012 19:56:38 by Aether

Find by tag:

Audio Video Interaction, Campaigns, Connect2, Events, Exhibitions, interactive, Links, OpenSource, Proposals

Private panel:

Login
Aether & Hemera © 2008-2017