Name | NetID | Section |
---|---|---|
Stefan Sokolowski | stefans2 | ECE 120 |
Griffin Rzonca | grzonca2 | ECE 120 |
Alexander Jin | amjin2 | ECE 120 |
Lara Moreno Zepeda | laravm2 | ECE 110 |
Statement of Purpose
The purpose of this project is to create a robot that can balance an object in 1 Dimension. To accomplish this, we will have a marble on a rail, and the rail will be loaded with sensors and controlled by a motor. The motor will be able to detect the position of the marble, and, if it is unbalanced, will adjust accordingly. The goal here is not so much to solve an age-old issue, but rather to develop programming skills and gain experience creating a network of electronic components that work in synergy, as well as to create a neat party trick in the process.
Background Research
For our background research, we did some digging online to find similar projects. A lot of people have made 3D plate based ball balancing machines that use three servos to control a plate in 3 dimensions to balance a ball in the middle. For the purposes of this project and to increase feasibility, we have simplified the design to be over 2 axes instead of 3. A 2D see-saw type balancing robot is a great way to learn PID loops and the technology used in everything from drones to submarines to check positions and adjust control surfaces. PID is one of the most common ways that electronics interact with the real, physical world and it is integral if you ever want to create products that move.
Block Diagram / Flow Chart
System Overview
Our system is pretty self explanatory. We will run a PID loop using a servo as our movement device and a sensor (we still haven’t chosen a specific sensor, probably an ultrasonic sensor). Essentially, we will just use the sensor to then feed position data into the raspberry pi or arduino, which will then make a calculation on how far the motor must move. This movement command will be sent to the motor which will adjust the platform, moving the ball and then the location will be taken again and passed back into the loop.
Parts
3d Print Rail material (1) (We have access to a 3d printer)
Motor for moving balance (high frequency servo or stepper motor) (1) https://www.amazon.com/ANNIMOS-Digital-Waterproof-DS3218MG-Control/dp/B076CNKQX4/ref=sr_1_5?dchild=1&keywords=high+torque+servo&qid=1613776518&sr=8-5
Arduino or raspberry pi for computation and control (1) https://www.amazon.com/LANDZO-Raspberry-Pi-Model-8gb/dp/B08R87H4RR/ref=sr_1_11?dchild=1&keywords=raspberry+pi&qid=1613776392&sr=8-11
Camera or Ultrasonic sensor for location sensing (1) https://www.amazon.com/Raspberry-Pi-Camera-Module-Megapixel/dp/B01ER2SKFS/ref=sr_1_3?dchild=1&keywords=raspberry+pi+camera&qid=1613776573&sr=8-3
Possible Challenges
Coding the motor to operate correctly and not over or under compensate may be difficult, and will require a lot of physics equations, testing, and reprogramming to get it to behave as intended. Also, creating a system to accurately detect the marble’s location may prove challenging as there are numerous different ways to detect an object’s position.
Post Project Reflection
After finishing the project, we ran into a big problem which was the complete lack of a good sensor. Our sensor had such low quality data, we could not implement a PID loop with the quality of readings we had. As a result, our final product did not do what it was supposed to, but it got very close to it. I am extremely confident that with a better sensor and some better code, we could have easily achieved this projects purpose. Below I will link out final video and report so that anyone interested in the issues we encountered can read into what went wrong and how you can avoid such issues with your PID feedback systems.
Report:
https://docs.google.com/document/d/1hYBoncdY1mJsNC_U4Y7ZC18Cz-_fzYxkUXxKPMEhiic/edit#
Video:
https://drive.google.com/file/d/1rSeMtFDAbV9aSAm28ltfmpKtxkoZ-tCl/view
References
"Babot: Virtual Fist-Bump". Fantastic Object, 2021, https://www.fantasticobject.com/products/babot.
"Balancing A Ball On A Beam—Wolfram Language Documentation". Reference.Wolfram.Com, 2021, https://reference.wolfram.com/language/MicrocontrollerKit/workflow/BallAndBeamControl.
Gao, Zhen et al. "Design and Implementation A Ball Balancing System for Control Theory Course". Aeuso.Org, 2015, https://www.aeuso.org/includes/files/articles/Vol5_Iss17_2363-2374_Design_and_Implementation_a_Ball_Ba.pdf.