# LED Display Multiplexing

#### Karthik rajagopal

May 9, 2016
257
Hi all,
I recently found a Duplex Led Display from an old alarm clock. It has a total of 23 pins to just drive 4 digits with 7- segments each (with an exception of the 1st digit as it only has 'A' and 'B' segments) and the colon LEDs. After doing some testing, I found out that this display could be used only by multiplexing and direct drive was not possible.
I did a simple clock circuit using arduino and used 74HC595 IC for shifting the bits and TLC59213 LED Driver IC to deliver enough current for the LEDs. I multiplexed it at a frequency of 5KHz below which a visible flicker occurred.
My circuit worked as expected but the brightness was too low. So, I increased the Vcc of the LED Driver IC to 12v which was close to its maximum operating voltage of 15V. This did improve the brightness by a bit but still LEDs were emitting only half the brightness they were actually capable of.
Each segment has two LEDs in series.

Please suggest me a way to improve the display's brightness .

Image of the display in the arduino clock circuit :
Circuit Diagram of the old alarm clock :

#### Harald Kapp

##### Moderator
Moderator
Nov 17, 2011
13,769
When multiplexing you reduce the duty cycle of the LEDs. In this case the duty cycle will be ~ 25 % (4 Segments * 25 % = total of 100 %).
Therefore you need to increase the LED current during on time. To achieve for example an average LED current of 20 mA at 25 % duty cycle the LED current needs to be 100 mA during on time. With theTLC59213 you set the LED current using series resistors. Check the datasheet for details.

#### Karthik rajagopal

May 9, 2016
257
When multiplexing you reduce the duty cycle of the LEDs. In this case the duty cycle will be ~ 25 % (4 Segments * 25 % = total of 100 %).
Therefore you need to increase the LED current during on time. To achieve for example an average LED current of 20 mA at 25 % duty cycle the LED current needs to be 100 mA during on time. With theTLC59213 you set the LED current using series resistors. Check the datasheet for details.
As you had advised, I lowered the series resistance which delivered around 90mA and it almost fixed the issue except when the number of segments that were lit reduced(while displaying numbers like 1 ,7...). My arduino code just had to loop with lighting those segments which increased the Ton time thus increasing the current through each segment. The yellow LEDs almost turned orange.
Should I write the code in a way it maintains the duty cycle irrespective of the number being displayed or is there any other way I can fix this?

#### Harald Kapp

##### Moderator
Moderator
Nov 17, 2011
13,769
Should I write the code in a way it maintains the duty cycle irrespective of the number being displayed or is there any other way I can fix this?
You definitely should do that. I assume you use delay() to generate the timing as is often seen in simple Arduino code, right?
The way to fix this is by putting the multiplexing code into an interrupt routine that is driven by a timer. This example should get you started.

#### Karthik rajagopal

May 9, 2016
257
You definitely should do that. I assume you use delay() to generate the timing as is often seen in simple Arduino code, right?
The way to fix this is by putting the multiplexing code into an interrupt routine that is driven by a timer. This example should get you started.
Thanks for sharing the link. I will do it with timers and interrupts.

Replies
4
Views
156
Replies
1
Views
337
Replies
34
Views
1K
Replies
4
Views
839
Replies
4
Views
2K