Inspiration

Imagine the last time you watched a war movie. Now remember the last time you missed a pong shot. We want to put these together and make a pong ball shooter that ensures you never miss your next shot. We want to make you a pro at pong by bringing this robot that will clutch up any game.

On a serious note, we want to make a ball launcher which introduces many interesting problems. This includes tuning motor control for launch, controlling servos for yaw + pitch, and sensing the environment for cups to capture distance. This has many applications ranging from military artillery equipment to sports ball launchers for practice.

What it does

Our launcher uses two fly wheels powered by a 9V battery to compress and launch a ping pong ball. Using a joystick and ADC input reading, the launcher can pitch and pan with 90 degrees of motion. The ultrasonic sensor serves to find the distance to the target and code is used to determine the optimal pitch for aiming based on projectile motion calculations. The laser pointer is just for helping the user aim the turret.

How We Built It

Here's our list of parts:

Servo Motors – MG90D used to control the pitch and yaw of the robot to target the ping pong ball. We used PWM on two timers to control the full range of 90 degree motion.

DC Motors – used to power flywheel (either 1 or 2 depending on implementation) which launches the ball.

Atmega2560 – arduino mega board allows us to use 4 16 bit timers and 2 8 bit timers

Ultrasonic – calculates distance between launcher and target as input to launch calculations

Joystick – controls the axes of the launcher

Launcher Body- 3d printed to house the components.

Challenges we ran into

We pivoted from using the atmega328p and a motor driver because the libraries associated with the driver were not suitable for bare metal C code. Instead, we used the atmega2560 to use the 4 16 bit timers for the two servos and the ultrasonic. We spent a lot of time adjusting to the registers of the new microcontroller and debugging PWM/ADC integration with the servos. We also got stuck with using libraries with hardware such as the time of flight sensor which has very obscure libraries that are hard to convert to C projects.

Accomplishments that we're proud of

We met our goal of creating an aim-able turret capable of launching a ball 16 ft while being around 50% accurate at around 8 feet. Although it wasn't as consistent as we would have liked we also implemented the automatic aiming feature with the ultrasonic sensor.

What we learned

This was both of our first embedded systems project and we learned a lot about combining software, hardware, and design. We hope to continue making fun projects such as this in the future!

What's next for Group 16

We are planning on continuing this project over the summer and adding computer vision to the launcher to be able to play a full game of pong and to increase accuracy. We want to make use of existing libraries to improve the functionality of our launcher.

Built With

  • adc-input
  • atmega2560
  • bare-metal-c
  • pwm-control
Share this project:

Updates