2.4 - Implementation
Fabrication and Assembly
All CAD modelling and virtual assembly were completed in Onshape prior to any in-person fabrication, minimizing unnecessary physical assembly iterations and allowing design issues to be caught early in the process.
Utilizing configurations in CAD allows for fast changes to link lengths, as well as central hole spacing.
Stage 1: Plywood Prototype
The first iteration of the mechanism was fabricated from 6mm plywood. Linkage geometry was designed in Onshape and exported for cutting on the Trotec laser cutter in the TIW. The laser-cut plywood pieces were then assembled using M4 nuts and bolts to connect the linkages. This stage was used to validate the overall mechanism geometry and range of motion before committing to a final material.
Stage 2: Acrylic Prototype
Once the mechanism geometry was confirmed, the design was re-cut from 6mm acrylic to produce a more polished and visually appealing final build. Acrylic parts were again laser-cut on the Trotec and assembled using the same M4 nut and bolt hardware. Connector and interface components that could not be flat cut, such as joint hubs and mounting brackets, were designed in Onshape and 3D printed in PLA on a Bambu printer.
Figure 2: Updated Base Design
Stage 3: Split Mechanism Design
During the acrylic assembly phase, it became apparent that the motor did not produce sufficient torque to drive the full system as a single integrated mechanism. To address this, the design was split into two independent subsystems:
Motorized Subsystem: driven by the motor for automated demonstration.
Manual Subsystem: operated via a hand crank, giving the player direct force input and control over shot speed.
This split preserved the core design intent while ensuring reliable motor operation within its rated performance envelope.
Electronics and Circuitry
Below is a rough sketch of the circuitry for the system. A 12V battery is used to power everything, feeding power to the Arduino via the motor controller. The motor is connected to the motor controller to allow for directional control of the motor and the joystick acts as a button and thus only needs the analog signal from it.
Software Development
The goal of this setup is to make a DC motor spin exactly one rotation whenever you press a button on a joystick. Because standard motors don't have built-in sensors to know their exact physical position, the Arduino uses time-based control. It assumes that if it runs the motor at a specific power level for a specific amount of time (for our system, 0.7 seconds), the motor will complete exactly one 360-degree turn. The Arduino continuously watches the joystick button; the moment it gets pressed, it signals the motor controller to fire up the motor for that exact duration. To make this work, the joystick button is wired to a digital pin on the Arduino (let's say Pin 2). The Arduino's main loop acts as a constant watchman, checking the state of that pin over and over.
The Trigger (Watching the Joystick):
void loop() {
// Check if the joystick button (connected to Pin 2) is pressed
if (digitalRead(2) == LOW) {
rotateMotor(); // If pressed, start the sequence
}
}
The Sequence (Spinning the Motor):
void rotateMotor() {
// 1. Turn the motor ON at your chosen speed
analogWrite(enA, 255);
// 2. Freeze the Arduino for exactly the time it takes to do one turn
delay(700);
// 3. Immediately cut the power to stop the motor
analogWrite(enA, 0);
}
Bill of Materials
Part | Purpose | Quantity | Price | Source |
|---|---|---|---|---|
12 x 20 6mm Plywood | Mechanism links/Frame | 1 | $7.00 | TIW |
12 x 24 6mm Acryllic | Mechanism links/Frame | 1 | $18.00 | TIW |
M4 Bolts | Keep links and spacers together | 14 | $0 | TIW |
M4 Nuts | Hold bolts in place | 14 | $0 | TIW |
M4 Washers | Spaces links from bolts and nuts | 36 | $0 | TIW |
Wood Glue | Hold support linkages in place | 1 | $0 | TIW |
Ping Pong Ball | Used for projectile launched | 3 | $0 | From Home |
12V 100RPM Motor | Driving the mechanism | 1 | $0 | In Bins |
12V Battery | Powers the Motor | 1 | $20 | Amazon |
Arduino UNO | Used to Program Motor | 1 | $0 | From Home |
L298N Motor Controller | Used to Control the Motor Movements | 1 | $0 | From Home |
Small Analog Joystick | Activated the motorized subsystem | 1 | $0 | In Bins |
Table 1: Bill of Materials