Designing a Multiplexed Binary Clock with Increased and Consistent LED Brightness

This post will help you increase the brightness of your binary clock. It will also guide you to select components to provide a consistent brightness across all LEDs especially as additional LED segments are activated.

In a previous article we explored a functional binary clock that had “minimally adequate” display brightness. That article identified the limitation of multiplexed displays in terms of the current handling of the microcontroller and the reduced brightness due to the multiplexing process itself. It compared multiplexing to a Pulse Width Modulation (PWM) signal. Each LED in the 6-column by 4-row LED matrix was on for 1/6 of the total time which equates to duty cycle of approximately 17 %. Also, due to the chosen microcontroller constraints, the LED current was limited to 13 mA. Together, these constraints provided a less than stellar display.

In this installment, we retain the 6-column by 4-row display with the 17 % duty cycle. To increase brightness, we will increase the LED’s current using both row and column driver transistors. Instead of using 13 mA, we will use a pulsed 40 mA current. This cautiously implemented approach pushes the LEDs to approximately two times higher than their continuous current. The result, as shown in Figure 1, is a significant improvement over the original design. This is obtained with a moderate increase in circuit complexity as shown in Figure 2.

Figure 1: Picture of the high brightness binary clock featuring multiplex LEDs with column and row drivers displaying 01:35:46.

Figure 2: Schematic featuring column and row drivers for the multiplexed display.


Most LEDs have two current ratings. One is a continuous current which is typically accompanied by a 25° temperature stipulation. The second rating is a higher pulsed current which is generally appropriate for a “flickering” multiplexed display.

By operating the LED at a higher current, we can reclaim some of the brightness lost in the multiplexing process. This can be challenging design process as there is a fine line between acceptable operation and unreliability due to excessive LED heating. As a rule, a multiplexed LED may be operated at full rated continuous current and perhaps as much as two or three times higher.

You must consult and carefully interpret the datasheet. For high volume production, you may want to consult one of the manufacturer’s application engineers. For one-off experiments, as presented in this article, consider this a learning opportunity, and see where it takes you.

Improved design with column and row driver transistors

In the previous article we used PNP transistors column drivers. These transistors would pull a set of common anode LEDs to the positive rail. The individual rows were then driven directly by the microcontroller. The microcontroller would pull the cathode towards ground completing the circuit to turn on the LED. In this configuration, the microcontroller’s ability to sink current is the limiting factor. The solution is to use both row and column driving transistors.

Tech Tip: The row and column transistors in this application are used as switches. It is important to fully turn on the transistor so that maximum voltage is applied to the LED. For a “full on” condition, the transistor is driven into saturation (closed switch). One way to do this is to configure the circuit into a forced beta condition. This may be done by selecting resistors with the assumption that I_C =10I_B. This is generally, but not always sufficient, to place a transistor into saturation. See the body of the article for an exception.

Additional information about transistor saturation and the forced beta operating point is found in a recent forum post. It explores the resistor calculations for forced beta and the complications of higher collector currents.

Complications due to increased current

Originally, I had planned to preserve the 2N3906 PNP column driver as featured in the previous article. This worked, but the LED brightness would dim when multiple LEDs were activated in any given column. A review showed that the resistor calculations were correct. Further investigation showed that the 2N3906 is inappropriate for the higher current operation.

The problem is a reduced gain at higher current. Recall that the resistors were chosen for a forced beta operation. With this configuration, resistors are selected so that the base current is one tenth the collector current. This stipulation usually places the transistor into saturation. Unfortunately, this was not the case with the 2N3906. I was asking it to operate outside of its envelope.

Like many transistors, the 2N3906 datasheet presents the current gain at a variety of collector currents. One data point that should have caught my attention is a DC gain of 30 (min) for a collector current of 100 mA. That doesn’t leave much headroom when compared to our chosen forced beta of 10. But things get worse for the chosen 160 mA when all LEDS in a single column are activated.

Figure 3 presents a normalized gain of the transistor as a function of collector current. At I_C =10 mA with a 25° temperature, we see peak of 1.0 which may be approximated as a gain of 100. The chart is marked for the current associated with 1, 2, 3, and 4 LEDs. Observe that the gain drops significantly. In fact, with 4 LEDs active, the gain at 160 mA is below our chosen forced beta. Instead of being in saturation, the transistor is operating in its linear range. The increased (non-saturated) V_{CE} voltage drop manifests as a dimming of the LEDS. The display is bright with one LED per column but grows progressively dimmer as more LEDs are activated.

Figure 3: Chart showing a significant reduction in transistor DC gain as the number of LEDs was increased.


The solution was to select a transistor better matched to the application. The next conveniently available transistor was the MPSA56. This is a good choice as this transistor has a minimum gain of 100 for a collector current of 100 mA compared to the original 2N3906 gain of 30. With this change the LED brightness was consistent for all displayed numbers.

Next, we consider the current limitation of the LED. This is controlled via a series resistor (R 11 to R14) for each row. This resistance is calculated assuming the full 5 VDC is applied across the LED. We will use a 40 mA current which is approximately two times the continuous current rating for the LED. As previously stated, we are operating in a gray area. This increased current could lead to shorter LED life.

R_{LED} = \dfrac{V_{Supply} – V_{LED}}{I_{LED}} = \dfrac{5.0 – 2.3}{0.040} \approx 68\, \Omega

We can calculate the resistor for the column drivers. We do this assuming a forced beta condition with I_{LED} = 40 \, mA. Also, note that that up to 4 LEDs may be driven at any given time yielding a collector current of 160 mA:

R_{ColumnDrive} = \dfrac{V_{Supply} – V_{BE}}{I_{B_ColumnDrive}} = \dfrac{5.0 – 0.9}{0.016} \approx 220\, \Omega

Finally, we calculate the base resistor for the row driver transistor:

R_{RowDrive} = \dfrac{V_{Supply} – V_{BE}}{I_{B_RowDrive}} = \dfrac{5.0 – 0.8}{0.004} \approx 1\, k\Omega

This calculated row driver base resistor was lowered to 680 Ω to push the transistor a bit deeper into saturation. This lowered V_{CE} by approximately 0.5 VDC. It’s a subtle but visible change.

Parting Thoughts

The addition of both column and row drivers mitigates the low current capabilities of the microcontroller. The result is increased display brightness with a small increase in circuit complexity.

Be sure to carefully review the datasheet specifications when operating LEDs using a pulsed current that is higher than the continuous rating. There is a fine line between increasing the display brightness and burning out the LEDs.

Please share the results of your project especially if you were able to incorporate these ideas.

Best Wishes,