Connect heavy DC motor to Arduino. Controller?

I'm planning to buy a wheel with a hub motor inside to create an arduino controlled electric unicycle with a gyroscope. I found a Chineese manufacturer that creates electric hub motors: (Model: MW16B) I'm planning to buy this one, but I'm not sure what to use to connect the Arduino to it. Specs: 1000W, 48V. The manufacturer also sells controllers, but I don't know if I'm able to connect it to the Arduino. Is there some other motor controller that is reliable to use with such a motor? perhaps this one: anyone any experience?

The controller you linked has a maximum supply of 24V.

I'm planning to buy this one,

The document you linked to does not give the motor requirements.

Specs: 1000W, 48V.

So that is a current of 20.8 Amps. I assume that this is when running, the initial switch on surge will be higher. So you better be looking for a controller that will do at least 50 Amps. Apart from the voltage that controller will only handle 25 Amps.

I know it's a 24v controller, it was just as an example. (but perhaps I can use the hub motor on 24v...)

I was unable to link directly to the specs (which are thin), but if you go to their website (, click in the left menu on 'hub motor' and scroll down to 1/3 th of the page. It's model MW16B. I sent a mail to the manufactorer for more specs.

Does anyone know of motor controllers with this kind of amps that are conectable to an arduino?

motor controllers with this kind of amps that are conectable to an arduino?

Any motor controller will be capable of being controlled by the arduino, if not directly with a few components. Controlling it with the arduino is not the problem. The problem is finding the controller in the first place.

That's what I hoped to find here...

anyone any ideas?

I suppose it's not possible to use both connections of a controller like the sabertooth on one motor (to double the amount of amps the motor can draw...)? I only need the motor to go in one direction, so I only need one connection of the controller. But it would be great if it's possible to connect both ends to the same motor. (I really don't think this is possible, but who knows...)

I can think of quite a few controllers capable of doing that. However they're pretty pricey. Are you sure you need such a powerful motor?

If you want absolute overkill:

Not sure about this stuff but in case it's usefull:

daveg360 thanks. I will send a mail to the scooterparts site. Their controllers look promising and are definitely suitable for driving a hub wheel motor. I'm hoping I can get more info on the interface of those controllers.

Several important observations:

That hub motor says 'super integrated' which might mean that it has a built-in controller. Or it might not.

Secondly and most importantly bike hub motor controllers DO NOT SUPPORT REVERSE. Most do not support regeneration. For a unicycle you need both. You need a motor without a built in controller and add a 3-phase 4-quadrant controller to it. In the smallest configuration you would need 3 half-H-bridges, which in theory can be driven by an Arduino, but note below.

Speed control for motors involves PWM modulation at a frequency were the motor winding inductance can efficiently filter the ripple. Commutation for a 3-phase motor involves decoding the 3 hall-sensor outputs and the forward/reverse signal and generating 6 outputs to the half-H-bridges.

Doing both of these simultaneously rather requires 6 pwm outputs run from the same clock. The ATmega chips don't support that. Some external logic is needed I think - perhaps some H-bridge chips allow a second enable input that could take the PWM clock?

In answer to the original question, given a beefy enough H-bridge setup there's no reason an Arduino couldn't drive any size of motor since it only drives logic signals to a controller.

So basically you must get a motor WITHOUT a built-in controller. (Or be prepared to disassemble and bypass it). These have 3 phases for the windings and 5 wires for the hall sensor outputs plus 0v, 5V.

the initial switch on surge will be higher

Well with careful control of the drive level and a current sensor you can probably avoid this - ie at switch-on drive it at pwm 0, and only slowly increase while monitoring current. There will be a lot of careful tuning needed for this kind of 'vehicle'. At least you won't need to drive the thing at anything like full power, these motors are very torquey indeed. A series current-limiting circuit could be useful to avoid accidents. You might be fine driving it at 24V or even 12 for this application.

MarkT, thanks for your explanation. This is all new to me, so all info is welcome. Can you tell me what exactly is a 3-phase 4-quadrant controller and how it is different from controlling a normal DC motor?

I have to disagree with you in the case of reverse. I think I don't need that. I'm not planning on driving the thing backwards. I just has to drive forward when i lean forward and hold back when I lean backwards. I'm not planning to have is balance me when I'm not moving...

Do you have any experience with the use of these kind of motors? And do you think the controlling of the motor will be 'simpeler' with the use of the motor controller suggested by DaveG360 (

I was thinking the same as MarkT re: reverse. Surely you need it overcome tipping backwards?

MarkT, thanks for your explanation.

Sorry I think his advice and information is extremely suspect. In my opinion he is one of the sorts of people who gets the internet a bad name. He likes to be quite clever but his advise is often poor.

ie at switch-on drive it at pwm 0, and only slowly increase while monitoring current.

Shows he doesn't know what he is talking about. If you have motor and give a PWM setting of zero then no voltage is being applied. Now advance this to 1 and you get a small pulse of voltage that drives the maximum stall current through the motor. You have trouble monitoring this because is is a small pulse. Also there is nothing you can do about it because it is as small a signal as you can get. Now if the PWM is smoothed to a small DC output level then you can monitor the current but it is still the full stall current all be it at a small voltage. Until the motor starts turning no matter how slowly you ramp up the voltage to the motor the current is effectively limited by the DC resistance of the motor's windings. What Mark is saying is that he hopes the motor starts turning and thus reduces the current before the stall current exceeds the current capacity of your driver. He doesn't know if it will or not and neither do I.

what exactly is a 3-phase 4-quadrant controller

It is a controller to control a certain type of motor. As I don't think this is the sort of motor you have you can safely ignore it. However look here:-

OK, mike point taken. I just hope to drive the motor with a matching motor controller that is normally used for driving a scooter or something familliair. I then only have to think of how to control this controller via the Arduino.

@daveg360: I don't have to drive backwards, only forwards. When I want to brake, I just lean backwards untill the unicycle has stopped and then I put my foot on the ground. I don't need to balance in place where the unicycle needs me to keep upward by forwarding and reversing all the time. Just forward and break.

Anyone any experience with these sort of controllers?

Based on your requirements I see absolutely no reason why the controller from scooterparts wouldn't do the job, it's intended for this exact purpose. Pay close attention to Mike's warnings about stall current. I am using a 370w 24v motor in a project. It happily draws 35A+ at startup. It's tough on every component.

OK, so by taking your advice here, it should be possible to use a hub motor of 36V 500W (model MW16B and a controller of 36V 1000W ( If only the manufacturers would reply on my mails with some specs on the connectors....

Hello guys,

I have two motors ( 24 volts 250 watts) and I bought two speed controller boards: . How can I make my arduino control the speed and direction of my DC motor using this controller I bought? What libraries do you suggest? Your reply would be greatly appreciated


How do I implement it? Any clue?


How do I implement it? Any clue?

Continuing to post the same question under different discussion topics is probably not going to win you many friends. ::)

My apologies , just wanted to gather as much info? my bad