Our assignment for this week is to propose our final project and then answer all the questions related to it like what will it do? How much it will cost? etc.
As my final project I'm going to make a Self-balancing Robot. This weeks goal is to plan and document the final project integrating the range of units covered.
Balance Bot is a self-balancing robotic platform made entirely with the technologies available in fablab. I intended it to be a stepping stone into more advanced projects like the Hover board or the segway. For the Fab Academy I will make a robot that can balance on two wheels.
For the first prototype the robot will be driven by two Geared DC motors. I plan to use an accelerometer gyro sensor as my inertial measurement unit to sense its orientation. It will also have a PID control algorithm to control the motors in order to keep the robot upright.
There are hundreds of projects on the web about self-balancing vehicles, I've read through a lot of them and have understood the logic behind it. I'll share a few of them which I liked.
One Wheeled
nBot- Self-Balancing Robot
Instructables
The components required are:
DC Geared Motors for propulsion
MPU6050 as IMU sensor
Electronics boards, one as the main control board and one as the Motor Driver.
Two Wheels, either find from scrap or make.
The Material Required are:
4mm Plywood for making the Body
Vinyl sheets for stickering.
Most of the parts come from the fab Inventory, except for the DC motors and the MPU6050 IMU sensor. I plan to make the body of my bot using laser cutting with scrap plywood. All the joints in my body are press-fit so I won't be needed glue or screws.
I salvaged my motors from an old kit my friend had. They were L-shaped motors and the perfect size for my robot, but they have seen a lot of wear. There is some huge back-lash in the gear.
The MPU6050 sensor I bough from ebay. We have the Invensense chip available in fablab Inventory but, we did not have end mills small enough to mill the traces for it.
One of my plans was to reduce the cost for the total build, so I would salvage what I can and fabricate what I can't. My total expense for the build was the price of the sensor. I salvaged the motors and all the Electronic components for my bot where available in the fab inventory.
Qty | Item |
1 | 6x4" single sided copper board |
1 | Atmega328p |
1 | MPU6050 |
1 | 16 MHZ Crystal |
1 | L293D H-Bridge |
8 | Capacitors |
1 | N-channel MOSFET |
11 | LED (RED,ORANGE,GREEN) |
16 | SMD Resistor(various values) |
>30 | Male Header Pins. |
1 | Switch |
<20 | Female Header Pins |
1 | ISP header 6 pin |
6 | Terminal Block. |
1 | 12x24 inch 4mm plywood |
2 | DC Geared Motor |
2 | Plastic Wheels |
Since most of the items are from the fab Inventory and accounting for unit price, the total would come around 17 USD.
If you can salvage the motors and the wheels, the cost would come down , and if you can make the IMU sensor board in fablab then the costs can be reduced even further.
Electronics boards will be made by PCB milling.
Stickers will be made in Vinyl.
The body will be made with wood.
The support for the sensor.
Almost all the parts and the systems are made in fablab with the exception for the Motors and the sensor.
Electronics boards: Designed using EAGLE, they will be made using the Roland Modela Desktop CNC milling machine, controlled through the fab modules.
Stickers: Designed in Inkscape, they will be made using Roland Desktop Vinyl cutting machine controlled via fab modules.
The Body: Designed in Solidworks and Rhino, exported as DXF, will be will be made with wood using Trotec laser cutter.
The Sensor Housing: Designed in Solidworks, exported as STL file, Sliced in Cura and 3D printed in Ultimaker 2.
Calibrating the MPU6050 sensor
Measuring the Angle from the sensor readings.
Making a DC motor Driver.
Making the Support for the Sensor.
Milling and stuffing the boards.
Laser cutting the Body.
Programming the Board.
Tuning the PID controller(Grey Area).
Assembling the Final Robot.
Look for more control algorithms other than PID.
Vinyl cutting the Stickers.
How well will the robot balance?
How will I make sure that weight is evenly distributed in the body after assembly?
Where is the optimal placement for the IMU sensor?
How will the Robot be Powered?.
How well will the PID controller respond?
How can I tune the PID controller?
How to will the DC motors react to varying voltages?
Will the two DC motors react to the PWM signals in the same way?
How quickly can the DC motors react?
How can I tune the PID constants while the robot is working?
Will I have to create a Mathematical Model for the system? If so, how?
I plan to finish the project in the last four weeks up till the final presentation. The first few weeks were spend on research and identifying what I have to do to get it done. I have then categorized the tasks into subsystems to that I can work on finishing one at a time. I then prioritized the tasks I have to complete in the descending order of importance. There are limited tasks which can be done in parallel, since some of the tasks depend on the previous task to be finished.
I will document as I work, because there are a lot of subsystems and I won't have the time to finish the project and then document it.
Since this is the first time I'm working on a self-balancing robot, my expectations are not that high. Murphy's Law, Anything that can go wrong, will go wrong. There are many things which I need to master in order to build a good self-balancing robot.
But, I would be happy if I could make a robot that could stand on two wheels, that is the minimum goal I'm aiming for. If I do finish it then I plan to move on to a bigger version using BLDC motors.
Currently I'm perfecting the design and code so that, after I publish it, other people can take this as a reference or starting point for their project. After than I plan to use this as an educational model and teach people who are interested in robotics, If I gain sufficient momentum in that direction, then I'll think about making kits for people who want to make their own self-balancing robot.