The problem
A self-balancing robot is an inverted pendulum on wheels — the classic controls-lab problem made physical. It stays upright only because a fast feedback loop measures tilt and drives the wheels under the falling body hundreds of times per second; get the PID gains wrong and it face-plants, which is exactly why examiners love asking about the tuning. This project builds the full system: a compact two-wheel chassis, an MPU6050 IMU with a complementary filter for clean tilt angle, geared DC motors on H-bridge drivers, and an Arduino running the PID loop at approximately 100 Hz. Bluetooth adds remote drive commands that lean the setpoint to move. The heart of the deliverable is the tuning procedure — Ziegler–Nichols-flavoured, student-performed — so the report's gains are earned, not copied.
How it works
- The MPU6050 measures acceleration and angular velocity; a complementary filter produces the current tilt angle.
- The Arduino compares tilt against the upright setpoint and runs the PID computation at approximately 100 Hz.
- The PID output drives both wheels through the H-bridges — forward when falling forward, backward when falling back.
- Bluetooth commands offset the setpoint slightly, so the robot leans and drives in the commanded direction while balancing.
- The student follows the tuning procedure, raising proportional gain to oscillation then setting P, I and D from the documented method.
- Final gains, filter constants and balance endurance are recorded in the report.
Tech stack:
- Arduino Nano (ATmega328P)
- MPU6050 6-axis IMU
- 2 geared DC motors (high-torque)
- L298N / TB6612 H-bridge driver
- HC-05 Bluetooth module
- Li-ion battery + 5 V regulator
- Fabricated compact chassis
- Arduino IDE (C/C++ firmware)
| Parameter | Value |
|---|---|
| IMU | MPU6050, complementary-filter tilt angle |
| Control loop | PID at approximately 100 Hz (design) |
| Motors | 2 high-torque geared DC (design) |
| Driver | H-bridge, PWM speed + direction |
| Balance | Upright hold; endurance depends on tuning and surface |
| Control | Bluetooth drive via setpoint offset |
| Power | Li-ion pack, regulated 5 V logic rail |
| Chassis | Compact fabricated frame (design) |
Project features
- [MPU6050 tilt sensing] A 6-axis IMU with a complementary filter fuses accelerometer and gyroscope data into a clean, drift-resistant tilt angle.
- [PID balance loop at ~100 Hz] The Arduino runs the proportional-integral-derivative loop fast enough to catch the fall, with gains the student tunes.
- [Documented PID tuning procedure] A step-by-step tuning guide (oscillation method) takes the student from wobbling to stable, and the final gains go in the report.
- [Geared DC drive with H-bridges] High-torque geared motors and H-bridge drivers give the fast wheel corrections balancing demands.
- [Bluetooth drive commands] A phone app sends forward/back/turn commands that shift the balance setpoint, so the robot drives while staying upright.
- [Compact fabricated chassis] A low, rigid two-wheel chassis keeps the center of mass where the controller expects it.
- [Battery and power management] A Li-ion pack with a regulated 5 V rail keeps the logic stable as motors draw surge current.
What is included
- Two-wheel balancing chassis with motors, IMU and drivers
- Arduino firmware (complementary filter, PID loop, Bluetooth drive)
- PID tuning procedure document
- Wiring diagram and assembly guide
- Project report PDF (inverted-pendulum theory, tuning log, results)
- PPT presentation and viva Q&A document
Limitations & prerequisites
- Balance quality depends entirely on the buyer-run PID tuning — the kit ships with starting gains, not magic numbers.
- Flat, hard floors are required; slopes, carpet and bumps defeat the controller's model.
- The design balances an unloaded chassis; carrying payloads changes the dynamics and needs retuning.
- Approximately 100 Hz loop rate is a design target on the Nano; heavy additional code can slow it.
- No obstacle sensing is included — the robot balances where it is driven (sensing is future scope).
Frequently Asked Questions
How does it stay upright?
An inverted pendulum falls unless corrected. The MPU6050 measures tilt, a complementary filter cleans the signal, and the PID loop drives the wheels under the falling body about 100 times per second.
How do I tune the PID?
The kit includes a step-by-step oscillation-method procedure: raise proportional gain until steady oscillation, then derive P, I and D from the documented rules. Your final gains go in the report — earned, not copied.
Can I drive it around?
Yes — Bluetooth commands offset the balance setpoint, so the robot leans slightly and drives forward, back or turns while staying upright.
What surface does it need?
Flat and hard. Slopes and carpet break the controller's assumptions; the limitation is documented honestly in the report.
Can it carry a load?
The design balances the bare chassis. Added payload changes the pendulum dynamics and requires retuning — noted as an experiment, not a supported feature.
Is this project suitable for a final-year project?
Yes — for Mechanical, Mechatronics, Robotics and Control-Engineering-adjacent programs. It is the inverted pendulum made physical, with real tuning discipline. Suitable for B.E./B.Tech final-year projects in Mechanical, Mechatronics, Robotics and Control Engineering.
Components & software requirements
- Arduino Nano (ATmega328P)
- MPU6050 6-axis IMU
- 2 geared DC motors (high-torque)
- L298N / TB6612 H-bridge driver
- HC-05 Bluetooth module
- Li-ion battery + 5 V regulator
- Fabricated compact chassis
- Arduino IDE (C/C++ firmware)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.