How to control 130-size DC motors with an Arduino (seemingly 20A DC motors)

arduinodc motormotortransistors

I'm a little confused on specifications and limitations here…

I have 3 (130-size, I believe) DC motors I'm attempting to control with an Arduino. They are running off of a 7.2V NiMH battery pack, regulated by some simple switches.

Now, I know that the Arduino can't independently power motors. So, my next thought is using a transistor.

However, according to the guide I'm following, each motor (two motors?) will pull (continuously) 15A. I'm looking at the specifications of things like the TIP-120 and even the Arduino motor shield, but they only seem to be able to control 0.x mA – 1A per channel.

This seems like a lot of amps/a typo, but the guide continuously references these high currents (using 10A rated switches) – and when I try to research gates rated for such high currents, I get very expensive, very niche components.

Am I over-complicating or misunderstanding things? Does the voltage upgrade simply make things that much harder to work with?

Ultimately, my goal is to have the Arduino read all of the switches (which I think I can handle), do logic, and control output to the motors – that part I'm a little unsure of.

Best Answer

The motors only go in one direction so you don't need an H bridge. Just use a logic-level power MOSFET such as IRL3103, which can be driven directly from the Arduino. To use N channel FETs you will need to change the circuit so that the motor common goes to battery positive rather than negative, but this shouldn't be hard.

You should also put a diode across the motor to prevent voltage spikes from damaging the FET, and a Gate resistor to avoid high frequency ringing. The circuit might go something like this:-


simulate this circuit – Schematic created using CircuitLab