PIC18 transistor LED drivers

Happy Halloween!

Last year I built a collection of plywood pumpkins to stick in the yard on Halloween night. I installed superbright LED's in the eyes, nose, mouth, etc and was pretty pleased with the results. This year I want to animate the LED's.

I bought a DLP-245PL which uses a PIC18LF8720 to drive it's digital I/O. I need a simple transistor circuit to drive each LED. There's about 22 of them. Typical LED voltage is 2.1V to 3.4V, current ranges from 20mA to 30mA.

Last year I was driving the LED's from a simple 12V DC power supply. Their cathodes are connected together and to ground. The anodes connected to appropriate resistors. For the life of me, I can't remember the equations appropriate for switching transistors.

It seems like optoisolators are a bit of overkill. Things I'm worried about are the base resistor and transistor selection, and the possibility of sending 12V into the TTL outputs of the PIC. It would be nice to reuse the transistors I have on hand, which are: 2n2222a, tip34, 2n3906.

chuck

Reply to
Chuck
Loading thread data ...

x------[Rx]----|

Reply to
Spehro Pefhany

Hi, Chuck. I very much like Spehro's recommendations. But I tend to prefer a slightly different transistor topology than he recommended.

+12 | --- ~ LED1 \ / ~ --- | | micro |/c Q1 pin >-----| 2N2222 or |>e 2N3906 | \ / R1 \ | gnd

There are several reasons, but the main one is that since the emitter follows the base which is itself nailed to the micro output pin, the current through LED1 can be set precisely and independent of the +12V supply's variations. Here, R1 is simply [(Vcc - 0.6V)/I_led]. Let the BJT do the work of figuring out how to deal with changes in the +12V, though later tinkering choice or otherwise.

Since you are really into 'animating' you might also consider doing some muxing to reduce the total count of transistors, but using some PNPs, as well. You can get "steady", "blinking", "dimming", etc. out of all that.

Jon

Reply to
Jonathan Kirwan

This method will generally work fine and has the advantages Jon lists. Three possible issues.

1) The trasistor will get warm. This isn't a serious issue with the suggested parts and in this application. 2) It's possible for the transistor to oscillate at high frequency, depending on layout. 3) If the transistor fails or is inserted incorrectly, 12V gets back into the micro and destroys it. You can avoid this risk (and any possible oscillation) with a small series base resistor, yet retain the advantage of a constant current source.

Note that with Jon's circuit you can put a couple of LEDs in series without changing R1. You might be able to use more LEDs in series with my circuit but the resistor will have to be lower.

Best regards,

Best regards, Spehro Pefhany

--
"it's the network..."                          "The Journey is the reward"
speff@interlog.com             Info for manufacturers: http://www.trexon.com
 Click to see the full signature
Reply to
Spehro Pefhany

Yes, that's letting the transistor "do the work" of picking up the remaining voltage headroom. But that power (the voltage the LED doesn't need times the LED current) has to go somewhere. Since I tend to want my LED V+ supply to be whatever wall-wart I can find handy at the moment, I'd rather arrange it this way than have to go re-soldering new resistors.

Oh, hadn't thought about that. With PIC outputs being about 70-120 ohms or so drive-wise, the base side of Cbc and Cbe aren't quite as "nailed" as I might imagine and I can see the ability for some oscillation. But I think the CJC for the 2n3906 is 4pF and the CJE is 8pF, so it would take something in the many tens (to hundreds) of MHz, wouldn't it?

Or is that what you were thinking? I'd be interested to hear more on this.

But at the expense of reducing the frequency of oscillation you just talked about?

That's a nice additional point. As long as there is enough headroom, using the circuit I mentioned provides a consistent current regardless of the number of LEDs.

Jon

Reply to
Jonathan Kirwan

Got it! Thanks.

Jon

Reply to
Jonathan Kirwan

I know the exact equations are a little different here, but let me try to put this into grossly simplified dynamic considerations that ignore the precise quantities:

Looking at the 0V to 1.5V rising edge case, the inductance of long wires to the base (I've found figures like 10 nH/cm) would limit the rate of current change to (V2-v1)/L (V2 being the pin drive voltage and V1 at the base initially held to zero by the BJT capacitance.) This rising current is needed charge/discharge the base-emitter and base-collector capacitances, before the transistor can respond accurately. (For simplification, I'll just say that the transistor remains "OFF" until these capacitors are charged, rather than worry about the exact details.) At this point, the BJT goes into the normal region and operates, driving the collector rapidly down in voltage. This is coupled via newly recharged base-collector capacitor back to the base, which now drives downwards, shutting the BJT off again until the new (V/L) can again recharge the BJT capacitor pair. Etc. This will be a damped oscillation on this rising edge, an RLC thing, with the R being R1||R2 and the C being CJC+CJE?

Roughly speaking, is this about it? And if so, I'd expect a different behavior on the falling edge case. Also, one could add a diode in parallel to the emitter resistor so that the downward driven CJE of the BJT could discharge somewhat more rapidly, at first, through that diode rather than just through the emitter resistor? (Not that this would impact things that much and it would just add another diode capacitance across that resistor, with probably bad effect.)

Oh, well. Let me know if and how I'm off the beam, here.

Thanks, Jon

Reply to
Jonathan Kirwan

Not necessarily damped. Gory details:

formatting link

The bias is different when the output is low, so it's a bit harder for it to oscillate.

Here's a simulation I did using a 2N4401:

formatting link

With a lot more capacitance across the 180R it will oscillate continously, once started, even if the input goes low.

In practical terms this may be an okay configuration for the purpose intended if layout etc. is good enough, but with a lash-up, maybe not.

Best regards, Spehro Pefhany

--
"it's the network..."                          "The Journey is the reward"
speff@interlog.com             Info for manufacturers: http://www.trexon.com
 Click to see the full signature
Reply to
Spehro Pefhany

charge/discharge

the

First thing I notice without bothering to read further is that this doesn't use a collector resistor. This would eliminate the R of the RLC, since I believe that the equivalent is R1||R2 and with one of those zero, it's just LC, which doesn't damp.

In other words, I'm still thinking my very gross simplification may still hold here -- without having tried to read the "gory details" on the page (which I will do.)

Try adding a collector resistor and what's that 180pF cap doing there??? I don't wire up things *that* bad!!

Jon

Reply to
Jonathan Kirwan

With 100 ohms (drops 2.4V at 24mA) and 10pF get continuous oscillation.

(we're talking about the OP, not *you*, of course) ;-)

Anyway, it's a 180 ohm resistor (for 24mA nominal) and 8pF shunt capacitance. Not that out of line.

This kind of setup is insensitive to loads on the collector, but very fussy about the base and emitter, so it's not that badly suited for this application if the layout is reasonable. Personally I'd rather slap a 1K resistor in the base, which kills the ringing or oscillation

*and* protects the micro against faults in the driver.

formatting link

Reply to
Spehro Pefhany

Sounds good to me, sacrificing only a tiny bit of I(C) predictability for those benefits. I see your point!

Jon

Reply to
Jonathan Kirwan

snip

snip

Thanks Spehro,

Your circuit looks exactly like several others I've found on the web. But it inspires me to ask two more questions. How do I know what amount of base current will drive the transistor to saturation? Is this what Hfe is used for?

One of my problems in design is that all the LED collectors are tied to ground. In order to use your design, I'll have to unsolder all my wires and tie the anodes together instead. Is there a way to avoid all this rework?

Chuck

Reply to
Chuck

Yes, sorta. I know the hFE of those parts is fairly high (at 20-30mA Ic and at normal temperature, and a bit of extra drop won't fry the transistor), so to drive them well into saturation I use Ic/Ib = 20 (that's what I mean above by "forced beta" = forced hFE). You might pick 10 or 25 as well- it's a fairly conservative number, but often parts are actually spec'd at 10.

See, for example, the graph on page 3- top right for data

formatting link

If there's no common between the supplies, you can tie the + sides together (if there *is* already a common this step could damage a lot of stuff), then flip the above circuit, using a PNP transistor. You'll make the input "low" to turn the LED on:

+5, +12V (12V supply) 2K7 | ___ |< Microcontroller -|___|- -| 2N3906/2N4403 etc. high = off |\ | | .-. | | Rx | | '-' | | / V / LED - / | ----------------0V (12V supply)

(-7V relative to microcontroller ground)

Best regards, Spehro Pefhany

--
"it's the network..."                          "The Journey is the reward"
speff@interlog.com             Info for manufacturers: http://www.trexon.com
 Click to see the full signature
Reply to
Spehro Pefhany

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.