Explanation of the whole 300 mA thing

Firstly, I'd like to thank all the people who've help me out so far that contributed to the "300 mA" thread.

I'm doing an embedded systems project for college, I'm a 3rd year doing Electronic Engineering. It's a Connect4 game consisting of 42 LEDs (6 rows, 7 columns). Each LED can be either Red, Green or Off.

At the end of this post, I have a link to a PDF of the current schematic, but please read my description before opening it.

I have two 8-Bit shift registers to decide which column is currently being lit. When flashing a column, I have to flash the reds, then flash the greens, because if I flash a column with both red and green at the same time then there'll be a path from 5 V to 0 V through the LED's and an entire row will light up -- this is why I've got two 8-Bit shift registers as opposed to one; the first one flashes the reds while the second one flashes greens.

You might think my shift register setup is a bit funky as regards the RC circuits but allow me to explain. The purpose of the RC circuit which feeds into the master reset of the shift registers is simply to ensure that the chip starts up will all zeros, and it will have a very fast charging time. The RC circuit that feeds into the OR gate will have a very long charging time though, about 50 ms maybe. The reason for this is as follows:

1: I apply power to the circuit, there's initially a 1 on the input to the first shift register 2: After 20 ms, the PIC will be operational, and it will clock the 1 onto the shift register 3: About 30 ms later, the RC will have charged and be dragged down to 0 V 4: The microcontroller waits about 20 ms and then begins to just clock the 1 along in an eternal loop through both shift registers

What's the purpose of all this you might say? It's just to save me needing to take another pin from the microcontroller for the shift register input :-D I've twelve pins in all to play with in, and I have them all used up.

Anyway, my current boggle is which chip to use for the big cyan coloured square that says "Driver" in my diagram. Basically, I want to put 300 mA through each LED (with a duty cycle of one sixteenth). I don't mean to sound utterly clueless, but I really haven't picked up the knack yet for reading datasheets. A few of you kindly suggested chips to me, but when I went to read the datasheets for the chips I didn't really have a clue of whether I'd found the chip I wanted or not. Up until Thursday I didn't know what "source and sink" meant, and I was writing it as "source and sync" :-O But of course, I'm willing to learn.

My first problem to tackle though is which chip to use for the big cyan square :D

Here's the diagram:

formatting link

Thanks for your time!

--
Tomás Ó hÉilidhe
Reply to
Tomás Ó hÉilidhe
Loading thread data ...

See my earlier post, the original PNP/NPN Trx is fine, just add a Rbe.

No you have a full SCH, I see you use NPN Darlington on pullup - that will have a higher drop than NPN pulldown - better would be PNP. To disable drive until you are ready, use an OE shifter. For this design, I'd suggest HEF4094, as that can drive into the darlington base.

You only want ONE darlington on at a time, and you also want a small time when all darlingtons are off, to allow the new Row Driver info to settle. So your Shift register D.CLK.OE detail 'needs work'

To use pins more efficently, I'd suggest change the priority encoder, to a shift register read of the buttons. CLK can be shared, and Button PL can be OE on the Column drivers. (etc)

-jg

Reply to
Jim Granville

Personally, I don't think you need two shift registers at all. To drive the LED array, you need to drive one side with high/low voltages and tristate to the other side (high, low voltage or high impedance). You are using the shift registers and the darlingtons to apply the high/low/high impedance to the columns. The Cyan box is applying high or low voltages to the rows.

This approach misses out on the ability of the MCU to drive the output pins to the three states. As a result you will be using an extra shift register and a lot more drivers.

If you use a single '164 shift register to drive bipolar transistor pairs in a standard push pull configuration on each output, this will drive the columns of the array. There is a part available from Digikey that should be perfect for this... HBDM60V600W, very small, very cheap and good for 500 mA of continuous current. The row drivers can use the same transistor parts in a slightly different configuration. It is a push pull circuit, but the emitters are tied together instead of the collectors. This puts both transistors in an emitter follower configuration which will allow the output to float when the input floats. So the MCU can directly control the rows as either High, Low or Open which is what you are doing with the double shift registers and the darlingtons.

Your MCU should shift all 8 bits into the shift register to drive all columns at the same time. All of the row outputs should be high impedance. The MCU writes a one to one of the row outputs and enables the output drive on that bit for one color. This will allow just that one row to be controlled by the shift register. Then that output is disabled and the process repeated writing a zero to the row driver for the other color. This is repeated for each row.

Is there something you don't like about this arrangement?

You are using three MCU outputs and a '148 chip to read the switches. But you can multiplex the switches with the same circuit as the LEDs. Just connect each switch to one of the shift register outputs through a resistor to limit the current. Tie the other side of all of the switches together and bring to an input pin on the MCU with a light pullup resistor. The MCU shifts in a single zero with the other bits one and moves it through the register while reading the input pin. When a zero is read on the input, you have found a pressed switch. This frees two pins, one of which you can use to drive the data pin on the shift register.

Source means to drive current to the output from Vcc (Vdd) and sink means to accept current from the output to ground (Vss).

I say, don't use a chip, use transistors.

I still say you should use a push pull bipolar transistor pair for all of the drivers. This will use 15 transistor packages like the 16 darlington parts you are using and you can eliminate the Cyan box and one of the shift registers. BTW, darlington parts have one disadvantage when driving high currents... they are never saturated and so drop nearly a volt, dissipating much more power than a single transistor. They are normally used when you need a lot of current amplification which you don't need in this case.

Regardless of which approach you use, you need to be aware that this multiplexing scheme has a sneak path for the current in the LEDs. If a row (or column) is disabled, all of the LEDs in that row are connected between the columns. If any column is high and another low the current can flow through two LEDs in series to complete the circuit. With a 5 volt drive this may be enough to turn on two series connected LEDs. If you use a lower voltage for all of the Vdd connections to the drivers, this will not happen. You might be able to use a diode drop or two, but the voltage will vary a bit with the current. So you might want to use a voltage regulator. I'm not sure this will be a serious problem since the voltage across the current limiting resistors will be much lower than when driving a single LED, but it may be enough to be visible as ghosting.

Reply to
rickman

That's correct from a topology viewpoint, but short on device specs. The Column driver have to cope with ALL rows on at a time, so if the ROW driver is 300mA peak, the column driver needs to be 7x that, or 2.1A - and to avoid brigtness modulation effects (crosstalk), it should be a comfortable 2.1A, with low slope (resistance) over the 7 possible current steps. max Average curent per column driver is 131mA, but the Max peak is 2.1A That current pushs smaller packages, so you are into devices like DPAK, MJD127 etc.

-jg

Reply to
Jim Granville

Good point about the driver current, but I think you have the topology (at least as I am describing it) wrong. In my approach, the row drivers are the ones that enable a single row at a time. Of course, it is arbitrary which are called the "row" and which are the "column". But in my approach it is important to distinguish between the drivers that are controlled by the shift register and which are controlled directly by the MCU. I use the MCU outputs to directly control the high current drivers for the rows with only one of the drivers enabled at a time. The columns use low current drivers (the HBDM60V600W mentioned earlier) and they are all active all the time.

Zetex makes a part, ZDT6753T, which is in a very small package with a max current rating of 2 Amps for both the NPN and PNP transitors. Trimming back the current to match the driver will reduce the average current to just under 18 mA vs. the OPs goal of just under 19 mA. These parts are only 7 mm square and are available from Mouser in single quantities.

As to the output impedance of the driver, if you consider the emitter follower driver arrangement, which is what I am suggesting for the high current drivers, you will see that this is a *very* low impedance configuration since the load provides feedback to the input.

I was wrong about the ghosting problem. I did not consider the voltage drop across the current limiting resistor which will prevent any sneak paths from passing current when the LEDs are being driven. The ghosting would only be a problem when none of the high current drivers are enabled and there are low current drivers in different states. Since this will only happen with a very low duty cycle and at a much reduced current, it will never cause an LED to light visibly even with 5 volt drive.

Reply to
rickman

Not sure if the OP is into small SMD, or if this is a vero-board student project ?

I did not notice any feedback, but a Logic+emitter follower has a number of impedance sources. The Vbe slope, gives 600-700mV @ 300mA and 1.0-1.2V at 2.1A, so that's a change in drive-drop of ~400mV from that alone. Then the base current also matters - 2.1A at Hfe of 100 is 21mA, which is quite high for HCMOS, Even at 210Hfe, (rarer, but doable) it is 10mA

Even a high drive SN74LV595 specs 16mA @ .55V max Nch, and 0.8V Pch

- that drop is current linear, so adds to the modulation effects.

Then the LED drop at 300mA needs to be included (esp non-red), so the whole thing looks tight at 5V, if using ths simple emitter-followers in both paths.

That starts to dictate N fet and Pfet column drivers. vanilla 100mOhm fets are 210mV at 2.1A, with no base-drive factors.

50mOhm fets are ~100mV

-jg

Reply to
Jim Granville

The feedback is due to the fact that the load is in the input voltage loop as well as the output. If the load voltage increases, the voltage across the B-E decreases lowering the current to the load. A lower voltage on the load likewise increases the B-E current and increases the load current. A common emitter arrangement has no such feedback and changes in the load will affect the output voltage much more significantly.

I don't see this data in the sheet for the ZDT6753T. Regardless, the current variation from the changes you describe are not large. There is significant variation between LEDs and this should be within that typical variation in brightness.

Yes, you are right, the ZDT6753T may not be the best choice for this circuit dut to its low hfe. The ZDT6790T or a similar part should work much better with an hfe of 150 min at 2 amps requiring only 13.3 mA base current.

I'm not sure why you are discussing this part since it is not in the circuit. The high current drivers are controlled directly from the MCU outputs. Many MCUs can directly drive 20 mA LEDs. I don't know the specs on the OP's MCU, but 13 mA should be doable without excessive voltage drop.

I don't think you understand the circuit I am describing (I may have mistyped getting common collector/emitter follower confused with common emitter). The emitter follower push-pull circuit is only used in the row drivers. The column drivers are standard common emitter push-pull drivers. The load resistor should be duplicated from each common emitter collector output to the load to help minimize shoot through, rather than tying the collectors together with a single resistor to the load.

This is not so much an issue of FET vs bipolar as common collector vs. common emitter. Common emitter allows the device to be in saturation with a lower voltage drop across the transistor output. But that circuit requires more control circuitry. The point of the emitter follower stage is that it duplicates a high impedance on the MCU control pin to the driver output. This is not doable with a common emitter stage without two control lines per driver. This is also not doable with FETs in a source follower configuration since the threshold voltage is so much higher for a FET than for a bipolar transistor.

If you use the correct voltage levels for the drivers, you will see that there is adequate drive from a 5 volt power rail.

Reply to
rickman

You would need to draw this, as I cannot picture a circuit from that description.

LEDs are quite good within a batch. I've measured under 10mV of variation, on a sample of 100. There IS, of course, variation between Red / Green, but the issue is trying to minimise crosstalk or brightness modulation, caused by common mode resistance.

See my other notes, the HC165 is a poor choice, as it lacks a Latch, and OE control. The LV595 is the highest drive, 5V latched shift register I could find quickly.

The high current drivers are controlled directly from the

with a high drive LV595, and your numbers, that's 675mV, which is significant in the voltage budget. It also varies from 96mV to 675mV as the load current (number of LEDs ON) changes. To me, that is intolerable to have in the voltage budget - so a circuit change is needed.

A drawing would help - a picture is worth 100 words :)

The voltage budget is getting tight. Few Display LEDs specs to 300mA, but slope of 500mv/50mA is not uncommon, for Green. Most matrix displays expect to be driven at lower than 16:1 duty cycle.

The dominant resistive voltage drop, should be the current limiting resistor, not any drivers, and especially not any column drivers.

Depends on the LED. The specs I have for 5x7 matrix displays show none rated to 300mA, and suggest ~3V drop at 100mA drive (green). That can barely tolerate one follower, so it does need a low saturation column driver. If we lower to 100mA, for the sheet I have, and allow

0.8V for emitter follower + base effects, that leaves 1.2V for column driver, and limiting resistor. Not enough room for a second follower, so it needs a open-collector saturating driver. At 5V targets, FETs are better than bipolars. [also not nearly enough voltage budget for the OPs original Emitter follower/darlington follower/LED/resistor chain ]

Std 5mm leds got nowhere near 300mA ratings (even peak) but I found a 'traffic light' green led, specs 3.8V max Vf, at 350mA. (typ 3.3V)

-jg

-jg

Reply to
Jim Granville

Look up any emitter follower diagram. I shouldn't need to draw this.

You are talking about the I-V curve being similar. But you are trying to balance brightness. My understanding is that there can be significant variation in brightness between units at a given current. I have never tried to measure this, but this is what I have read. Even so, doesn't the I-V curve vary between lots?

I still don't know why are you talking about output drivers on MSI chips. None of the LEDs are being driven by MSI chips! The MCU outputs drive the high current, tristate row drivers. The low current drivers are common emitter, so their output voltage do not depend on what is driving them.

I think we are losing traction here. I don't know which numbers you are using or how you are using them. On top of that I have no idea why you are using the LV595 instead of the parts I have described.

I have never seen a diode that was resistive in the forward direction. I think you will find the forward voltage drop to be logarithmic. Yes, the dominant resistive element is the current limiting resistor, that is why it controls the current.

I am confused. Are you saying that using an row emitter follower with an open collector column driver will work? That is what I am describing!

The problem with the FET is that you need two control lines per driver in order to get a tristate driver output. How do you connect this to the MCU?

You need to ask the OP what is being used in this circuit.

Reply to
rickman

Download a kingbright data sheet, and you will see at low currents the log model is OK, at higher currents, the resistive element dominates.

Summary for the OP: You will need to do a full voltage budget on this, and that means getting the dats sheets on each device, and checking the voltage at the driven current. Include the base-current effects in your design.

When well designed, the series Resistor should dominate the other resistive elements, in setting the LED current. That means you want as much voltage across that R as possible, and as little drop on the common-rail drivers (Column in your drawing).

An 'A' student will find (or try and derive 'best guess' for) Max and Min values, and also give the corner cases. Spice is your friend, but spice models for LEDs are not easy to find.

The Original SCH has problems in the HC164 drive, and I'd suggest a LV595, or HEF4094, depending on the final load. The original darlingtons will have insufficent voltage headroom, so saturating open collector is called for. Either Bipolar, or MOSFET. example Mosfet is FDS8958A, and that can drive straight from a HEF4094, for example. A series power switch FET, that is delayed until all values are loaded is not a bad idea, and also a safety-monostable, that removes drive if the uC fails to update can avoid frying leds. A frozen scan will kill std LEDs, and if you turn on both N and P fets at the same time, that will crow-bar the supply. A separate LED regulator, from the uC one, is a good idea, at the

2.1A peaks your numbers indicate. If you make that adjustable, you buy some tolerance in voltage margin, and can give the user a brightness control.

-jg

Reply to
Jim Granville

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.