Go Down

Topic: 74HC595 Current Draw? (Read 14162 times) previous topic - next topic

mechengr


You could look at 12 or 20 bit shift registers like these
http://datasheets.maxim-ic.com/en/ds/MAX6920.pdf
http://datasheets.maxim-ic.com/en/ds/MAX6921-MAX6931.pdf
Use this to source current, and TPiC6B595s to sink current (or ULN2803 on output of 74HC595).

If your matrix is 12x12, why do you need more than 2 8bit parts each for the rows & columns?

Request a couple of samples from MAXIM.


It's for a 12x12x12 LED cube, and I am trying to keep the muxing down, so I am turning on a layer at a time (144 LED's at most).

retrolefty



I used the below shift register chips in my 5x5x5 led cube and they worked great. !6 bit, dip package with constant current output pins, where one external resistors sets the constant current value for all 16 bits.

http://www.newark.com/allegro-microsystems/a6276ea-t/ic-led-driver-constant-current/dp/87K3398


CrossRoads

$2.64 each!  I'd go with 56 cents and 8 resistors personally.

Oh, and this notice on the data sheet:

This part is in production but has been determined to be
LAST TIME BUY. This classification indicates that the product is
obsolete and notice has been given. Sale of this device is currently
restricted to existing customer applications. The device should not be
purchased for new design applications because of obsolescence in the
near future. Samples are no longer available.
Date of status change: November 1, 2010
Deadline for receipt of LAST TIME BUY orders: April 30, 2011

Too bad, 16 bit shift & good current sinking, like having 2 each 74HC595 &ULN2803, or two of TPIC6B595, in one package.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

CrossRoads

Allegro has a 16-bit surface mount version, available for less, $1.23
http://www.newark.com/allegro-microsystems/a6282eestr-t/ic-led-driver-constant-current/dp/72M5990

Is like a current-sink version of the maxim current source part.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

CrossRoads

"It's for a 12x12x12 LED cube, and I am trying to keep the muxing down, so I am turning on a layer at a time (144 LED's at most)."
So you've got horizantal muxing & vertical muxing.

Using a Maxim 12-bit chip to drive anode high and allegro chip to pull low, that's just 2 chips & resister per layer, with the vertical chip cycling thru the layer output enables.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

mechengr

#20
Mar 02, 2011, 11:59 pm Last Edit: Mar 03, 2011, 12:10 am by mechengr Reason: 1

"It's for a 12x12x12 LED cube, and I am trying to keep the muxing down, so I am turning on a layer at a time (144 LED's at most)."
So you've got horizantal muxing & vertical muxing.

Using a Maxim 12-bit chip to drive anode high and allegro chip to pull low, that's just 2 chips & resister per layer, with the vertical chip cycling thru the layer output enables.


Well, having looked through these chips, is PWM for grayscale brightness control something easy to do (it is easy to modify within my code)?  Is it as simple as feeding say 0-4095 to the chip (rather than a 1 or a 0)?

http://www.mouser.com/ProductDetail/Texas-Instruments/TLC5941NT/?qs=sGAEpiMZZMtEZf%252bBk5/8xwZiHP6816qs

The TLC5491 offered by TI will do 4096 levels of grayscale control as well as constant current and 16-bits, but at $3.26 a piece, they get expensive.  Animating the cube with a 8.3% on time (12 layers) is a lot simpler than animating the cube with a 0.69% on time (12 layers, 12 rows).  A constant current sink is a much more elegant solution though than a shift register with a resistor.

What are your thoughts?

I am planning to do all of the floating point calculations in MATLAB and then sending the matrices out to the shift register through the Arduino.

Grumpy_Mike

The problem is mixing PWM with the multiplexing, the two need to be synchronised. An on time of 8% is not going to be too bright.  25% on time is just on the limit of what I think is acceptable.

mechengr


The problem is mixing PWM with the multiplexing, the two need to be synchronised. An on time of 8% is not going to be too bright.  25% on time is just on the limit of what I think is acceptable.


Well, even ignoring the PWM for now.. for a multiplexed 5x5 matrix, each LED will only be on for 4% of the time, assume the entire matrix is on.  How do they accomplish this so that it still looks nice?

There are 32x32x32 cubes out there that are very bright and they are multiplexed as well (super bright LED's is not the answer in this case).  For that cube, the on time for each layer would only be 3.1%..

Is there something I am missing?

retrolefty

Quote
Is there something I am missing?


The magic of using constant current drivers where you can separate (decouple?) the led current value you want from the multiplexing timing duty cycle ?

Lefty

mechengr


Quote
Is there something I am missing?


The magic of using constant current drivers where you can separate (decouple?) the led current value you want from the multiplexing timing duty cycle ?

Lefty


First, thanks for all of your help, everyone!  This is certainly quite a learning experience for me (more-so than basic lab experiments we've ran).

Second and more to the point, please forgive me as I am not a EE (as my username may reveal :)), but I don't quite follow.  How is the LED current decoupled from the multiplexing timing?  I mean, I can turn a layer on forever at 20mA draw per LED, or switch it at 120 Hz and the LED's will still see 20 mA, correct?  Of course, heat dissipation will drop as a function of frequency (off-time), but I am not quite picking up what you're putting down.

mechengr

Okay, correct me if I am wrong here, but the maximum current that limits an LED is the heat dissipated, right?  I mean, is it really current limited or heat limited?

This might be a rookie mistake, but if the LED's (at worst) will see an 8% on time.  Could you push more current through it, but limit it's duty cycle (8%), for an increased brightness without damaging the diode?

scswift

If you look at the datasheet an LED, it will tell you the max current you can put through them continuously, but they will also often specify a much larger amount of current that you can put through it if you use a certain duty cycle.  I think one I looked at said something like you could put 120mA through, but only if the led was on for 1/1000th of the time or something.  The thing is, they don't explain how to calculate intermediate values, and I've never been able to ge an answer here as to how those might be calculated.  I assume it has to do with heat dissipation, but what is the relationship between duty cycle and mA?  Maybe the heat dissipates faster as the led heats up.  Or maybe it's linear.  Who knows?

scswift

Another thing to consider about heat dissipation is that you can't just say I'll have my LED on for 8% of the time, because that doesn't tell you how long the led is actually on for.  If you have a 50% duty cycle, is the led on for 1ms and then off for 1ms, or is it on for 16ms and then off for 16ms?  With the former it might be okay to put 60mA into the LED because it won't heat up fast enough to blow.  But with the latter it might get too hot.  Both are 50% duty cycles though.

CrossRoads

#28
Mar 03, 2011, 04:19 pm Last Edit: Mar 03, 2011, 04:27 pm by CrossRoads Reason: 1
I think the problem is people buy LEDs from crap suppliers that don't supply data sheets.
Here's  a spec for a part from superbrightleds.com
Has everything you need to know.

http://www.superbrightleds.com/cgi-bin/store/index.cgi?action=DispPage&Page2Disp=%2Fspecs%2Fw18015_specs.htm


>> Continuous Forward Current IF 30 mA  <<
>> Peak Forward Current (1/10th duty cycle, 0.1ms pulse width) IFM 100 mA <<
>> Reverse Voltage VR 5 V <<  
>> Forward Voltage VF 4.2 3.7 V IF=20mA <<    
>> Luminous Intensity IV  18000 mcd IF=20mA  <<

If one goes out & buys a bag of 1000 LEDs from e-bay from China, what do you get?  There-in lies the problem. So you are left to do some testing on your own and see what the parts will tolerate.
Write a loop that puts out pulses as specified, put in a variable resistor to control current flow, ideally put in a shunt resistor so you can a scope across it for accurate current measurement, and see what is achievable.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Grumpy_Mike

#29
Mar 03, 2011, 04:31 pm Last Edit: Mar 03, 2011, 04:36 pm by Grumpy_Mike Reason: 1
Quote
Maybe the heat dissipates faster as the led heats up.  Or maybe it's linear.  Who knows?


Newton that's who.

Newton's law of cooling states the rate of loss of heat is proportional to the excess temperature.

http://en.wikipedia.org/wiki/Heat_transfer

Quote
If one goes out & buys a bag of 1000 LEDs from e-bay from China, what do you get?

Very true, most of my bag (of 100) had very poor light output on the red LED except for two. One was very bright and the other crackled and blew with 15mA through it although it tested fine at 5mA.

Quote
for a multiplexed 5x5 matrix, each LED will only be on for 4% of the time

That is only true if you only turn one LED on at a time, LED cubes don't do this. When you are multiplexing you usually turn on a whole row or for a cube a layer. This makes the on time much longer.

Go Up