Controlling a big DC motor.

Hello everyone,

I'm new on these boards, I do have a question already though.

As the topic title suggests, I want to control a large DC motor with an Arduino, I havent bought any arduino yet, because I'm not sure which to pick yet.

Now I know there are ways of using mosfet switch to power the motor directly from a battery.


Arduino PWM Signal

So the arduino sends a PWM signal to the mosfet, and makes the motor work at a certain % of its power.

However, I have only seen examples of this usage in small motors.
Is there anyway I can do this on a larger motor ? different switch or something ?

Edit: I mean something along the lines of a 10 to 15 kw motor.

I hope someone can point me in the right direction.

Kind regards,

PS: I know there are motor controllers out there (ATX etc.) but whats the fun in that ?

You're going to need an Industrial scale mains electric supply to feed a motor that size. ( a healthy domestic supply would just about do it providing you're not running anything else at the same time although probably not with 120v mains if you're stateside) .

It could be done with batteries, but you'd be looking at electric car technology ideally with a few thouand bucks worth of Lipo batteries weighing a fair proportion of the weight of a car. The control is a relatively minor problem......

Hello Pluggy, and thanks for youre reply.

I'm not sure if 10 to 15kw is correct, look at this youtube movie:

They use lithium battery's, packed to make cells.

They use a motor controller of some sort to control the ammount of power generated by the motor, I was just wondering if there is any way to control the motor power of such a large motor with an arduino.

Hope i made myself clear.
Kind regards,

Have a look at this device (a logic level FET):

A single digital pin from any duino is all it would take to PWM control this for 10kW+ of power. You could wire two in parallel for 20kW+ and still a single pin is all you need.

I enjoyed looking at the video and really controlling such a motor is well within reach of even the smallest of duino's.

I know it doesn't help, I'd just like to point out that controlling 10-15kW is a far from trivial matter...

I used a MOSFET to control a DC motor in the 1kW range. I started out experimenting at very low power. I used a 555 IC to generate the PWM signal (555's are a lot cheaper to replace than an arduino) Blew up several FETs as well as 555's.

It is very important to make sure that you fully turn the FET on (supply enough voltage to the gate) or else the resistance "RDSON will be too high and therefor the FET will get very VERY hot.

Also, the capacitance on the gate will make it impossible to turn on and off instantly(especially if your arduino can't source enough current to charge that capacitor quickly or sink enough...). As a result of this capacitance, the higher your PWM frequency is, the lower your switching efficiency will be and therefor the hotter your FET will become.

There is yet another issue to address when switching particularly inductive loads like motors--transient voltage spikes. When you stop supplying current to an inductor, the magnetic field collapses and produces a voltage spike that can be very high and is capable of destroying sensitive components. The typical solution to this problem is the "Free-wheeling diode". This should be a high current fast-recovery diode(Shottky diodes worked for me) connected in reverse parallel. At this point I should ask if you need forward/reverse/breaking as that adds a much greater level of complexity and many more design considerations.

hii even i have doubts regaeding controlling a servometer using arduino without motor conrtol board if u ppl have an idea please reply to me this is my first project with arduino and i dont want to messs up toomuch

:slight_smile: :slight_smile: :)thanks in advance :slight_smile: :slight_smile:

i have doubts regaeding controlling a servometer using arduino without motor conrtol board

A controller board is a good idea, but if you are using small servos under a small load and you don't care too much about precision, there shouldn't be any problems hooking it up directly. I have connected several micro sized servo motors directly to my arduino with no problems(other than poor resolution).

I made this little laser turret controlled by the mouse position of my computer. Left click toggled the laser on and off while the roller(scroll) wheel adjusted PWM brightness of the laser. Pretty neat. I later programmed Processing to graph equations sequentially. Tried drawing a circle on the ceiling to see how well it worked. Here is a long-exposure shot of it:

thanks woodwhatsoever buddy can u tell me what amperage would not disturb the arduino so i'm thinking of using a capacitor or resistor what do you think ??? gimme some info regards dat

so i'm thinking of using a capacitor or resistor

I'm not sure what you intend to use them for.. You need to be more specific. I can see how a cap might help sustain enough power during brief periods of high-current draw, but I don't know what you would use a resistor for.

The simple nature of hobby-servos makes them very easy to work with. There are 3 wires to connect. Red goes to the +V (check the rating for your servos), black goes to ground(0V), and the last wire may be either white or yellow and it is the control signal. The way the servo is controlled is by the length of the pulses(in the milliSeconds) it receives on that wire. The servo expects a pulse every 20milliseconds. That pulse ranges from 1millisecond, to 2ms. A pulse of 1ms might set it to 0degrees(minimum position) and a pulse of 2ms would set it to the max position which I think is around 210degrees, however don't quote me on that. And if it isn't completely clear, a pulse of 1.5ms would set the position to the middle of its range (105 degrees for a servo with a max of 210). Essentially you can control a servo with PWM --pulse width modulation(if you don't know what that is you should look here operating at 500Hz by changing the duty cycle between 10% and 20%... If you do this, though, you should consider that the PWM function of the arduino has only 8-bit resolution (255 steps).. And in this case you could only use 10% of those steps so roughly 26 steps.. If your servo has a swing of 210 degrees; your effective resolution would be limited to 210O/26steps ~ 8 degrees per step.

Also, you can use a separate supply for producing the current for the servo as you only need the SIGNAL from the arduino to control it. You will need common ground, though.

I hope that helps.

thanks mr wood this heplped mee a lot could you explain how to have a common ground and also how to drive a dc motor bi directional using the arduino sorry for asking such questions but i'm new to arduino and everything else

  1. I'm intersted in what sort of fet P_Wood used to control 1kW.

  2. If you want to control a servo then I'd recommend the servo library; have a look at the libraries section on the Arduino website for full details on what it does etc. - it makes driving a servo totally easy.

  3. In this instance, I think 'common ground' means that you need to connect the ground (0V) of the arduino power supply to the ground (0V) of the servo power supply - it's generally necessarry to have a secondary (i.e. non-USB) power supply to serve the motor/servo etc. as it will probably draw too much for the USB Arduino PSU to cope with.

  4. There are various motor control sheilds available to control a small DC motor bi-directionally; do a search for info as it's come up many times before.

First off, thanks to all.

Very useful information, of-course I'm not going to start at 10kw, I have bought a few small motors and an Arduino to start small, and I will really read into how to use PWM properly etc.

P_Wood, thanks for recommending some other options to me, much appreciated, I will certainly look into the 555's.

BenF, great tip about the MOSFET's, thank you !

@@@ ru i wanted to know how to controll a dc motor without using a motordriver sheild !!!!! pls let me know if u know a relaible method that wont damage arduino

Sorry, forgot the bit in the original question about not wanting to use a shield. :wink:

Of course you'd've checked this thread too I guess:

BenF, great tip about the MOSFET's, thank you !

I've done a number of projects that switch DC motors in the 1-2kW range without a dedicated controller and using an Arduino. As others have pointed out however, any project has its challenges, but scaling it up to 10kW+ would be less of an issue once you get the basics right.

You may also want to look at synchrounous DC motors which poses different challenges controller wise, but offer a great power/weight ratio.

@@@ru thanx dude 4 getting back to me and also thanx for the info but the other post u've refered i aldready viewd it as u told

@@@ ru i wanted to know how to controll a dc motor without using a motordriver sheild !!!!! pls let me know if u know a relaible method that wont damage arduino

It would probably be very easy to adapt the below kits for use with the arduino.

  1. I'm intersted in what sort of fet P_Wood used to control 1kW.

The FET I used was the IRF3710. The data sheet is here:

Here is a picture of the board used to control the 90VDC/14A motor, two four-digit seven-segment displays, and the user interface:

You will notice the three empty holes in the top-left corner of the board. That is where the IRF3710 went. For some reason I dont have a picture with it completely assembled. The top 'shield' is the display driver.

hii all of you could any one tell me howmuch will a motor driver board cost and how to use control it with arduino i want the driver board to provide move ment to my robo wich can weigh upto half a kg suggest good motors als please!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 :-?