A simple way to get more output current?

Hi,
I am new to this so please excuse my lack of knowledge. I am trying to find a simple, general purpose way of increasing the arduino's output current without inverting the signal/voltage.
I am looking to get about 500ma so that I can drive things directly without a relay.

So far I have looked at:

A simple NPN transistor - this works but assuming you connect the load to the collector (which appears to be the normal way) you are now switching the negative side of the load instead of the positive.

A simple PNP transistor - this does switch the positive but inverts the signal.

Line drivers eg UNL2003, UNL2803 - from what I can tell from the data sheets these both invert the signal (the symbol looks like an inverting buffer)

I looked into using a NPN transistor with the load on the emitter but this appears to be not so straightforward.

I realise it can be easily done with 2 transistors and a few resistors but that is quite time consuming for general experimenting/prototyping. I expect using one of the above line drivers and looping the output back to another input would probably work but there must be a better way.
I guess another way of explaining what I am looking for is something to provide the function of a relay module but with a faster response time. There are plenty of relay modules but I can't find any similar modules that don't use relays (ie use transistors or ICs)
They probably exist but I don't know the correct name to find them.

Thanks

JD

What kind of load are you switching? A common 2N2222 NPN, (as a low side switch), can handle 800 mA and which side you switch (high or low) doesn't matter in most cases, you're just interrupting current, the load don't care which side. MOSFETs are much better as they don't require the higher control current (base current) of bipolar transistors and generally run cooler.

Here's one I use often:
https://www.fairchildsemi.com/datasheets/FQ/FQP30N06L.pdf

So invert it in your code. That's cheaper than a second transistor. Create simple functions like lightOn() and lightOff() and then put the required digitalWrite() polarity inside there. That way the rest of your code doesn't need to remember if HIGH or LOW turns a particular output on or off.

Solid-state relays exist. Look for "SSR".

Hi outsider,
Thank you for your reply.
The kind of load will vary, maybe a lamp, maybe a remote relay, maybe a buzzer. I probably should have explained better but I am trying to control things which will be some distance from the arduino (ie on the end of a cable) and coming from a auto electrician background it is frowned upon to have live cables when the devices are off, normally have one ground wire and lots of control wires which go live to turn on the devices. I am trying to stick with this (there is some good reasons why not to use ground switching).
That appears to make it hard to use a NPN transistor. Using a PNP looks like it will do the job but inverts the output making things unnecessarily confusing as I would like stick with "on" (or high) being "on" on the programming side. It also makes it easier to test the functions on a breadboard with leds before connecting to the devices without remembering off is on.
I figure there must be some driver IC's or modules, like the UNL2003, which don't invert the output? This would have the added bonus of not damaging the arduino if you make a mistake with the output as the module/driver may act as an isolator.

Thanks

JD

Well, here's some DC output SSRs, but check the prices for the through hole types >:(

http://www.digikey.com/product-search/en/relays/solid-state-relays/1048664?k=dc+ssr&k=&pkeyword=dc+ssr&pv41=341&FV=fff40010%2Cfff80058&mnonly=0&newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=25

Hi MorganS,
Thank you for your reply.
I agree that inverting the code would be an effective solution and if I was more experienced at programming this probably would be the way to go. As I a still very much learning as I go this seams like an unnecessary complication especially when trying to incorporate other peoples code.
SSR's are a possibility, I have used them in the past (not for arduino), they used to be quite expensive (compared to a couple of transistors) but they have come down in price quite a bit. I am not sure how quick they respond, for example trying to dim a bulb using PWM.
I am surprised there aren't lot of IC's/transistors to do this as you can get Darlington pairs in one transistor package so why not use of 2 transistors in one package to keep the output positive?

Cheers

JD

"Load drivers" will do what you want and they are relatively cheap but only come in surface mount pkgs, beyond MY soldering ability, looks like someone would make a breakout board but I haven't found one so far. :frowning:

http://www.digikey.com/product-search/en/integrated-circuits-ics/pmic-power-distribution-switches-load-drivers/2556406?k=load%20driver

For an automotive type environment (nominal 12V with +/-24V possible in fault conditions) The BTS716G chip is my go-to chip. It doesn't invert the output, has 4 outputs in a relatively small package, and it even has some limited feedback to let you know if the lamp has burned out.

It's surface-mount only, but not difficult to solder by hand. I've published a PCB online that breaks out all the pins to the standard breadboard spacing. I use this PCB in quite a few of my own projects. You can order 3 of them from OSH Park for only $3.20 with free shipping. OSH Park ~

Hi outsider / MorganS

They look to be exactly what I need, if only they came in through the hole variety.
If the BTS716G was available on a shield / module that would be awesome but I can't find one and I think it's beyond my ability to solder it.
The VNN3NV04PTR-E (first one on the "load drivers" results) may be a safer bet for me to try, it is still a SMD but fewer connections, 1 on 1 side, 2 on the other so I might just manager to solder this one.

Still very surprised there isn't an easier to use option.

Many thanks for your help

JD

I have a couple of L9110S based H-bridge modules.
They handle safely up to 800mA.
You'll have to consider a 1.5V of drop from their separate input voltage, and a ~0.35-0.55V output on 0 (low) input. With a diode on output line you get a 2V drop on high and true 0V on low

Search ebay or aliexpress for "L9110S H-bridge Dual DC Stepper-Motor-Driver".

The BTS716G is pretty easy to solder. There's lots of space between the legs. When you have a good PCB, like the ones that OSHPark makes, then it's actually difficult to get it wrong.

Since I learned to use SMD, I prefer to use that method instead of through-hole. All my designs now maximise the SMD components and only use through-hole where it's unavoidable, like some connectors. That little PCB I published actually has several years of experience incorporated into the design.

J_D_:
That appears to make it hard to use a NPN transistor. Using a PNP looks like it will do the job but inverts the output making things unnecessarily confusing as I would like stick with "on" (or high) being "on" on the programming side.

To drive a high-side switch you often are level shifting anyway (say changing from 5V logic to 12V), for
which an NPN is often used. To turn on the load you drive this output HIGH, turning on the NPN,
which in turn can turn on the higher voltage top-side switch (PNP or p-chanel). So no inversion.

However you can't afford to be confused by active-low signals, they are everywhere, you have to
deal with it. For instance most push-button input circuits are active-low....

Hi blimpyway,
Thank you for your reply. The H-bridge modules look like a good compromise with the advantage that they are prebuilt and won't test my soldering skills. I looked at the L9110S modules and also the L298N which maybe better as it has a larger voltage range. I'm thinking that if I use for example the output OA1 to the load, then the other side of the load to ground the voltage drop will be less than 1 volt? Plus it would give me 4 channels?

cheers

JD

Hi MorganS,

I have tried to solder SMD's in the past with limited success (replacing faulty components). The youtube videos make it look easy but I think there is quite an art to it. I really should make time and practice but for now whilst I'am still very much a beginner with arduino I am trying to manage without using them.

cheers

JD

SMT soldering: Use loads of flux, and hot air gun if possible. Just using rosin-cored solder isn't enough,
extra flux is needed - more flux, less solder is a good motto.

J_D_:
Hi blimpyway,
Thank you for your reply. The H-bridge modules look like a good compromise with the advantage that they are prebuilt and won't test my soldering skills. I looked at the L9110S modules and also the L298N which maybe better as it has a larger voltage range. I'm thinking that if I use for example the output OA1 to the load, then the other side of the load to ground the voltage drop will be less than 1 volt? Plus it would give me 4 channels?

Yes, both L9110S and L298N modules have four channels. The L298N is significantly bulkier, has more power range as you said, and one possibly important feature is that every pair of outputs that make a single bridge can be switched in high-impedance mode, through an extra "Enable" pin. That means the two outputs will neither provide current from positive voltage nor sink current to ground.
That could be useful when stopping or PWM controlling DC motors. If you stop the motor by switching off "Enable" pin the motor behaves as the circuit was interrupted, but when you switch its both terminals to + or ground, that produces a hard brake like when you short the terminals to each other.
L9110S can only switch a line to VCC or GND, can not make it "float" and that limits its use to hard-brake only behavior. For PWM controlled motors is usually more desirable to have on-float-on-float pulses than on-brake-on-brake ones, but for small motors that would work too.