Transistor selection

Hi all

I am planning a project to create a fairly standard 8 row x 32 column led matrix (row scanning). The cathodes in each row will be connected and the abodes in each column will be connected. Before I ask my question let me explain what (I think) I already know!

The 32 columns will be driven by 8 daisy chained 74hc595 shift registers through current limiting resistors. This is acceptable as only 1 led in each column will be on at a given point in time, and so the current will be ~20mA.
The rows will also be driven by a single 74hc595 shift register, which in turn switches 8 transistors - one per row. This is because the rows may have up to 32 leds on at once for ~600-800mA.

My question is this - how do I go about spec'ing a suitable transistor for this case? And similarly, how do
I spec any current limiting resistors required?

Many thanks for your help

Your description seems sound to me.

The following page gives a comprehensive but easy to understand explanation of transistor selection and the associated calculations:

boileroo:
My question is this - how do I go about spec'ing a suitable transistor for this case? And similarly, how do
I spec any current limiting resistors required?

Let' start with the LED current limiting resistors. These go between the 74HC595 outputs and the columns, because there is only one LED on per column at a time. Unfortunately, the 74HC595 has a maximum Vcc current limit of 70mA. So you should choose the current limiting resistors for 9mA per LED, not the 20mA you are aiming for. If you want more current than that, the simplest solution is to reverse the matrix (i.e. cathodes to column lines) and use TPIC6B595 shift registers to drive the columns instead of 74HC595. You will then need to switch the rows using high-side switches instead of low-side switches.

For the transistors, the important thing is to select one with good current gain and low saturation voltage at the current you will be using. Darlingtons are best avoided because of their high saturation voltage. If you want to switch as much as 800mA, then it would be better to use mosfets rather than BJTs.

Thank you both for your help.

It had bugged me that on paper the 74hc595 wasn't really up to the task, yet so many people online seem to use them for just this purpose?

I agree I would be better off flipping to 32 cathode columns and then scanning the rows using 8 high side switches, so 4 daisy chained TPIC6B595 would be best for that.

For the switching of the 8 rows, I am unfamiliar with mosfets and would ideally like to stick to BJTs if possible. Would something like the BC639 be unsuitable then due to the current gain?

Thanks again

BC639 is NPN, and if you do flip the matrix then you will need PNP transistors to do high-side switching. BC638 (the PNP complement to BC639) is about as good as a transistor you will find for this job, but it is still marginal if you drive it with 74HC595s, because the 25mA base drive you can safely get from them (with only one output active at a time) is lower than you really want for switching 500mA. One possibility is to drive them with TPIC6B595s instead, then you can give them 50mA base drive. However, mosfets are a better solution. You can pick up logic-level P-channel 2SJ438 mosfets inexpensively on eBay.

You might want to consider using a 74HC138 demux chip to drive the rows instead of the 74HC595, because it requires no shifting and it avoids the risk of turning on more than one row at a time.

Thank you very much - lots of useful stuff for me to think on!

One final question, is it worth considering something like a maxim 72xx? 4 daisy chained together will allow for the 8x32 display, and with RSet limiting led current to 20mA, the total current would be 160mA max per maxim when a whole row is lit. Add 10mA for the maxim it's self is 170mA. Times 4 is 680mA. Add 40mA for the arduino and it's 720mA. A simple 5V 1A supply would easily cope.

Yes, four MAX7219 or 7221 would do the job more simply.