I need to control 6 of these DC motors from an Arduino. If I needed to control them entirely independently, the obvious choice would be 6 H-Bridges, but I have somewhat relaxed constraints, so I'm wondering if there's a better (more component efficient) way to do it. Here are my constraints:

  • I need to be able to have them run both forwards and backwards, BUT
  • I will always be controlling a subset of the motors, which will all be going in the same direction.
  • I only need to power 2 or 3 of them at one time.
  • Although the stall current listed is 1.6A, I don't expect to run them at more than about half that.
  • I don't need PWM control - full on or nothing is fine.

My initial thought was to use a single H-Bridge capable of sourcing enough current for 2 or 3 of the motors, connected to one relay or triac for each motor, which the Arduino can use to enable individual motors. I've never worked with triacs before, though, and have somewhat limited experience with circuit design in general, so I could use some advice.

  1. What's the best design for this? I don't have any experience with surface mount soldering, so something that can be built through-hole would be ideal. If it can fit on an Arduino shield, even better.
  2. Given a design from 1, how should I select the parts to use?
  • \$\begingroup\$ @Kortuk I'm curious why you removed that last part. Selection criteria are separate from specific recommendations. \$\endgroup\$ Jul 14, 2011 at 10:13
  • \$\begingroup\$ We try to avoid simple shopping advice. It would be better if people told you how to select a part then gave you parts to buy. Often they link parts in the process, but I wanted the focus to be on what parts should be used and how they should be selected. This means that the question also handles similar projects because selection reasons are normally global, a part for a specific part is inherently too localized. Hope that makes sense. \$\endgroup\$
    – Kortuk
    Jul 14, 2011 at 10:46
  • \$\begingroup\$ @Kortuk Fair enough, and I suspected it was something like that - I just wanted to check so that I don't do the same thing next time. \$\endgroup\$ Jul 14, 2011 at 12:10

2 Answers 2


Your initial thought is not bad: one H-bridge to determine the direction, and some kind of switch for each motor.
Forget triacs. They're only for AC, and besides will have a too high voltage drop at 6V power supply.
Relays would be the best thing, also because, thanks to the insulation between control and contacts, you can place them anywhere in a circuit. You'll just have to pay attention that this is not going to cost you more than a separate H-bridge for each motor.
MOSFETs are also often used to switch motors, but (especially power) MOSFETs have an internal diode which makes them unsuitable for bidirectional use, and besides, they're not symmetrical anyway.

So the relays seem to be the remaining option, apart from a series of H-bridges. Like I said you'll have to check if they're the most cost-effective solution.

  • \$\begingroup\$ Most relays also have a fairly high power drain on the control pin (for a microcontroller). I don't suppose you have any thoughts on which might be most suitable for this application? \$\endgroup\$ Jul 14, 2011 at 10:06
  • \$\begingroup\$ @Nick - You'll always need a transistor to drive the relay; relays which need only a few mA will also have limited switching capabilities. But have a look at the Tyco/Axicom P1 V23026, this is a compact relay requiring only a few tens of mA at 5V. \$\endgroup\$
    – stevenvh
    Jul 14, 2011 at 10:29
  • \$\begingroup\$ Thanks! I may be able to cram 3 x SN754410 onto an Arduino shield after all, but if not, those seem like a solid alternative. \$\endgroup\$ Jul 14, 2011 at 10:35

Always design for the stall current. You sure don't intent to stall the motorts, but it will happen at some point.

3 x 1.6 A ~= 5 A. If the direction switching is not too frequent I would go for a single relay (double throw, 10A contact rating) to determine the direction.

Each motor can be switched with a MOSFET or even a darlington transistor (A plain old TIP122 with a little cooling will do fine, but a good MOSFET can run this totally cool.). There is no common ground between the driving circuit and the motors, so use optocouplers. Take care to switch the transistors fully on and off, a digital optocoupler would help, but they are 5V so they can drive most MOSFETs directly.

Don't forget the freewheeling diodes, rated least 2A.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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