A Simple and Very Easy Inverted Pendulum Balancing Robot Using Arduino

Easy Inverted Pendulum Balancing Robot

Let’s make a simple inverted balancing robot, and operate it.
You need only half a day to do them, if you have an arduino and some materials.

[a video of a robot you would make]
After a few work with arduino, I have thought of making an inverted pendulum. Then I had two policies for the project.

  • simple as possible
  • bootstrap (without referring to website)

Though they has been kept (*1), it has demanded more than whole a week to make my robot balance itself. So simplicity of my robot seem to be held in its body, circuit and program (called ‘sketch’). It has only an analog gyro-module (at $4 (*2)), two plane motors (at $1.5) and two analog ICs (at $1.5) to drive these motors.

(*1) I have referred websites for two matters; a formula for inverted pendulum and a troubleshooting the gyro-module I used.
(*2) 100 JPY = 1 USD I use as exchange rate.

A solderless breadboard in a picture above would show its simplicity. And a video thereunder shows it works well enough.

Easy Inverted Pendulum Balancing Robot

One who has made a LED blink with arduino ever could assemble her/his inverted robot in half a day or less according to my recipe below. But I think it is similar to solving a puzzle to make it balance on its wheels. Thus I show a solution in three steps not to spoil a puzzle. I wish videos and pictures could cover my poor English.

* A Japanese version of this instructable is available also.

** Additional information, Aug. 20 2014:
A simpler alternative program, ver2.0, has been available in Step 5.

Step 1: Gather Materials

Body (using TAMIYA’s Educational Construction Series)


[tutorial for Step 1]
[commentary 1]
I have felt that analog gyro-module listed above has individual difference. So I think it better to purchase two or three modules together. And as showing in Step 11, an additional module could make robot work more stably.

[commentary 2]
If it is hard to get the gyro-module listed above, similar one with the same analog sensor (ENC-03R) might be substituted. For example a module sold online would be available. (Its price is near 4 times to Akizuki’s one.) Though it seems to have op amp, the factor scale to amplify I cannot find.

Step 2: Solder Wires to Some Components

First you should solder wires to some electrical components.

  1. solder wire to each point of 2 motors (4 points in all)
  2. cut 4 jumper wires in half (8 half jumpers gotten)
  3. solder these half jumpers to 8 wires of 2 motors and 2 battery snaps
  4. cover each point soldered with chip of tape for insulation
  5. solder header pins to an Akizuki’s gyro-module
  6. solder a fine wire to either point of a capacitor ‘C6’ on this module

Easy Inverted Pendulum Balancing Robot circuit

[tutorial for Step 2]

[note 1]
An Akizuki’s gyro-module listed above has 2 analog gyro-sensors on its surface. Either sensor is ‘ENC-03R‘ made by Murata-seisakusyo. Only one of them is used for inverted robot. This sensor outputs 0.67mV per unit angular velocity (1deg/sec) and it is amplified to ten times with a op amp on the reverse face of the module. (Vo at pin 1 of this module is 6.7mV/dig/sec.)

But this module picks up not only angular velocity but also angular acceleration by its filter (HPF). Capacitor C6 on this module is a main element of HPF. To avoid picking up the latter, soldering a wire to this capacitor is done.

Step 3: Assemble a Body of Robot

To build a body of inverted robot, TAMIYA’s Educational Construction Series are used.

  1.  make two V-shaped cuts to a Universal Plate
  2.  attach 4 L-angles included Universal Arm Set to this Plate
  3.  assemble Double Gearbox to make its gear ratio 114.7:1
  4.  mount 2 motors with 4 wires to this Gearbox
  5.  attach this Gearbox to Universal Plate above
  6.  assemble Slim Tire Set (two 55mm Dia. wheels gotten)
  7.  attach these wheels to shafts of Gearbox above

Read more: A Simple and Very Easy Inverted Pendulum Balancing Robot

Leave a Comment

Your email address will not be published. Required fields are marked *