I'm looking for a broadly applicable solution, one that can be adapted to a variety of projects.

I'm currently working on several projects that each require controlling devices ranging from 800mA to 2A from an Arduino Uno. One controls stepper motors, one controls 12vdc solenoid actuators, and one controls 12vdc pneumatic valves.

For example:

The Arduino monitors a button, and each time the button is pressed it triggers the solenoid actuator. Because the Arduino is unable to source the current required by the solenoid, a seperate power supply is required with the Arduino controlling a switch (relay, transistor, etc.) that allows the higher current to pass. For the stepper motor, the layout is more complex as there would need to be four pins controlling four separate switches (to maintain interoperability of the circuit). The relay controls an air valve and requires 12vdc as well.

I'm trying to figure out how to use a single circuit that can be used in each of these applications (and any future projects) that involve controlling higher current devices than the Arduino pins can handle.

Prototyping speed, standardized components, and low cost are the driving factors. Switching speed, useful life, and noise are also important.

Is there a breakout board, circuit, or component that can be connected to an Arduino pin and used to control a high current device? Ideally with a software controlled potentiometer so that the resistance for different projects could be set in the sketch itself.

  • 1
    So what would this board be controlling? The resistance or voltage? Or the device itself?
    – hichris123
    Feb 23 '14 at 20:45
  • The board would be controlling the device itself. I've added details to the question.
    – jlbnjmn
    Feb 23 '14 at 20:47
  • Define "high current".
    – jippie
    Feb 23 '14 at 21:02

To drive such high currents, you may have to cascade several transistors (you can also use a Darlington transistor). There are arrays of Darlingtons mounted in a chip (e.g. the ULN2803A has 8 darlington transistors, but is limited to 500mA).

You probably will have to deal with higher power transistors; as an example I have found STMicroelectronics TIP110 which can support switching a 2A current (4A peak), but it would probably need a heatsink to dissipate heat.

Note that I wonder if your steppers really need 2A current (are they that big?). For steppers, you can generally find IC that can drive them easily, e.g. the L293D but this one can drive "only" 600mA).

As a conclusion, I am afraid you will not find a "one size fits all" solution, as all your devices are different and should be driven by the appropriate circuit.


Since oversizing is not an issue in your prototyping case, then you could go with a MOSFET instead of usual bipolar transistors. A MOSFET will be able to drive higher currents and voltages than standard transistors.

The downside is you can use it as a switch only (like e.g. a relay) and thus can't really drive the exact power for your devices. I guess that does not matter for a Stepper motor, or a Solenoid, but that may be important for driving lights for instance.

However, the good point is that you can still use PWM for that as the MOSFET switching speed is good enough for such purposes.

Regarding price, there are many diferent kinds of MOSFET out there, but I guess you can find one that fits yours needs (12V, 2A) for less than $1.

I advise you to take a look at this great article about this topic.

  • The 2A is for the solenoids. I understand that one size fits all is a challenge and not ideal for production. In this case the purpose is faster prototyping, where over building is acceptable.
    – jlbnjmn
    Feb 23 '14 at 21:45
  • 1
    Note that even with a TIP110, you will probably have to add a smaller transistor in between it and the Arduino output pin, as a TIP110 can draw 50mA on its base, which is much too high for an Arduino pin.
    – jfpoilpret
    Feb 24 '14 at 5:58
  • I think TIP 120 is ideal for this, according to datasheet, it is capable of handling currents up to 5A & 6V - fairchildsemi.com/datasheets/TI/TIP120.pdf Mar 16 '15 at 2:20

There are lots of ways to switch higher loads, and jfpoilpret has described some good options. I'll summarise a couple of relay-based solutions, which are mainly appropriate for comparatively slow switching speeds (i.e. not usually suitable for PWM).

Solid State Relays
Solid State Relays (SSRs) are effectively semiconductor-based switches. They come in a wide variety of configurations, depending on your requirements, but the key factor is that they have no moving parts. This means they can be very reliable in the long run if used properly.

Internally, they are usually comprised of MOSFETs and thyristors or similar. This can let them achieve fairly high switching speeds in theory. In practice though, the more power it's designed for, the harder it is to switch quickly. That means high speed + high power can get quite expensive.

A critical factor to bear in mind is that you'll usually need a different type of SSR if you intended to switch AC instead of DC. It's also good to note that some will come with a built-in opto-isolator or similar to keep your power supplies separate.

Electro Mechanical Relays
This is the more 'traditional' approach. An Electro Mechanical Relay (EMR) is a fairly simple component, containing a mechanical switch, controlled by a electromagnetic coil. If the switch is normally open, the coil pulls it closed when a control current is applied. In contrast, a normally-closed switch would be pulled open when a control current is applied.

There are a number of advantages of EMRs over things like SSRs. The most obvious is cost -- their simplicity makes them quite cheap, and the cost doesn't rise so sharply for higher-power versions. Additionally, the control and load are inherently isolated, and they don't care whether you're switching AC or DC.

There are several disadvantages though. The mechanical aspect means that EMRs are usually much slower than non-mechanical switching solutions, and can suffer from contact bounce. Additionally, they can physically wear out, and they can be affected by things like shocks, vibrations, and (potentially) other magnetic fields.

When designing a circuit to use an EMR, it's essential to be aware of back-EMF (electromotive force). When a control current is applied, the coil acts as an inductor, storing charge electromagnetically. When the control current is stopped, the stored charge can surge back through the control circuit, creating a large negative voltage spike (potentially much larger than what was originally applied).

This spike can unfortunately damage/destroy any attached components or microcontroller pins. It is typically prevented/mitigated by putting a diode in reverse across the relay's control contacts. In this context, it's sometimes known as a flyback diode, and it allows the EMF to dissipate safely.

  • Would you say that a MOSFET used as described in the article linked by jfpoilpret would be a suitable alternative to the electromechanical relay for these applications?
    – jlbnjmn
    Feb 26 '14 at 1:36
  • Yes, for the applications you've described, I expect a MOSFET would be sufficient. Just remember that they're sensitive to static discharge though, so take suitable precautions when handling them. Feb 26 '14 at 1:52

As jfpoilpret already said, a power MOSFET is great for turning ON and OFF the 12 VDC power to devices that pull up to 44 A. There are dozens of such power MOSFETs for under $1 each. More expensive MOSFETs are available that can handle much higher current and voltage.

In principle it is possible to drive a stepper motor with a microcontroller and a handful of transistors and a few other little parts. However, many people prefer to use a "stepper driver chip", so it is impossible for a software bug to accidentally turn on transistors in such a way as to short the power supply to ground (typically destroying at least 2 transistors). Many recent stepper driver chips also handle microstepping, current limiting, thermal overload protection, and other nice features.

All the stepper driver chips that I've ever heard of, and a few off-the-shelf breakout boards using those chips, are listed at http://reprap.org/wiki/stepper_motor_driver .

In particular, many of the RepRap 3D printers I've seen connect an Arduino to four Pololu stepper drivers (under $15 each) to drive five stepper motors.


I made an Arduino( Arduino Nano) circuit to power a 12V Peltier(which is also a high power source.) using a MTP3055V MOSFET 60V 12A transistor. And the circuit is operating very well.

Not the answer you're looking for? Browse other questions tagged or ask your own question.