For driving loads I'm using the ULN2003 ICs at the moment, and the L293D which pulls up and down and sinks ~500mA per channel. You can always gang up the outputs for more power - although it's obviously safer on the ULN2003.
Ever considered FETs? I used VND5N07 on my car ECU, and with a 3.3v output you can get around 2A out of each one, and if you put the output into open drain and pull up to 5v, you can get near 5 amps. I think there are some that work a lot better at 3.3v as well (I'd be interested if anyone knows of any).
Examples in SOT-23 package:
Si2302CDS, Si2312CDS, PMV16UN, DMG3414U, DMN2075U.
These can be driven by 3V from a GPIO (the ON resistance is specified at 2.5V gate voltage). Add a 1k resistor in series with the gate if you want to avoid the current spikes in the GPIO caused by gate capacitance.
Any suggestions for through-hole parts?
I kind of prefer through-hole parts for transistors, because I expect to blow them, and I find it a lot easier to solder and replace through-hole parts. I think this is the case with a lot of people using Espruinos too, and perf-board is easy to get more of, while if you munge the prototype area on the Espruino, that's $40 for another one. Maybe I expect transistor failure without justification, because of my experience with pinball repair - my record with ULN2803's in my pinball machines is ah... lets just say I'm glad I put in a socket.
I am afraid that trough hole parts are a thing of the past. they are only manufactured to be used in old designs, these days all components are surface mount. so it is really hard to find any MOSFETs in through hole package that can be controlled by 3V. That does not keep some companies from advertising for example TO-220 MOSFETs as suitable for 3.3V GPIO... out of ignorance or just to make a buck they point to the gate threshold voltage which is a pretty misleading figure. you need to look at the Rds(on) specification. if the device is only rated at 4.5V and 10V you probably only can use it at very low currents if at all, with 3V gate voltage.
It is quite easy to solder a SOT-23 device onto a piece of circuit board and add solid wires to make it possible to plug into a breadboard, if necessary. these days, SOT-23 is considered a quite old package type, and quite large compared to modern packages. for really high power, consider Power-SO8 type packages that have a large pad that is connected to the Drain. the large pad conducts heat into the circuit board. just don't forget to select a part that has ON-resistance specified at 2.5V. or use a MOSFET gate driver and power it from 5V or higher, then the sky is the limit when it comes to power handling ability.
If 40V voltage rating is OK I would give ST "Omnifet" mosfet VNP49N04 a try.
Besides being in TO220 through-the-hole case (which makes heatsinking a lot much easier) it is pretty well protected against abuse, difficult to destroy unless you roast with continuous overvoltage or reverse high current. Even without a heatsink it would be OK for about 7 Amps. The 3.3V drive should be enough to about 10A loads above that 5V would be better. One thing to watch out for is that unlike normal fets it does require some drive current for the protection functions, so you need to allow for 0.5 mA current. I.e. if you use a gate series resistance 50 to 100 ohms might be a good value. I would not recommend using open-drain output + pull-up resistor with these.
Available from e.g. Farnell.
I decided to bite the bullet and get SMT parts. The specs on the VNP49N04 didn't really inspire confidence in their performance at 3.3v gate voltage.
I got some DMN2075U's and some Si2302CDS's (dirt cheap from china). I just got the DMN2075U's, and my god those things are tiny. It boggles my mind that these mosfets smaller than a grain of rice are rated at 4.2A continuous current.
I'm going to use these for my LED drivers (max current 1.1A). I'll thermal-epoxy them to the case (a nice thick hunk of metal) for cooling.
Now - any recommendations for P-Channel mosfets? (presumably we're talking more surface mount stuff?)
Is there anything like the inverse of a ULN2803 (ie, to pull up instead of down)?
Pinball machines use the ULN2803's to drive the columns of the switch matrix. The columns are nominally pulled up to 12v, and the MCU drives a shift register that drives a ULN2803 to pulse columns low while monitoring the rows. How the hell do they blow like that? Generally because +20 or +50v gets briefly shorted to a switch wire. This is often non-trivial to track down - tales abound of people spending days searching for the intermittent short. Personally, I had one case where a metal ramp was electrified (at +50v - guess how I discovered that?) because the orientation tab had broken off a solonoid, allowing the terminal to contact the mounting bracket. But it only blew switches when you missed a shot to that ramp, causing the ball to roll back down and graze the side of a standup target switch, connecting the switch to the ramp and blowing the column driver...
I just came across this thread: http://forum.micasaverde.com/index.php/topic,18103.45.html which mentions the FQP30N06L MOSFETS (the "L" at the end is important, since it denotes the "logic level" compatible version.
Datasheet is here: http://www.fairchildsemi.com/ds/FQ/FQP30N06L.pdf
They are about $0.95 in small quantities, but get cheaper in volume.
The other one mentioned in that thread is the IRLZ44N (http://www.irf.com/product-info/datasheets/data/irlz44n.pdf) which is also a "logic-level gate drive" MOSFET). Be sure not to confuse it with the IRFZ44N which needs more gate voltage to turn on.
Disclaimer: I have not used these, but looking at the datasheet they seem well suited for driving from 3.3V logic. And the TO220 should be easier to mount and cool than the SMDs.
to find p-channel MOSFETs that operate with 2.5V on the gate you could look at this page
http://www.mouser.com/catalog/catalogusd/646/674.pdf and check out the part numbers that are listed with Rdson at 2.5V.
if you want to connect the p-ch MOSFET to +12V you will of course need a part that has high enough gate voltage rating. so you may choose one that has Rdson rated only at 10V and 4.5V, and 20V gate voltage max rating. some of the parts that need very low gate voltage also have very low maximum gate-source voltage rating, for example 8V maximum.
there are different ways you can drive a p-ch MOSFET connected to +12V from a logic signal with 3V amplitude. you could use a npn transistor with base connected thru a 10k resistor to 3V and the emitter to GPIO pin. the collector connects to the gate of the p-ch MOSFET. the source of the p-ch connects to +12V and you need a resistor (10k) between gate and source, to keep the p-ch off when he npn is off.
What are your go-to NPN and PNP transistors for controlling loads from a microcontroller? I figure it's probably better for me to use the same "common parts" that others are using, so I have the parts to follow other people's designs, and others can follow mine without buying obscure parts or adapting the design to more common ones.
I want to handle loads of 300ma to a couple of amps for the NPN (ie, most will be high enough that a ULN2[8/0]03 isn't going to be happy running it continuously), running at 50-100% duty cycle (with PWM, in most cases).
Are there any IC's like the ULN2003/etc, but with higher current specs (and presumably fewer channels per package, or a different package) that you have experience with and can recommend?
For PNP transistors - well, what are your go-to transistors (not just interested in higher current)?
What about PNP arrays like the ULN2003? They are obviously in production, and I can find them on google - but what are the ones people are actually using with arduino/etc?