Arduino's digital outputs can pump about 40mA of current each.  This is nowhere near enough for most lighting or motor applications, so the use of a relay board or motor driver shield are necessary.  This are usually expensive and some have the limitation of including electro-mechanical devices like relays which tend to break.

This Instructable will guide you in creating your own multi-channel driver board using the Texas Instruments SN754410ne quad h-bridge IC ($1.75 from Jameco).  Used in this way, each one of these chips can be used as four 250mA channels or two 500mA channels.  I was able to comfortably fit six of these onto a single breadboard, giving me 24 channels @ 250mA each.  The datasheet says that 1.1A is the maximum for the chip, but I didn't test it on a single output.  The chip has two input/output sets per side.  Each has it's own ground, but share a common enable pin.  The current through both input/outputs on a single side cannot exceed 500mA...so if you had a 400mA LED strip, connect it to 1Y and leave 2Y free.  You may then still use 3Y and 4Y as 250mA channels or just one of them for a 500mA channel.

Step 1:
Place the SN754410ne onto the breadboard across the gap as shown.  In this case orient the breadboard so that the ICs have the half-circle on the left.  Connect pin 16 (Vcc1) to the positive rail on the top of the breadboard (which will be the 5.5V logic voltage).  Connect pin 8 (Vcc2) to the positive rail on the bottom (which will be our 12V supply for the LEDs).

Step 2:
Connect pins 4, 5, 12, and 13 to the ground rails on either side.  This is an important step even if you aren't going to use all the channels, as it is necessary for operation and used as a heat sink.

Step 3:
Connect pin 1 (1,2EN) and pin 9 (3,4EN) to positive (red) rail on the top (5.5V) power rail.  These are the "enable" pins.  In this case, we want them to always be on.  That way, when our input (A) is high, our output (Y) will be high.  Pin 1 covers outputs 1Y and 2Y while pin 9 covers outputs 3Y and 4Y.  I used a series of three jumpers as shown in the picture instead of one over the top.  Neatness counts when you've got lots of inputs/outputs

NOTE:  In some cases, it may be necessary to use a 5.5V source to assist the microprocessor.  I was able to run about 24 channels of ~100mA without, but when I added more, I needed an additional 5.5V current source.  I DC wall adapter worked great.

Step 4:
Connect the blue (negative) top and bottom power rails...this forms a common ground.

Step 5:
Connect the 12V power source to the lower (12V) power rail.   I used a wall adapter with a 2.1x5.5mm jack.  This is from where the outputs will draw their current.  Do not exceed the amperage of the breadboard...check the manufacturer for that.

Step 6:
Connect your microprocessor, in this case, an Arduino Uno to the logic (5.5V) positive rail and the ground (any).  The jumpers go from 5V and GND on the Arduino's power header.

Step 7:
In this case, I was also able to use the 12V source power rail to power the Arduino through Vin on the power header.

Step 8:
Connect the desired digital outputs on the Arduino, in this case, 1 and 2 on the digital header to pins 2  (1A) and 7 (2A) on the SN754410ne.

Step 9:
Connect the desired outputs on the quad h-bridge (1Y, 2Y, 3Y, or 4Y) to the positive node on the LED strip.

Step 10:
Connect the negative node on the LED strip to the ground rail.

Step 11:
Plug it in and enjoy the lights.  Please take a look at how this scales up.  In this case I've got an Arduino MEGA connected to some 100+ feet of LED strips in 40+ channels.  Amazing.

Good luck,
TechShop San Francisco
This looks too good to be true! How is current through the LEDs regulated?
The LED strip has an on chip driver. If using a single LED a current limiting resistor or other driver would be required. The quad h-bridge acts as a relay rather than a driver.

About This Instructable




More by techshopzack:DIY Portable Expedition Flag Use an Old Wetsuit to Make a Beer Coozie Installing a Virtual Machine and Ubuntu on Windows 7 
Add instructable to: