Update December 2014: a kit containing all the circuit parts for this project is now available from Jameco Electronics. See the Materials step for details.
The inspiration for this project started when I saw a variety of awesome stereo LED towers on YouTube (also referred to as VU meters). Many of the videos showed the end result, and maybe a slideshow of the assembly process, but lacked complete build details or a circuit diagram. So, I set out to find out how they worked, and build my own "mini" desktop version that would go nicely with computer speakers, instead of a big living room stereo. This Instructable will give you complete directions to assemble the required circuit (even if you have no electronics experience - you can even do it without soldering), build two LED towers, and hook them up to an audio input so you can simultaneously drive them and listen to music.
To give credit where credit is due - if you search Instructables, there are a lot of "make LEDs respond to music" type projects. They range from rather simple, like using a transistor to drive a single LED; to using an Arduino or a Raspberry Pi to make an audio equalizer. This project lies somewhere in between - it uses a handy "LED driver" chip called the LM3914. The chip can drive a bar of 10 LEDs proportionally to an analog input, with no microcontroller required. So, using two of the chips with a simple circuit and stereo sound is sufficient to drive two separate volume towers.
While there are already a handful of Instructables about using the LM3914, I'm hoping this new one can contribute two things: a very clear explanation of how the circuit works along with assembly instructions, and a way to make aesthetically-pleasing LED towers that will look nice on a computer desktop, instead of just sticking all the LEDs on a breadboard. Head on to the next step for a full materials list - but first, a quick note about some of the resources I used:
I owe a special thank you to the SoHa SMART makerspace for letting me use their laser cutter for this project. I also used the UP! Plus 3D printer I won in last year's UP! contest. I have my fingers crossed for this year's Epilog Challenge, as it would be great to have my own laser cutter for projects like this in the future. As I've learned from previous projects, cutting acrylic with a jigsaw is a pain. Scoring it with a plastic-cutting knife or utility knife and snapping it works OK for rectangular pieces, but that quickly becomes a limiting factor if you want to do more complicated shapes. However, if you don't have access to a 3D printer and/or laser cutter, don't despair! You can still follow the instructions to build the circuit, you will just need to come up with an alternate method for building the LED towers. I'll provide some suggestions for that in the following steps.
Some helpful updates thanks to the comments:
Step 1: Materials
Update December 2014: a kit containing all the circuit parts for this project is now available from Jameco Electronics. There are two modifications to the kit from the original list below. First, it contains stranded hookup wire instead of the (more expensive) M-F jumper wires, so you will need a soldering iron. Second, based on feedback from the comments (see below), it contains the LM3916 LED driver chip in addition to the LM3914. The pinouts are the same, so you can swap the chips out and use whichever one you like best. Full disclosure: I earn a commission on any Jameco sales, as outlined at the bottom of this page. I did the math and it's actually about $5 cheaper to buy the kit through Jameco than it is to buy all the individual components through them separately. But obviously, if you can source the components elsewhere cheaper, or already have some of them laying around, there's no real reason to buy the kit. For reference you can submit your own kit designs at clubjameco.com.
The following is an exact list of the materials I used. Of course, there is room for customization in this project (i.e. if you want to use different color LEDs, or design your own towers), so you can alter as you see fit.
LED tower materials
Step 2: Assemble the test circuit
Before you start building the towers, I'd highly recommend assembling the entire circuit (including LEDs) on a breadboard and testing it. That way you won't get an unpleasant surprises when you build the whole thing and something doesn't work. The "test" circuit uses a potentiometer (which forms a voltage divider) as the analog input instead of an audio signal. This step is just assembly instructions - if you want to learn how the circuit actually works, see the next step.
If you're used to working with breadboards, you can probably just follow the first breadboard diagram above to assemble everything. If not, follow the step-by-step instructions below to take things just a few components at a time (and here's a tutorial about using a breadboard if that helps).
If you can read circuit diagrams (here's a nice tutorial if you want to learn, and a Wikipedia article with all the common symbols), the second image shows the diagram for one LM3914, so you can duplicate that to hook up both (note that the analog input potentiometer and the SPDT switch are shared between the two LM3914's on the breadboard, whereas each one has its own pot connected to pins 6 & 7).
I've also included a photo of the circuit - notice how the LEDs are actually too big to be all squished together like that, so you have to bend the leads sideways a bit.
Step 3: How does the circuit work?
By now, hopefully you're at least a little bit curious about how the circuit works. If you want the full-blown explanation, you can read the LM3914's official datasheet. I'll try to give a simplified explanation here, based on the diagram on page 8 of the datasheet (copied and annotated above). Here are the key components:
Step 4: Test the circuit
Time to test things out!
If it works, great! Now you're ready to start building the tower. If it doesn't work, go back to Step 2 and double-check your wiring. Be careful about the following:
Step 5: 3D print the towers
You will need to print two of the LED towers. I can't give very specific instructions here, since everyone will have access to a different type of 3D printer. The default settings on my UP! Plus worked fine. I'd definitely recommend printing in the orientation shown in the first photo above - this means that it won't require any support material. Printing it vertically would make it a huge pain to clean out all the holes for the LEDs and slots for the acrylic plates.
Remember that you can download the STL file from this page or from Thingiverse. The file dimensions are in millimeters.
Scroll through the photos above to see some design notes. If anyone prints one on a different printer (Makerbot etc) and you have recommended settings, leave a comment and I can add them to this step.
Remember that if you don't want to use a 3D printer, you can try mounting the acrylic plates on a threaded rod instead, or come up with your own method.LED tower_v4.STL
Step 6: Laser cut the acrylic sheets
You will need to laser-cut 20 acrylic pieces.These pieces slide into slots in the towers and have a cut-out for the LEDs (see next step to see how it all fits together). You can download either the DXF or DWG from this page. Dimensions are in millimeters, and each file contains 10 pieces arranged in a 5x2 array. I made these with DraftSight.
Again, I can't provide specific directions here since everyone will have access to a different type of laser cutter. I used a hobby laser from Full Spectrum Laser at the SoHa SMART makerspace, and it was able to cut 1/8" acrylic without any trouble. If you're not sure about cutting acrylic on your laser, I'd recommend doing smaller test cuts before you potentially waste material by trying to cut out 10 of these at once.
If you don't have access to a laser cutter, you can use a utility knife or a special plastic-cutting knife to score and snap the acrylic instead, then drill holes for the LEDs (this won't be fun to do for 20 pieces though).
Step 7: Assembly dry run
Before you start permanently gluing and/or soldering things, it's probably a good idea to make sure all your pieces fit together. Depending on the tolerances of your 3D printer and laser cutter, three things could happen:
I'd recommend checking things one at a time. This approach will help you pinpoint any tolerance issues:
Follow the photos above to see how the pieces fit together. If your parts are a little loose, you can just use glue to hold them in place (see next step). If they don't fit, try gently shaving down material as necessary (with a file, hobby knife etc). As an absolute last resort, you can try re-designing the CAD files to be more compatible with the tolerances of your printer and/or laser cutter.
Make sure you do this for both towers!
Step 8: Glue the LEDs and/or acrylic plates in place if necessary
My acrylic plates fit snugly, but the LEDs required glue to hold them in place. I found that the nozzle of my glue gun was way too big to apply small enough quantities of glue, so I used a toothpick to apply the glue - either directly to the surface of the hole, or the back of the LED. Be careful about getting glue everywhere, as it can be a pain to clean up later. This is the point where you need to decide what color order you want your LEDs in permanently (I did blue at the bottom, red at the top).
Important note about the LEDs: make sure you're consistent with the left-right orientation of the leads. In the photos above, all the long leads (anodes) are on the right, and all the short leads (cathodes) are on the left.
Important note about the acrylic: it's probably dirty at this point from fingerprint smudges, smoke/debris from the laser cutter, and other grime. You should probably clean the pieces off before you permanently glue them in place - they'll be hard to clean later, since the gap between them isn't that big.
Step 9: Connect all the LED anodes
The LEDs in the circuit (refer back to the diagrams in Step 2) all have a common anode, meaning the long leads can all be connected together. I used needle-nosed pliers to bend all the leads together as shown above, then soldered them together. Again, make sure you do this for both towers - but, assuming you don't want the towers right next to each other, don't solder the two towers to each other.
If you don't have a soldering iron, do your best to tightly bend/crimp the leads together, so they make good electrical contact.
Step 10: Connect the tower LEDs to the breadboard
Now you're ready to connect the LED towers to your breadboard.
Once everything is plugged in, test the circuit again like you did in Step 4. Nothing should have changed on the breadboard but the LED connections - so if it worked before, but doesn't work now, odds are something's wrong with your LED wiring. Again, make sure you have the LED polarity correct. Check your soldering work, and if you're using the male-female jumper wires, make sure they aren't loose.
Step 11: Connect the audio source
Disclaimer: if you have wired something wrong, there is no guarantee that the circuit won't damage the device you use for audio output. Accidentally sending 4.5 volts into your computer's headphone jack probably isn't good. So, make sure you have been super-careful about double checking your wiring up until this point. If you're extra paranoid, you could dust off that old first-generation iPod you have sitting in a drawer somewhere and use that for a preliminary test.
Now, time to get rid of that "test" potentiometer and connect a real audio source!
Step 12: Test it!
Now, turn the battery pack on, pick your favorite music, and hit play! My setup seems to work best if I max out the volume on the computer (i.e. in the Windows taskbar, or in Pandora on my phone), and then individually adjust the potentiometers to make sure I get full-scale output on the LED towers. Obviously the lighting effects look way cooler in a dark room.
Thanks for reading this far! If you get stuck, have any questions, or suggested improvements, please don't hesitate to leave a comment, and I'll be happy to try and help out. Here's the video one more time in case you missed it at the beginning:
Step 13: References
I've tried to include a bunch of useful reference links scattered throughout the project. I've consolidated them all here in case you don't want to go digging around for them.