Willoduino: self balancing robot

Posted on 11/04/2013 by willockx
Modified on: 13/09/2018
Project
Press to mark as completed
Introduction
This is an automatic import from our previous community platform. Some things can look imperfect.

If you are the original author, please access your User Control Panel and update it.

Hello I am Brecht Willockx. I am 17 years old and come from Belgium. In the past 8! months I have been working on a Self Balancing Robot. The name Willoduino is from my last name WILLOckx and the brain arDUINO.It's my end of year project. I study in high school for industrial engineering. The brain of my robot is the Arduino Uno. The robot is finished!! The hardest part was finding the PID-values. As always it was a lot harder than assumed by me. The last part is to obtain basic motion control ...


Willoduino: self balancing robot

Hello I am Brecht Willockx.
I am 17 years old and come from Belgium. In the past 8! months I have been working on a Self Balancing Robot.
The name Willoduino is from my last name WILLOckx and the brain arDUINO.


It's my end of year project. I study in high school for industrial engineering.
The brain of my robot is the Arduino Uno. The robot is finished!! The hardest part was finding the PID-values.
As always it was a lot harder than assumed by me. The last part is to obtain basic motion control (Forward/Backward, Stop Right/Left) with a cheap bluetooth module (+Android).
I've made a Android App in App Inventor:


I use a IMU 5 DOF (IDG500/ADXL335) for reading the angle of the robot. The sensor is placed on the bottom of the robot.
As we are interested only in gravity measurement, we want dynamic acceleration as low as possible.
The best place for reducing rotational acceleration is near the the motor axis.
Accelerometer hasn't the noise from the dynamic acceleration (v=w*r) with r=0 (bottom).
Gyros sense rotation only, not acceleration. Rotation is a "system wide" variable for a rigid system.
They can be placed anywhere you want, even at the very top of the botom.
With a complementary filter, the correct angle is calculated!

I use also encoders from the motor. he encoders are tracked using interrupts and direct port manipulation.
The robot knows his position now. I use a PID controller to calculate the best PWM-value.
The 37D metal gear motors are controlled by two independent motorcontrollers.

The wheels are school made from erthalon for good grip.

I also made a 3D-model in Inventor. It's my first design -the place of the components are changed-.
At the moment, I am drawing the actual robot.

Inventor



The correct version: You can see the assembly: http://www.youtube.com/watch?v=bkWXbv9CG84

If you want more information about how a balancing bot works check out x-firm.com which has a great tutorial section for balancing robots. Oh yeah and it is a lot harder to build one than you would think (I found out the hard way!).

When the robot is ready, I will also make a video!!

Greetz from Belgium

Self Balancing

  • Actuators / output devices: 1:29 Pololu 37D metal gear motor with encoders
  • Control method: PID - controlled by bluetooth not yet-
  • CPU: Arduino Uno (atmega328)
  • Power source: 12V NiMH 2200mAh
  • Programming language: Arduino (C#)
  • Sensors / input devices: motor encoders, 5DOF IMU (IDG500 and ADXL335)
  • Target environment: indoor
LikedLike this to see more

Spread the word

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post