Like most of the other teams, the main focus of our team was making things simple as possible. "Throwing" the ball turned out to be the most intuitive way to shoot a basketball, and the most simple throwing mechanism our team members could think of was a catapult. Having only a single motor involved in the actual shooting process maximized the accuracy.
Figure 1. System Overview
The catapult design is centered around a powerful throwing arm with precise control through a motor driver with feedback from an optical encoder. The arm is used to launch the ball into the hoop. A servo actuated loader feeds each ball individually into the ball holder on the arm. An ultrasonic rangefinder senses the longitudinal distance to the hoop, while the lateral distance from center is manually entered by the user. The entire system is mounted on a ball bearing turntable actuated by a stepper motor with a timing belt to allow accurate aiming at off-center targets.
Figure 2. Ultrasonic Range Finder
To find the distance from the launcher to the backboard we used the Maxbotix EZ3 ultrasonic rangefinder. The analog voltage output of the rangefinder is connected to an ADC channel on the PIC, and a lookup table is used to accurately determine the distance in inches to the backboard.
Figure 3. Turn Table
To allow us to aim at targets off of the center-line, all of the subsystems are mounted on top of a turntable. An axle fixed to the base projects through the center of the turntable and is fitted with a timing belt connected to a stepper motor (the SFE stepper). While the stepper is nominally rated at 1.8 degrees/step, the use of 8 part microstepping through the SFE stepper driver allows us to easily and reliably obtain accurate rotation. The stepper driver is interfaced to the PIC through two digital lines, one signaling direction of rotation and the other pulsed to step the motor. Power is provided from the 12V source.
Figure 4. Ball Loader
To fulfill the requirement to quickly load two balls, we attempted to design the simplest loader possible. It consists of two rails providing a ramp for the balls to roll down onto the throwing arm. The balls are restrained until needed by a servo mounted on one of the rails. As the servo is rotated it releases the first ball in line and holds the next one back. The servo is controlled using a standard servo PWM on a digital pin and is powered from the 5V source.
Figure 5. Throwing Arm
The throwing arm is the most complicated subsystem. The aluminum main arm is mounted to the shaft of the Banebots 64:1 planetary gearbox which is driven by an RS540 motor. The motor is controlled by a Pololu driver controlled by three digital pins from the PIC, and is powered from the 12V source. The gearbox comes standard with a 2”x3/8” shaft fitted with a 1/8” keyway. To fit in the encoder, however, the shaft had to be shortened and ground on a rotary grinder to 1/4" at the end. The encoder is a US Digital E2 fitted with an HEDS 9100-I00 optical module and a 512 tick/rev disk. To keep the disk centered in the encoder, the shaft passes through a 1/4" bearing mounted in a custom bearing block. The encoder interfaces with the PIC through the two QEI pins and is powered from the 5v source. This enables us to control the rotation and release point of the arm very precisely and also allows us to use a PID controller to handle balls of different sizes. The ball itself is held by three adjustable length standoffs at the end of the arm.
Figure 6. User Interface
The user interface enables the user to input the lateral distance from centerline and initiate the firing sequence. It uses a linear potentiometer connected to an ADC channel of the PIC to take the user’s input. The voltage is then converted to a distance which is displayed on an SFE serial-enabled LED display. Pressing the button pulls a digital pin high, signaling the PIC to initiate the firing sequence.
Alastair Firth / Mechanism Design and Implementation
Jun Woo Park / Motor Control
Jung Ho Won / Analysis and Calibration
Min Gyew Kim / User Interface and Sensor