Electronic – Choosing between a darlington array, H-bridge, and solid state relay

darlingtonh-bridgesolid-state-relayswitches

I'd like to use an arduino to switch four separate lamps independently, each of which requires 12VDC and 200mA. It seems to me that this could be done with an H-bridge, a darlington array, or solid state relays, and I'd like to know what are the comparative advantages of each.

  1. H-bridge, like the L293D.
    Datasheet: http://users.ece.utexas.edu/~valvano/Datasheets/L293d.pdf

Looks like I could independently set each of the 4 input channels and hook up the lamps to the 4 output channels. I'm concerned though, because I know that H-bridges are usually used for bidirectional current flow through a stepper motor. Is it okay to use for multiple unidirectional loads?

In fact the Wikipedia page says that enabling two channels at the same time will lead to shoot-through and damage. Maybe this is only the case for a simplistic implementation of an H-bridge.

  1. Darlington array, like the ULN2803A
    https://www.sparkfun.com/datasheets/IC/uln2803a.pdf

This one allows me to control 8 separate channels.

  1. Solid-state relay, like the ASSR-1611
    http://www.avagotech.com/products/optocouplers/industrial-plastic/other/solid-state-relay/assr-1611-001e

I would need a separate relay for each device.

My guess is that the SSR would mainly be useful for applications with much higher current or voltage that would burn out the other devices, or when you want to use optical coupling to avoid noise problems. And that the H-bridge would work okay for this application even though this is not really what it is designed to do. But I'm not sure even after having read through the data sheets.

Best Answer

H-bridge is not really appropriate for something like a lamp that doesn't care about current direction. Much more expensive and inefficient than necessary (two switching device drops rather than one).

The ULN2803 is perhaps appropriate - but is really only good for 50-100mA per output in a conservative design with all outputs driven on simultaneously. If the lamps are incandescent rather than LED there is also surge current to consider. See the datasheet.

enter image description here

SSRs provide isolation and can switch very high currents and voltages, but that may be unnecessarily expensive if you don't need the isolation. The isolation does help prevent noise problems from affecting your circuit and can also prevent some kinds of oopsies that fry your circuit.

Instead I would suggest simply using discrete MOSFETs. A simple N-channel MOSFET can switch many amperes and run cool, and is inexpensive. It can be driven directly from the Arduino if you buy a logic-level MOSFET that is specified with 3.3V Vgs(on)- most are not, so be careful on this point.