LED display driver using darlington array? - Page 1
Forum section: electronics / beginners

author: vamp666
author_rank: Newbie
timestamp: September 18, 2014, 07:10:45 am
content: Hello.I want to make a 3D LED display (basicaly a 5x5x5 LED cube).This display will be controled by a PIC16LF1517 via SPI witch controls 4 * 74HC595 shift registers witch controls some ULN2003A darlington array.I want a LED to light when i set high 2 pins of shift registers (1 pin for column and 1 pin for layer)I want to use those darlingtons to drive my LED cube because I dont have any PNP or mosfets. So i plan to use 2 darlington pairs LED anode and one for cathode. Something like in the circuit below (.png file).So when i set anode driver input high, first darlington will saturate and will set the second darlington base low, allowing the LED to light up if the third darlington base is driven high.My question is : Is this possible?The PDF has full PCB schematic.On J2, pins 2,4,6,8,10 will go to cube layers, witch are common cathodes. the rest will go to cube colums (anodes)I am new in electronics and this is my first project. Probably the schematic has some glitches..Sorry if my english is not perfect..

author: george graves
author_rank: Super Contributor
timestamp: September 18, 2014, 07:17:14 am
content: I assume you're already familiar with "charlieplexing"?

author: vamp666
author_rank: Newbie
timestamp: September 18, 2014, 07:18:21 am
content: I saw some videos about it.I want to use multiplexing...

author: mariush
author_rank: Super Contributor
timestamp: September 18, 2014, 08:21:12 am
content: ULN2003A is an array of darlington transistors with resistors on the base of each transistor.So you can connect one output of the shift register directly to the base of one transistor in ULN2003A and then use a resistor to limit current that goes through the led.You have 5 layers of 5x5 leds... you can use one ULN2003A to choose which layer receives power. You can use 4 shift registers connected together (4x8 outputs = 32 leds max) and 4 uln2003A chips (4x7 = 28 leds max) to turn on or off individual leds in a layer.So you'll light up one layer at a time for a few ms by shifting the 25 bits into the shift registers, then turn on the particular layer to show it. If you want, since you have to use 4 shift registers anyway and you have 32 bits, you can use 5 of those to turn on the particular layer you want to turn on or off. So you send the 5 bits to turn on/off layer, then the 25 bits for each led in the layer.

author: Falcon69
author_rank: Super Contributor
timestamp: September 18, 2014, 08:46:59 am
content: ULN2803 adds one more output, if needed

author: vamp666
author_rank: Newbie
timestamp: September 18, 2014, 08:57:04 am
content: What i see inhttp://embedded-lab.com/blog/wp-content/uploads/2011/04/ULN2003A.jpgschematic a darlinton pair can only sink current. I can use this for layer.But to drive current i cant use just one darlington pair(i could use some NPN,s but i dont have any). As i said i want to set two pins high in order to light one LED.I set output of shift registers to 1 for column and for layer. so 2 pins will be high if i want to light one LED.

author: hexpope
author_rank: Contributor
timestamp: September 18, 2014, 09:16:07 am
content: Hi Vamp,To cut down on components, you could use the TI TPIC6B595 Power shift register. You can order three of them from TI samples shop for free to try out and they will ship them to you via Fedex all free of course.

author: mariush
author_rank: Super Contributor
timestamp: September 18, 2014, 09:17:45 am
content: You can connect the leds something like this (the below is just something i found quickly on google images) :Just connect 7 leds to it with resistor for each led, to limit current to each led. So you have 25 leds, 7 transistors per chip, easy to use 5 uln2003a for everything.A small note... the uln2003A is a bit "slow", well... compared to mosfets or individual npn/pnp transistors. It will take a few (tens of) microseconds for the darlington transistors to actually close and turn on. So when you turn off a layer and turn on the other, you may have to write code in your microcontroller to turn off a layer, wait a ms or so, then send command to turn on the leds and then send power to all 25 leds in the layer by enabling the layer.

author: vamp666
author_rank: Newbie
timestamp: September 18, 2014, 11:24:51 am
content: but how do in connect the positive lead to ULN2003?i think i will just use pull-up resistors, and i will invert the output of shift registers for anode columns. so if i want an led to light up, i make the ULN input low for column and high for layer.That way i will use only 4 shift registers, 5 ULN2003 and a bunch of resistors (50 i guess).

author: kony
author_rank: Regular Contributor
timestamp: September 18, 2014, 11:49:36 am
content: It amazes me, that noone yet mentioned dedicated LED drivers -http://www.ti.com/lsds/ti/power-management/signage-linear-products.pagefor example, choose what you need. No resistors, LEDs driven by current sources. Then just add display "layer" anodes switching and you are done.

author: hexpope
author_rank: Contributor
timestamp: September 18, 2014, 11:57:48 am
content: Quote from: kony on September 18, 2014, 11:49:36 amI totally forgot about those, I haven't had the chance to use them yet. Good choice