I am building a self balancing bot using

  • MPU-6050
  • Arduino Mega 2560
  • 100 rpm 12V DC motors

Currently I have used two 100 rpm DC motors in the bot. The pwm signal is given to the bot on the basis of the angle which the bot makes with the vertical(i-e angle of inclination).

Currently the bot isn't able to recover when tilted to about 40 degrees or when pushed hard.

As far as I understand the problem lies with the motors used. So, to make the bot more stable and to make it prevent on falling when pushed hard, what motors should be used ?

Will using stepper motors be better or will a DC motor with higher rpm rating (say 300 rpm) be better?

Stepper motors will provide certain advantages like rotations in it will be less affected by the variations in the voltage supply. Also stepper motors will provide more torque to balance the bot when tilted by larger angles.

But the stepper motors will cause mechanical vibrations, will this cause the bot to disbalance and hence making high rpm DC motors a better choice for it or still the stepper motors will be better (i-e the mechanical vibrations due to stepper motor won't have significant effects)

Please help me to select better motors for the bot, 300 rpm DC motors OR Stepper motors

  • $\begingroup$ Could you please give us more information? A link to the web page for the motors would be nice. Also, how heavy is the robot, and what are it's dimensions? Is a lot of the weight at the top? Please do not answer in the comments, but edit your question. $\endgroup$
    – NomadMaker
    Jul 11, 2018 at 0:48
  • $\begingroup$ Ok :) for the weight of bot please give me a one day time .... As I'm making a new body for it $\endgroup$
    – MSD
    Jul 11, 2018 at 3:14

1 Answer 1


40 degrees is pretty good. I believe that you need motors with more torque as well as more speed. Which means that you may also need a new motor controller.

The motors

I don't have the information about the motors that you're using. There are a couple factors involved in balancing a balancing robot.

  1. The motor's torque: Torque is a rotational force, measured in units of force times length, such as newton-meters or n-m or pound-feet lb-ft. This is a measure of the strength of the motor. At some point, the motor will not be able to lift the robot.
  2. The motor's speed: In order to balance the robot, the motor needs to react very quickly. If you've ever tried to balance a yard-stick on its end with one finger, then you'll have an idea of the problems. Once the stick starts falling, you need to move your finger quickly, and the more you've let the stick fall, the faster you'll need to react.

You can improve a motor's torque and speed by increasing the voltage, but that risks the motor unless you stay within the limits.

If the motors are running at full speed most of the time, then you'll need more powerful motors.

There is nothing wrong with using a DC Brushed Motor with this type of robot. It's what I've seen.

I haven't seen stepper motors used for this type of robot, but if they have the speed, they might be ideal. They usually have excellent torque at low speeds and less torque at higher speeds, which is exactly what you need for a balancing robot.

Another type of motor that could be used is the BLDC (Brushless DC) motor. This needs a different type of motor controller.

PID Control

Another factor is programming. While I have heard of using just a proportional motor controller for setting the PWM for the motor, it works better with a full tuned PID controller. There are many tutorials on how to do this on YouTube.

To do this, you'll need to know the angle between the floor and the robot. The easiest way to get this is to use both motor encoders and a gyroscope/acceleromter such at the MPU 6050.


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.