How can I make LED's light up equally?

I have built a Binary to Unary (kind of) circuit on my breadboard. It looks like this:

simulate this circuit – Schematic created using CircuitLab

There are three switches that represent "binary number", and according to that switches' combination, number of lit LEDs change to represent that binary number.

So for example:

A B C     LEDs
0 1 0     _____OO
0 1 1     ____OOO
1 0 0     ___OOOO
etc..


But with different ABC combination my LED's are lit with different luminous intensity...

I am wondering how do provide equal current and voltage for LEDs and make them light up with equal luminous intensity independent of switches' combination. Probably I'm not understanding some major law in electronics.

• What intensities are you seeing? And are you powering off a nine volt battery, or a power supply? Apr 23 '13 at 3:40
• Yes I was powering off a 9V battery, then I also tried with my rectified 5V power supply. With latter case, it's even worse intensity differences. Apr 23 '13 at 4:38
• Can you check the power supply voltage, if it changes with the number of LEDs? Apr 23 '13 at 6:26

There are several things you need to do to have the LEDs be equal brightness.

The best way to make the LEDs look the same is to drive them with a constant current. This is easier than it sounds, because many companies make chips specifically for driving lots of LEDs with constant current. Here is one from TI. Of course, this is a little more difficult because you have chosen to use discrete transistors instead of gates/cplds/mcu's-- but those are the breaks.

The second, and hardest, is to get LEDs that are matched. I say this is hardest because when you buy in hobby volumes, you are often at the mercy of the people you buy it from. Getting things from DigiKey might be easier, but you have to research the different LEDs and see which ones do better color and intensity matching. However, for most uses this step is not required as LED that have the same manufacturer part number are usually "good enough".

• +1 for the TLC line. I've used the TLC5940's and they're pretty nice. 16 channels of constant current LED driving and simple to interface with... and extremely decent results powering up with a 9v battery alongside an arduino. Apr 23 '13 at 5:44

At the very simplest you will need a constant-current power supply for each LED, with their outputs (manually) tuned to provide matching brightness.

What intensities are you seeing? And are you powering off a nine volt battery, or a power supply?

First, you have most of your common NPN Transistors with the loads after the emitter. While I can see why for some spots, where you don't want to invert a signal, at the least the leds and current regulating resistors should go before the last transistors.

Second, the base resistor for the last transistor is 100kΩ! Given 9v - 2x 0.7v C-E Transistor Drops, you are only placing ((9v - 1.4) / 100000) 0.0076 mA or less of current at the base.

I honestly don't think this has anything to do with not using a constant current driver. I only use a constant current driver when I am working with high power LEDs. Common LEDs are very predictable using nothing more than a current limiting series resistor, and realistically, this is a primitive type of constant current driver anyway. As long as the LEDs are from the same source (made at the same time by the same manufacturer) and equal series resistors are used, the brightness should be near enough not to notice.

I believe the difference in light output is based on the tiny current being fed into the transistor bases. That is why it was worse at a lower source voltage: even less base current. The BJTs are not acting as switches, but as amplifiers.

Trying using smaller resistors at the transistor bases to fully saturate them.