controll speed dc motor

I've got an 16 V, 15 A, 240 W DC motor that I want to controll using the Arduino Uno. I need to be able to adapt the speed. For this I've read that using a motor driver is the best option but I have no idea which one to use (I'm new to this). What is the best thing to use?
Thanks in advance!

You will need a motor driver that can handle the stall current of that motor, likely over 100 A. First, look up the stall current or post a link to the motor data sheet.

I've obtained the motor from this drill

How do you know that the motor is rated at 15 A, 240 W?

The battery consists of 4 inr18650e 1300mah lithium ions, so I’ve gathered that information from a datasheet for those battery’s. I was told that is what I’m supposed to do. Is that not the right way?

On the motor itself it says the following information, maybe that will help.

RS550 - 16V
DC 16V

Thanks for the help!

If all you want to control is the speed and not the direction of rotation then you don't need a motor driver. A simple logic-level MOSFET will do it. Even something like an IRL540 will probably work.


Ah okay, so this one should work? Thanks!

The RS-550 motor has a stall current of 85 A at 12V, or about 115 A at 16V.

Be sure to wear safety glasses and clothing to protect yourself from spattered molten metal, if you try to switch it using an IRL540 MOSFET.

I am curious about your project. Have you removed the motor from the plastic drill case? If so, how do you intend to mount the motor so it won't tear itself away from the mount when you first power it up. That will be a tremendous amount of torque!

Are you also using the set of gears that fit on the end of the motor shaft, or are you going to use the motor shaft directly?

Curious Paul

Okay, so the mosfet is not a safe option. But what is?

The motor is out of the drillcase, but I'm leaving the gearbox on. To keep the motor in place we've made a 3D printed case.

I am also interested in what solutions there are for driving such a motor.
But I have to admit, I am very curious about what you are going to be using this motor to do.
What is the end goal of your project?

Can you post some pics?

I've run quite a few RS550s and I've never met one that would cause any trouble for a MOSFET specified for 28A continuous and 110A pulsed when used normally.

Of course if you are actually planning to physically stall it for a long time you'll be in real trouble but I'm not sure if the MOSFET or the motor windings will burn out first.


I will be using the motor for a school project to drive a heavy vehicle (a tank in our case)

The vehicle only needs to be able drive about 5 meters so it won't be rotating that long

I've never met one that would cause any trouble for a MOSFET specified for 28A continuous and 110A pulsed when used normally.

Consider yourself fortunate!

Do you suggest an alternative for the MOSFET in that case?

These days there are plenty of better MOSFETs than the reliable old IRL540. I've used IRLZ44 and STP55NF06L both rated around 50A continuous. I've used those with motors more powerful than the RS550.

But I'll be interested to see what jremington recommends.


Hi Steve,
I’ve followed your advice and purchased the IRLZ44 MosFet. I think there is something wrong with my wiring though: no mather how I code it, as soon as I connect the battery in the circuit the motor starts rotating (even if the arduino isn’t powered). I can’t seem to controll it using a button for example. I’ve attached the wiring used. I’ve used this wiring for another (less powerfull) motor before and that seemed to work fine so I’m not sure what the problem is here. Thanks in advance!

I hate those Fritzy things, no values and you can't see which pin is which on the MOSFET. So I'm just guessing here. The resistor (what value is it?) should be between gate and source/GND and you should have a flywheel diode across the motor terminals.

Please also post the code you are using to run this. And your diagram doesn't show any button.