Introduction: Balancing Plate Game - Ramy Mounir - MAKE Course!
This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com)
My name is Ramy Mounir, and I'm a student maker enrolled in the MAKE course at the University of South Florida - Fall 2015. I used an arduino as a micro-controller to make a plate that can be controlled using servos. There are 3 operational modes for 0 - 2 number of players. The operational mode for 0 players is letting the plate balance itself no matter how you move the box, the plate will always be horizontal ! The mode for 1 player is using the joystick to keep the ball on the plate. The last mode is similar to the previous one; however, two players can use flash lights to move the plate.
In this instructable I will walk you through how I build this awesome project.
Step 1: Components
For this project you will need:
1x Arduino uno
1x joystick module
2x Servo motors
1x 3-axis accelerometer/gyroscope (MPU 6050)
2x 330 ohm resistor
1x 9V battery pack with on/off switch
and don't forget the wire...
Step 2: 3D Printed Parts
I have attached the 3D parts modeled on solidworks. Tolerances are considered in all my parts. 3D print all the parts in PLA, and choose the color you want.
I used bolts and nuts to attach the servo mounts to the box, which was not necessary. Super Glue turns out to be stronger than the 3D printed parts, so use super glue to attach fixed parts.
Attach the parts using the dimensions in the assembly file.
Step 3: Control System
The arduino takes signals from the sensors in the red boxes and computes the pwm signals to actuators (servo motors in the green boxes). The servo motors control the plate orientation.
The actual signal from the accelerometer is compared against the desired value and multiplied by a constant proportional factor to move the servos.
The same proportional control system is applied for the photocells.
The joystick input signal to the arduino is mapped to output a suitable PWM signal. (no proportional control system is applied here)
Step 4: Wiring
The wiring is exactly the same as the attached image.
The photocells are wired in a voltage divider circuit with the 330 ohm resistor. (A0 and A1)
The accelerometer is wired to A4 and A5 (SDA and SCL).
The joystick is connected to A2 and A3.
The two servos are connected to PWM digital pins 3 and 5.
Step 5: Arduino Sketch
The commented arduino sketch is attached to this step.
The sketch is split into two tabs, the main tab and the functions tab.
The main tab is basically a switch case in the loop function. It calls for the mode checking function and goes to the right case based on what it gets back from that mode checking function.
The functions tab contains 5 functions:
setplane(); // this functions sets the plane horizontal in the setup function
checkbuttons(); // this functions checks to see which mode are we in. If the joystick is not in its normal position, it returns that appropriate case number. Similarly if it detects a light value greater than the specified value, its returns back a different case number. If nothing is detected, the default case will be activated.
followlight(); // keeps a specific distance between the photocell and the flashlight using a proportional control system on the error between desired and actual light value.
balance(); // does the same as followlight() but uses the accelerometer values instead of light values.
followjoystick(); // maps the input signal from joystick to the output pwm signal to servo motors.
Step 6: Final Project
If you follow this instructable step by step, you should end up with a project like mine (see attached picture). If you have any question, please leave a comment. Have fun and good luck!