10
\$\begingroup\$

I am working on an electronics project which involves hundreds of LEDs. (Talking upwards of six to seven hundred LEDs...a lot, I know.) Is there any way to control this many LEDs with one or a couple Arduinos? I would like to be able to access/control each LED individually as what I am wanting to do is plot LEDs onto a wall map of the world. I will then interface Arduino with Google Analytics and when someone navigates to my site from a certain place in the world, the LED closest to their region will light up in almost-real-time.

Any help would be appreciated. Thanks! I've tried to research some and read about multiplexing and charlie-plexing, but those seem to max out at 100 or so? I'm assuming I would need external hardware/components to be able to control this many LEDs, but what exactly would I need to make this happen? Has anyone else ever created an LED matrix this large?

\$\endgroup\$
9
\$\begingroup\$

When you multiplex a large number of LEDs individually the common way is to use an N x M matrix. The time is divided in N steps, in each step you activate one of the N row lines, and the column lines that correspond of the LEDs you want to enable. Note that the row lines can each carry M times the LED current, which asks for some buffering. Each LED is on only 1/N of the time, so to keep the normal brightness you must increase the current N-fold. Most LEds don't like this. Charlieplexing is not practical in ths situation because of the large currents involved.

From your question I understand that you want to enable only 1 LED at a time? In that case there is nothing wrong with Charlieplexing. A uC with 31 I/O pins can drive 900 LEDs. Sounds like the consruction will be a nightmare...


Update 5 years later: Normal multiplexing or Charlieplexing is nice when you have too much time at hand, but when I had to control 100's of LEDs now I would buy a long strip of WS2801 LEDs.

\$\endgroup\$
  • \$\begingroup\$ I think I have something to add. Well, if high current is the problem then use high voltage. like 9v but for a very short time 10mS and correctly calculated duty cycle. As it also use the increase the life time of LED lamps. \$\endgroup\$ – Standard Sandun Nov 24 '12 at 20:35
  • \$\begingroup\$ The voltage dropped by a LED is fixed, and so is the output voltage of an Arduino (likely 5V, for some types 3.3V). Using a higher current with a smaller duty cycle generally decreases LED lifetime. \$\endgroup\$ – Wouter van Ooijen Nov 24 '12 at 22:26
9
\$\begingroup\$

You could use a cheap and readily found 74HC595 (or similar) shift register to easily control hundreds of LEDs using just a few pins from the arduino.

Theres even a a tutorial on this on the Arduino site!

Serial to Parallel Shifting-Out with a 74HC595

Shifting Out & the 595 chip

At sometime or another you may run out of pins on your Arduino board and need to extend it with shift registers. This example is based on the 74HC595. The datasheet refers to the 74HC595 as an "8-bit serial-in, serial or parallel-out shift register with output latches; 3-state." In other words, you can use it to control 8 outputs at a time while only taking up a few pins on your microcontroller. You can link multiple registers together to extend your output even more.

\$\endgroup\$
  • \$\begingroup\$ That would be a lot of shift registers, but it would work :) You would need approx 88 (700 leds / 8 leds per chip) shift registers and only 1 mcu. \$\endgroup\$ – Johan Nov 24 '12 at 20:31
  • 1
    \$\begingroup\$ Don't forget the additional logic drivers, since 88 inputs is quite a lot to handle. \$\endgroup\$ – Ignacio Vazquez-Abrams Dec 16 '14 at 2:49
2
\$\begingroup\$

I would build this in a modular manner. Maxim's 6960 will drive 64 LEDs for you, though it is a bit pricey. They are driven with a serial interface, and you can connect up to 256 of them together.

The 7218/7221 would also work.

\$\endgroup\$
2
\$\begingroup\$

A bit of a late answer to this question, but here are 528 LEDs Charlieplexed off a single PICAXE 40X2. It would go up to 930 LEDs if all pins were dedicated to the job.

The build : http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

A video: http://www.youtube.com/watch?v=82LvqiaH-iA

The PICAXE architecture is quite slow, so the maximum number of LEDs that can be lit simultaneously is limited to about 15 before flicker becomes a problem. A faster processor, and cleverer programming, would increase this number significantly.

\$\endgroup\$
1
\$\begingroup\$

I am not sure if my answer is good or not...but why not speaking about WS2811 addressable leds stripes??

We want to do a LED matrix to show text. There is a project here (https://www.pjrc.com/teensy/td_libs_OctoWS2811.html), made on a Teensy, which is near same thing than an Arduino.

I think it uses the concept of PWM (Pulse Width Modulation), and thus allowing to send complex data to the leds stripes with a single wire.

But again, I am not sure if my answer is good...

\$\endgroup\$
  • \$\begingroup\$ The problem is that the timing required restricts the number of LEDs you can chain together, and spreading them across multiple chains increases overall processing time. \$\endgroup\$ – Ignacio Vazquez-Abrams Dec 16 '14 at 2:48
0
\$\begingroup\$

We had a nice bit of discussion regarding driving many LEDs in a recent question here. My answer there appears to be directly applicable to your problem here. See the answer here:

Driving LEDs at long distance

\$\endgroup\$
  • 4
    \$\begingroup\$ Can you bring over the applicable information and tailor it to this question, if your answer works perfectly for both it is a sign of an exact duplicate. \$\endgroup\$ – Kortuk Sep 24 '12 at 20:24
0
\$\begingroup\$

Based on info at http://bildr.org/?s=shift+register on the 74H595 shift register with an Arduino Uno, that said 'if you have 1000 of these chained together' a project was started on a an LED display with 320 LEDS. When I got above 100 LEDs got bad flicker and eventually fried the Arduino.

So I talked to tech support at Sparkfun who sold me the breakout boards for the 74H595. He said you can only have five or six LEDs on at a time. So I went back and reread the article at BLDR and realized that you can control thousands of LEDs using 74H595/Arduino but you can only have a dozen or so on at any one time. (This makes sense because the Arduino will allow 200mA thru the 5 volt out put and each LED draws 20mA so about ten is all that it will safely power)

Transistors have been seen that can be switched on with 1mA of current. If that is true if one could design a circuit that controls transistors that have a much higher voltage/current collector to emitter flow. Then one could use the Arduino/74H595 combination to control transistors that in a circuit with higher current.

Allen in Dallas

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.